Highly-opinionated (ex-bullshit-free) MTPROTO proxy for Telegram. If you use v1.0 or upgrade broke you proxy, please read the chapter Version 2
Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. package dc
  2. import (
  3. "context"
  4. "sync"
  5. "time"
  6. )
  7. type updater struct {
  8. wg sync.WaitGroup
  9. logger Logger
  10. period time.Duration
  11. }
  12. func (u *updater) Wait() {
  13. u.wg.Wait()
  14. }
  15. func (u *updater) run(ctx context.Context, callback func() error) {
  16. u.wg.Go(func() {
  17. ticker := time.NewTicker(u.period)
  18. defer func() {
  19. ticker.Stop()
  20. select {
  21. case <-ticker.C:
  22. default:
  23. }
  24. }()
  25. for {
  26. u.logger.Info("start update")
  27. if err := callback(); err != nil {
  28. u.logger.WarningError("cannot update", err)
  29. }
  30. u.logger.Info("updated")
  31. select {
  32. case <-ctx.Done():
  33. u.logger.Info("stop updating")
  34. return
  35. case <-ticker.C:
  36. }
  37. }
  38. })
  39. }