FILE / ScuroNeko/mtg

mtglib/internal/doppel/clock.go

Исходный файл и его история в репозитории.
FILE 62cba24071b2cab359902ba07eee6d435c54e81e
Files
mtg/mtglib/internal/doppel/clock.go
T
2026-03-12 19:07:10 +01:00

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())
}
}
}