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_INTERFACE_SUBSCRIPTION_HPP_
10#define SKYWAY_CORE_INTERFACE_SUBSCRIPTION_HPP_
11
12#include "skyway/core/connection_state.hpp"
13#include "skyway/core/interface/member.hpp"
14#include "skyway/core/interface/remote_stream.hpp"
15#include "skyway/model/domain.hpp"
16
17namespace skyway {
18namespace core {
19namespace interface {
20
21class Publication;
22
24enum class SubscriptionState { kEnabled, kDisabled, kCanceled };
25
27class Subscription : public ConnectionStateChangeNotifiable {
28public:
31 public:
34 [[deprecated]] virtual void OnCanceled() {}
37 virtual void OnEnabled() {}
40 virtual void OnDisabled() {}
42 virtual void OnConnectionStateChanged(const ConnectionState state) {}
43 };
45 class InternalListener {
46 public:
47 virtual void OnChangePreferredEncoding(Subscription* subscription) = 0;
48 };
49 class Callback {
50 public:
51 virtual const boost::optional<nlohmann::json> GetStatsReport(
52 Subscription* subscription) = 0;
53 };
55 virtual ~Subscription() = default;
56
59 virtual void AddEventListener(EventListener* listener) = 0;
62 virtual void RemoveEventListener(EventListener* listener) = 0;
64 virtual void AddInternalListener(InternalListener* listener) = 0;
65 virtual void RemoveInternalListener(InternalListener* listener) = 0;
67
69 virtual std::string Id() const = 0;
71 virtual model::ContentType ContentType() const = 0;
73 virtual Publication* Publication() const = 0;
75 virtual Member* Subscriber() const = 0;
77 virtual SubscriptionState State() = 0;
82 virtual std::shared_ptr<RemoteStream> Stream() = 0;
84 virtual boost::optional<std::string> PreferredEncodingId() const = 0;
86 virtual void ChangePreferredEncoding(const std::string& id) = 0;
89 [[deprecated]] virtual bool Cancel() const = 0;
92 [[deprecated]] virtual boost::optional<model::WebRTCStats> GetStats() = 0;
95 virtual bool Enable() const = 0;
97 virtual bool Disable() const = 0;
98 virtual void AddGetStatsCallback(Callback* callback) = 0;
99 virtual void RemoveGetStatsCallback() = 0;
100
101 virtual void SetStream(std::shared_ptr<RemoteStream> stream) = 0;
102 virtual void SetPreferredEncodingId(const std::string& id) = 0;
103
104 virtual void OnCanceled() = 0;
105 virtual void OnEnabled() = 0;
106 virtual void OnDisabled() = 0;
108};
109
110} // namespace interface
111} // namespace core
112} // namespace skyway
113
114#endif /* SKYWAY_CORE_INTERFACE_SUBSCRIPTION_HPP_ */
Subscriptionの実装クラス
Definition subscription.hpp:22
LocalPersonおよびRemoteMemberの基底クラス
Definition member.hpp:32
Publicationのインターフェース
Definition publication.hpp:29
イベントリスナ
Definition subscription.hpp:30
virtual void OnCanceled()
このSubscriptionのSubscribeがキャンセルされた際に発火するイベント。
Definition subscription.hpp:34
virtual void OnEnabled()
このSubscriptionの通信が有効になった時に発火するイベント。 Publication.Enableが実行された時に発火します。
Definition subscription.hpp:37
virtual void OnConnectionStateChanged(const ConnectionState state)
このSubscriptionのメディア通信の状態が変化した時に発火するイベント
Definition subscription.hpp:42
virtual void OnDisabled()
このSubscriptionの通信が無効になった時に発火するイベント。 Publication.Disableが実行された時に発火します。
Definition subscription.hpp:40
Subscriptionのインターフェース
Definition subscription.hpp:27
virtual model::ContentType ContentType() const =0
ContentType(VideoかAudioかDataか)を取得します。
virtual std::string Id() const =0
Idを取得します。
virtual std::shared_ptr< RemoteStream > Stream()=0
Publisherが持つStreamを取得します。
virtual boost::optional< model::WebRTCStats > GetStats()=0
統計情報を取得します。
virtual Member * Subscriber() const =0
このSubscriptionをSubscribeしているMemberを取得します。
virtual void AddEventListener(EventListener *listener)=0
イベントを購読します。
virtual SubscriptionState State()=0
State(公開状態がEnableかDisabelかCancelか)を取得します。
virtual bool Cancel() const =0
Subscribeを中止します。
virtual void ChangePreferredEncoding(const std::string &id)=0
受信するエンコード設定を切り替えます。
virtual void RemoveEventListener(EventListener *listener)=0
イベントの購読を中止します。
virtual Publication * Publication() const =0
このSubscriptionに紐づくPublicationを取得します。
virtual boost::optional< std::string > PreferredEncodingId() const =0
このSubscriptionの優先エンコーディングIDを取得します。