service_pause.go 602 B

123456789101112131415161718192021222324252627282930313233
  1. package libbox
  2. import (
  3. "sync"
  4. "time"
  5. )
  6. type servicePauseFields struct {
  7. pauseAccess sync.Mutex
  8. pauseTimer *time.Timer
  9. }
  10. func (s *BoxService) Pause() {
  11. s.pauseAccess.Lock()
  12. defer s.pauseAccess.Unlock()
  13. if s.pauseTimer != nil {
  14. s.pauseTimer.Stop()
  15. }
  16. s.pauseTimer = time.AfterFunc(3*time.Second, s.ResetNetwork)
  17. }
  18. func (s *BoxService) Wake() {
  19. s.pauseAccess.Lock()
  20. defer s.pauseAccess.Unlock()
  21. if s.pauseTimer != nil {
  22. s.pauseTimer.Stop()
  23. }
  24. s.pauseTimer = time.AfterFunc(3*time.Minute, s.ResetNetwork)
  25. }
  26. func (s *BoxService) ResetNetwork() {
  27. s.instance.Router().ResetNetwork()
  28. }