SkyWay Linux SDK
読み取り中…
検索中…
一致する文字列を見つけられません
room_subscription.hpp
1//
2// © NTT DOCOMO BUSINESS, Inc. All Rights Reserved.
3//
4
5#ifndef SKYWAY_ROOM_ROOM_SUBSCRIPTION_HPP
6#define SKYWAY_ROOM_ROOM_SUBSCRIPTION_HPP
7
8#include <mutex>
9
10#include <skyway/core/interface/subscription.hpp>
11
12#include "skyway/room/interface/room_domain_factory.hpp"
13#include "skyway/room/interface/room_subscription.hpp"
14
15namespace skyway {
16namespace room {
17
21public:
22 RoomSubscription(std::shared_ptr<core::interface::Subscription> core,
23 interface::RoomDomainFactory* factory);
25 std::string Id() override;
26 model::ContentType ContentType() override;
27 std::shared_ptr<interface::RoomPublication> Publication() override;
28 std::shared_ptr<interface::RoomMember> Subscriber() override;
29 core::interface::SubscriptionState State() override;
30 std::shared_ptr<core::interface::RemoteStream> Stream() override;
31 std::optional<std::string> PreferredEncodingId() override;
32
35 bool ChangePreferredEncoding(const std::string& id) override;
36 bool Cancel() override;
37 std::optional<model::WebRTCStats> GetStats() override;
38
39private:
40 void SetStream();
41
42 // core::interface::Subscription::EventListener
43 void OnCanceled() override;
44 // void OnEnabled() override;
45 // void OnDisabled() override;
46 void OnConnectionStateChanged(const core::ConnectionState state) override;
47
48 void OnStreamAttached(std::shared_ptr<core::interface::RemoteStream> stream) override;
49
50 std::mutex stream_mtx_;
51 std::shared_ptr<core::interface::RemoteStream> stream_;
52
53 std::shared_ptr<core::interface::Subscription> core_;
54 interface::RoomDomainFactory* factory_;
55 std::mutex listener_mtx_;
57};
58
59} // namespace room
60} // namespace skyway
61
62#endif /* SKYWAY_ROOM_ROOM_SUBSCRIPTION_HPP */
イベントリスナ
Definition subscription.hpp:30
RoomSubscriptionの操作を行うクラス
Definition room_subscription.hpp:20
std::shared_ptr< interface::RoomMember > Subscriber() override
このSubscriptionを購読しているMemberを取得します。
void AddEventListener(interface::RoomSubscription::EventListener *listener) override
イベントを購読します。
void RemoveEventListener(interface::RoomSubscription::EventListener *listener) override
イベントの購読を中止します。
std::string Id() override
Idを取得します。
model::ContentType ContentType() override
ContentType(VideoかAudioかDataか)を取得します。
std::shared_ptr< core::interface::RemoteStream > Stream() override
Publisherが持つStreamを取得します。
std::optional< model::WebRTCStats > GetStats() override
統計情報を取得します。
bool ChangePreferredEncoding(const std::string &id) override
受信するエンコード設定を切り替えます。
std::shared_ptr< interface::RoomPublication > Publication() override
このSubscriptionに紐づくPublicationを取得します。
bool Cancel() override
Subscribeを中止します。
std::optional< std::string > PreferredEncodingId() override
このSubscriptionの優先エンコーディングIDを取得します。
core::interface::SubscriptionState State() override
State(公開状態がEnableかDisabelかCancelか)を取得します。
イベントリスナ
Definition room_subscription.hpp:22
RoomのSubscriptionを操作するインタフェース
Definition room_subscription.hpp:19