manager_rpc.go 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. package subscriptionmanager
  2. import "github.com/v2fly/v2ray-core/v5/app/subscription"
  3. func (s *SubscriptionManagerImpl) AddTrackedSubscriptionFromImportSource(importSource *subscription.ImportSource) error {
  4. s.Lock()
  5. defer s.Unlock()
  6. return s.addTrackedSubscriptionFromImportSource(importSource)
  7. }
  8. func (s *SubscriptionManagerImpl) RemoveTrackedSubscription(name string) error {
  9. s.Lock()
  10. defer s.Unlock()
  11. return s.removeTrackedSubscription(name)
  12. }
  13. func (s *SubscriptionManagerImpl) ListTrackedSubscriptions() []string {
  14. s.Lock()
  15. defer s.Unlock()
  16. var names []string
  17. for name := range s.trackedSubscriptions {
  18. names = append(names, name)
  19. }
  20. return names
  21. }
  22. func (s *SubscriptionManagerImpl) GetTrackedSubscriptionStatus(name string) (*subscription.TrackedSubscriptionStatus, error) {
  23. s.Lock()
  24. defer s.Unlock()
  25. if trackedSubscriptionItem, ok := s.trackedSubscriptions[name]; ok {
  26. result := &subscription.TrackedSubscriptionStatus{}
  27. if err := trackedSubscriptionItem.fillStatus(result); err != nil {
  28. return nil, newError("failed to fill status").Base(err)
  29. }
  30. result.ImportSource = trackedSubscriptionItem.importSource
  31. return result, nil
  32. } else {
  33. return nil, newError("unable to locate")
  34. }
  35. }