27 void AddInternalListener(interface::Subscription::InternalListener* listener)
override;
28 void RemoveInternalListener(interface::Subscription::InternalListener* listener)
override;
31 std::string
Id()
const override;
33 std::shared_ptr<interface::Publication>
Publication()
const override;
34 std::shared_ptr<interface::Member>
Subscriber()
const override;
35 interface::SubscriptionState
State()
override;
37 std::shared_ptr<interface::RemoteStream>
Stream()
override;
42 std::optional<model::WebRTCStats>
GetStats()
override;
44 void AddGetStatsCallback(Callback* callback)
override;
45 void RemoveGetStatsCallback()
override;
47 void SetStream(std::shared_ptr<interface::RemoteStream> stream)
override;
48 void SetPreferredEncodingId(
const std::string&
id)
override;
50 void OnCanceled()
override;
51 void OnConnectionStateChanged(
const core::ConnectionState new_state)
override;
54 std::weak_ptr<interface::Channel> channel_;
56 model::ContentType content_type_;
57 std::atomic<interface::SubscriptionState> state_;
58 std::weak_ptr<interface::Member> subscriber_;
59 std::mutex stream_mtx_;
60 std::shared_ptr<interface::RemoteStream> stream_;
61 std::optional<std::string> preferred_encoding_id_;
63 std::mutex listeners_mtx_;
64 std::unordered_set<interface::Subscription::EventListener*> listeners_;
65 std::mutex internal_listeners_mtx_;
66 std::unordered_set<interface::Subscription::InternalListener*> internal_listeners_;
67 std::mutex get_stats_callback_mutex_;
68 Callback* get_stats_callback_;
72 friend class CoreSubscriptionTest;