deprecated.go 1.1 KB

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