26 void AddInternalListener(InternalListener* listener)
override;
27 void RemoveInternalListener(InternalListener* listener)
override;
30 std::string
Id()
const override;
31 std::shared_ptr<interface::Member>
Publisher()
const override;
32 std::vector<std::shared_ptr<interface::Subscription>>
Subscriptions()
const override;
33 model::PublicationType Type()
const override;
35 std::optional<std::string>
Metadata()
const override;
36 std::shared_ptr<interface::Publication>
Origin()
const override;
38 std::vector<model::Encoding>
Encodings()
const override;
39 interface::PublicationState
State()
override;
41 std::shared_ptr<interface::LocalStream>
Stream()
const override;
45 bool ReplaceStream(std::shared_ptr<interface::LocalStream> stream)
override;
50 std::optional<model::WebRTCStats>
GetStats(
const std::string& selector)
override;
52 void AddGetStatsCallback(
const std::string& remote_member_id, Callback* callback)
override;
53 void RemoveGetStatsCallback(
const std::string& remote_member_id)
override;
55 void SetCodecCapabilities(std::vector<model::Codec> codec_capabilities)
override;
56 void SetEncodings(std::vector<model::Encoding> encodings)
override;
57 void SetStream(std::shared_ptr<interface::LocalStream> stream)
override;
58 bool IsEnabling()
override;
59 void Dispose()
override;
61 void OnUnpublished()
override;
62 void OnSubscribed(std::shared_ptr<interface::Subscription> subscription)
override;
63 void OnUnsubscribed(std::shared_ptr<interface::Subscription> subscription)
override;
64 void OnMetadataUpdated(
const std::string& metadata)
override;
65 void OnEnabled()
override;
66 void OnDisabled()
override;
67 void OnConnectionStateChanged(
const ConnectionState new_state)
override;
71 std::weak_ptr<interface::Channel> channel_;
73 std::atomic<interface::PublicationState> state_;
74 std::vector<model::Codec> codec_capabilities_;
75 std::vector<model::Encoding> encodings_;
77 std::weak_ptr<interface::Member> publisher_;
78 std::shared_ptr<interface::LocalStream> stream_;
80 std::mutex listeners_mtx_;
81 std::mutex internal_listeners_mtx_;
82 std::unordered_set<interface::Publication::EventListener*> listeners_;
83 std::unordered_set<interface::Publication::InternalListener*> internal_listeners_;
84 std::atomic<bool> metadata_updated_;
86 std::mutex get_stats_callback_mutex_;
87 std::unordered_map<std::string, Callback*> get_stats_callbacks_;