21 Subscription(std::shared_ptr<interface::Channel> channel,
23 model::ContentType content_type);
29 void AddInternalListener(interface::Subscription::InternalListener* listener)
override;
30 void RemoveInternalListener(interface::Subscription::InternalListener* listener)
override;
33 std::string
Id()
const override;
35 std::shared_ptr<interface::Publication>
Publication()
const override;
36 std::shared_ptr<interface::Member>
Subscriber()
const override;
37 interface::SubscriptionState
State()
override;
39 std::shared_ptr<interface::RemoteStream>
Stream()
override;
44 std::optional<model::WebRTCStats>
GetStats()
override;
46 void AddGetStatsCallback(Callback* callback)
override;
47 void RemoveGetStatsCallback()
override;
49 void SetStream(std::shared_ptr<interface::RemoteStream> stream)
override;
50 void SetPreferredEncodingId(
const std::string&
id)
override;
52 void OnCanceled()
override;
53 void OnConnectionStateChanged(
const core::ConnectionState new_state)
override;
56 std::weak_ptr<interface::Channel> channel_;
58 model::ContentType content_type_;
59 std::atomic<interface::SubscriptionState> state_;
60 std::weak_ptr<interface::Member> subscriber_;
61 std::mutex stream_mtx_;
62 std::shared_ptr<interface::RemoteStream> stream_;
63 std::optional<std::string> preferred_encoding_id_;
65 std::mutex listeners_mtx_;
66 std::unordered_set<interface::Subscription::EventListener*> listeners_;
67 std::mutex internal_listeners_mtx_;
68 std::unordered_set<interface::Subscription::InternalListener*> internal_listeners_;
69 std::mutex get_stats_callback_mutex_;
70 Callback* get_stats_callback_;
74 friend class CoreSubscriptionTest;