20 interface::RoomDomainFactory* factory,
21 std::shared_ptr<media::stream::interface::local::LocalStream> stream);
25 std::string
Id()
override;
27 std::shared_ptr<interface::RoomMember>
Publisher()
override;
28 std::vector<std::shared_ptr<interface::RoomSubscription>>
Subscriptions()
override;
30 std::optional<std::string>
Metadata()
override;
34 std::shared_ptr<media::stream::interface::local::LocalStream>
Stream()
override;
40 std::shared_ptr<media::stream::interface::local::LocalStream> stream)
override;
43 std::optional<WebRTCStats>
GetStats(
const std::string& selector)
override;
46 class CoreEventListenerAdapter :
public core::interface::Publication::EventListener {
50 void OnSubscribed(std::shared_ptr<core::interface::Subscription> subscription);
51 void OnUnsubscribed(std::shared_ptr<core::interface::Subscription> subscription);
52 void OnSubscriptionListChanged();
53 void OnMetadataUpdated(
const std::string& metadata);
56 void OnStateChanged();
57 void OnConnectionStateChanged(
const core::ConnectionState new_state);
63 class OriginEventListenerAdapter :
public core::interface::Publication::EventListener {
66 void OnMetadataUpdated(
const std::string& metadata)
override;
73 void OnSubscribed(std::shared_ptr<core::interface::Subscription> subscription);
74 void OnUnsubscribed(std::shared_ptr<core::interface::Subscription> subscription);
75 void OnSubscriptionListChanged();
76 void OnMetadataUpdated(
const std::string& metadata);
79 void OnStateChanged();
80 void OnConnectionStateChanged(
const core::ConnectionState new_state);
81 void SetStream(std::shared_ptr<media::stream::interface::local::LocalStream> stream);
83 PublicationState ConvertToPlatformPublicationState(core::interface::PublicationState state);
84 std::mutex stream_mtx_;
85 std::shared_ptr<media::stream::interface::local::LocalStream> stream_;
86 std::shared_ptr<core::interface::Publication> core_;
87 interface::RoomDomainFactory* factory_;
88 std::unique_ptr<CoreEventListenerAdapter> core_event_listener_adapter_;
90 std::mutex listener_mtx_;
91 interface::RoomPublication::EventListener* listener_;
92 std::unique_ptr<OriginEventListenerAdapter> origin_event_listener_adapter_;