SkyWay for Linux
読み取り中…
検索中…
一致する文字列を見つけられません
subscription.hpp
1//
2// subscription.hpp
3// skyway
4//
5// Created by sandabu on 2022/01/13.
6// Copyright © 2022 NTT Communications. All rights reserved.
7//
8
9#ifndef SKYWAY_CORE_SUBSCRIPTION_HPP_
10#define SKYWAY_CORE_SUBSCRIPTION_HPP_
11
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"
17
18namespace skyway {
19namespace core {
20
23public:
25 Subscription(interface::Channel* channel, const model::Subscription& initial_dto);
27
31 void AddInternalListener(interface::Subscription::InternalListener* listener) override;
32 void RemoveInternalListener(interface::Subscription::InternalListener* listener) override;
34
35 std::string Id() const override;
36 model::ContentType ContentType() const override;
38 interface::Member* Subscriber() const override;
39 interface::SubscriptionState State() override;
40
41 std::shared_ptr<interface::RemoteStream> Stream() override;
42 boost::optional<std::string> PreferredEncodingId() const override;
43
44 void ChangePreferredEncoding(const std::string& id) override;
45 bool Cancel() const 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;
52
53 void SetStream(std::shared_ptr<interface::RemoteStream> stream) override;
54 void SetPreferredEncodingId(const std::string& id) override;
55
56 void OnCanceled() override;
57 void OnEnabled() override;
58 void OnDisabled() override;
59 void OnConnectionStateChanged(const core::ConnectionState new_state) override;
61private:
62 interface::Channel* channel_;
63 model::Subscription initial_dto_;
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_;
68
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_;
75
76public:
78 friend class CoreSubscriptionTest;
80};
81
82} // namespace core
83} // namespace skyway
84
85#endif /* SKYWAY_CORE_SUBSCRIPTION_HPP_ */
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