mirror of
https://github.com/ScuroNeko/mtg.git
synced 2026-09-01 01:34:02 +03:00
FILE / ScuroNeko/mtg
mtglib/internal/doppel/clock.go
Исходный файл и его история в репозитории.
36 lines
463 B
Go
36 lines
463 B
Go
package doppel
|
|
|
|
import (
|
|
"context"
|
|
"time"
|
|
)
|
|
|
|
type Clock struct {
|
|
stats *Stats
|
|
tick chan struct{}
|
|
}
|
|
|
|
func (c Clock) Start(ctx context.Context) {
|
|
tickTock := time.NewTimer(c.stats.Delay())
|
|
defer func() {
|
|
tickTock.Stop()
|
|
select {
|
|
case <-tickTock.C:
|
|
default:
|
|
}
|
|
}()
|
|
|
|
for {
|
|
select {
|
|
case <-ctx.Done():
|
|
return
|
|
case <-tickTock.C:
|
|
select {
|
|
case <-ctx.Done():
|
|
case c.tick <- struct{}{}:
|
|
}
|
|
tickTock.Reset(c.stats.Delay())
|
|
}
|
|
}
|
|
}
|