level.go 401 B

12345678910111213141516171819202122232425262728
  1. package chansync
  2. import (
  3. "sync"
  4. "github.com/anacrolix/chansync/events"
  5. )
  6. type LevelTrigger struct {
  7. ch chan struct{}
  8. initOnce sync.Once
  9. }
  10. func (me *LevelTrigger) Signal() events.Signal {
  11. me.init()
  12. return me.ch
  13. }
  14. func (me *LevelTrigger) Active() events.Active {
  15. me.init()
  16. return me.ch
  17. }
  18. func (me *LevelTrigger) init() {
  19. me.initOnce.Do(func() {
  20. me.ch = make(chan struct{})
  21. })
  22. }