deprecated.go 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. package libbox
  2. import (
  3. "sync"
  4. "github.com/sagernet/sing-box/experimental/deprecated"
  5. "github.com/sagernet/sing/common"
  6. )
  7. var _ deprecated.Manager = (*deprecatedManager)(nil)
  8. type deprecatedManager struct {
  9. access sync.Mutex
  10. notes []deprecated.Note
  11. }
  12. func (m *deprecatedManager) ReportDeprecated(feature deprecated.Note) {
  13. m.access.Lock()
  14. defer m.access.Unlock()
  15. m.notes = common.Uniq(append(m.notes, feature))
  16. }
  17. func (m *deprecatedManager) Get() []deprecated.Note {
  18. m.access.Lock()
  19. defer m.access.Unlock()
  20. notes := m.notes
  21. m.notes = nil
  22. return notes
  23. }
  24. var _ = deprecated.Note(DeprecatedNote{})
  25. type DeprecatedNote struct {
  26. Name string
  27. Description string
  28. DeprecatedVersion string
  29. ScheduledVersion string
  30. EnvName string
  31. MigrationLink string
  32. }
  33. func (n DeprecatedNote) Impending() bool {
  34. return deprecated.Note(n).Impending()
  35. }
  36. func (n DeprecatedNote) Message() string {
  37. return deprecated.Note(n).Message()
  38. }
  39. func (n DeprecatedNote) MessageWithLink() string {
  40. return deprecated.Note(n).MessageWithLink()
  41. }
  42. type DeprecatedNoteIterator interface {
  43. HasNext() bool
  44. Next() *DeprecatedNote
  45. }