service_pause.go 734 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  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(time.Minute, s.pause)
  17. }
  18. func (s *BoxService) pause() {
  19. s.pauseAccess.Lock()
  20. defer s.pauseAccess.Unlock()
  21. s.pauseManager.DevicePause()
  22. _ = s.instance.Router().ResetNetwork()
  23. s.pauseTimer = nil
  24. }
  25. func (s *BoxService) Wake() {
  26. s.pauseAccess.Lock()
  27. defer s.pauseAccess.Unlock()
  28. if s.pauseTimer != nil {
  29. s.pauseTimer.Stop()
  30. s.pauseTimer = nil
  31. return
  32. }
  33. s.pauseManager.DeviceWake()
  34. _ = s.instance.Router().ResetNetwork()
  35. }