manager_rpc.go 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  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, true)
  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) UpdateTrackedSubscription(name string) error {
  14. s.Lock()
  15. defer s.Unlock()
  16. return s.updateSubscription(name)
  17. }
  18. func (s *SubscriptionManagerImpl) ListTrackedSubscriptions() []string {
  19. s.Lock()
  20. defer s.Unlock()
  21. var names []string
  22. for name := range s.trackedSubscriptions {
  23. names = append(names, name)
  24. }
  25. return names
  26. }
  27. func (s *SubscriptionManagerImpl) GetTrackedSubscriptionStatus(name string) (*subscription.TrackedSubscriptionStatus, error) {
  28. s.Lock()
  29. defer s.Unlock()
  30. if trackedSubscriptionItem, ok := s.trackedSubscriptions[name]; ok {
  31. result := &subscription.TrackedSubscriptionStatus{}
  32. if err := trackedSubscriptionItem.fillStatus(result); err != nil {
  33. return nil, newError("failed to fill status").Base(err)
  34. }
  35. result.ImportSource = trackedSubscriptionItem.importSource
  36. return result, nil
  37. } else {
  38. return nil, newError("unable to locate")
  39. }
  40. }