FILE / ScuroNeko/mtg

mtglib/internal/doppel/clock.go

Исходный файл и его история в репозитории.
FILE 1182b9ef6fc2f9f2548d23e6054bbc8e0928e3cc
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())
}
}
}