9#ifndef SKYWAY_CORE_SUBSCRIPTION_HPP_
10#define SKYWAY_CORE_SUBSCRIPTION_HPP_
12#include "skyway/core/interface/channel.hpp"
13#include "skyway/core/interface/member.hpp"
14#include "skyway/core/interface/publication.hpp"
15#include "skyway/core/interface/subscription.hpp"
16#include "skyway/model/domain.hpp"
31 void AddInternalListener(interface::Subscription::InternalListener* listener)
override;
32 void RemoveInternalListener(interface::Subscription::InternalListener* listener)
override;
35 std::string
Id()
const override;
39 interface::SubscriptionState
State()
override;
41 std::shared_ptr<interface::RemoteStream>
Stream()
override;
46 boost::optional<model::WebRTCStats>
GetStats()
override;
48 bool Enable()
const override;
49 bool Disable()
const override;
50 void AddGetStatsCallback(Callback* callback)
override;
51 void RemoveGetStatsCallback()
override;
53 void SetStream(std::shared_ptr<interface::RemoteStream> stream)
override;
54 void SetPreferredEncodingId(
const std::string&
id)
override;
56 void OnCanceled()
override;
57 void OnEnabled()
override;
58 void OnDisabled()
override;
59 void OnConnectionStateChanged(
const core::ConnectionState new_state)
override;
64 std::atomic<interface::SubscriptionState> state_;
65 std::mutex stream_mtx_;
66 std::shared_ptr<interface::RemoteStream> stream_;
67 boost::optional<std::string> preferred_encoding_id_;
69 std::mutex listeners_mtx_;
70 std::unordered_set<interface::Subscription::EventListener*> listeners_;
71 std::mutex internal_listeners_mtx_;
72 std::unordered_set<interface::Subscription::InternalListener*> internal_listeners_;
73 std::mutex get_stats_callback_mutex_;
74 Callback* get_stats_callback_;
78 friend class CoreSubscriptionTest;
Subscriptionの実装クラス
Definition subscription.hpp:22
interface::SubscriptionState State() override
State(公開状態がEnableかDisabelかCancelか)を取得します。
std::shared_ptr< interface::RemoteStream > Stream() override
Publisherが持つStreamを取得します。
boost::optional< std::string > PreferredEncodingId() const override
このSubscriptionの優先エンコーディングIDを取得します。
interface::Publication * Publication() const override
このSubscriptionに紐づくPublicationを取得します。
void ChangePreferredEncoding(const std::string &id) override
受信するエンコード設定を切り替えます。
void AddEventListener(interface::Subscription::EventListener *listener) override
イベントを購読します。
interface::Member * Subscriber() const override
このSubscriptionをSubscribeしているMemberを取得します。
void RemoveEventListener(interface::Subscription::EventListener *listener) override
イベントの購読を中止します。
model::ContentType ContentType() const override
ContentType(VideoかAudioかDataか)を取得します。
std::string Id() const override
Idを取得します。
bool Cancel() const override
Subscribeを中止します。
boost::optional< model::WebRTCStats > GetStats() override
統計情報を取得します。
Channelのインターフェース
Definition channel.hpp:28
LocalPersonおよびRemoteMemberの基底クラス
Definition member.hpp:32
Publicationのインターフェース
Definition publication.hpp:29
イベントリスナ
Definition subscription.hpp:30
Subscriptionのインターフェース
Definition subscription.hpp:27
Subscription情報
Definition domain.hpp:133