FILE / ScuroNeko/mtg

mtglib/internal/doppel/clock.go

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