SkyWay Linux SDK
読み取り中…
検索中…
一致する文字列を見つけられません
subscription.hpp
1//
2// © NTT DOCOMO BUSINESS, Inc. All Rights Reserved.
3//
4
5#ifndef SKYWAY_CORE_INTERFACE_SUBSCRIPTION_HPP_
6#define SKYWAY_CORE_INTERFACE_SUBSCRIPTION_HPP_
7
8#include "skyway/core/connection_state.hpp"
9#include "skyway/core/interface/member.hpp"
10#include "skyway/core/interface/remote_stream.hpp"
11#include "skyway/model/domain.hpp"
12
13namespace skyway {
14namespace core {
15namespace interface {
16
17class Publication;
18
20enum class SubscriptionState { kEnabled, kDisabled, kCanceled };
21
23// `std::enable_shared_from_this<T>` is supposed to be inherited by concrete classes.
24// (e.g. skyway/core/subscription.hpp)
25// however if so, compile failed on the Android SDK that includes interfaces.
26class Subscription : public std::enable_shared_from_this<Subscription>,
27 public ConnectionStateChangeNotifiable {
28public:
31 public:
34 [[deprecated]] virtual void OnCanceled() {}
36 virtual void OnConnectionStateChanged(const ConnectionState state) {}
37
38 virtual void OnStreamAttached(std::shared_ptr<RemoteStream> stream) {}
39 };
41 class InternalListener {
42 public:
43 virtual void OnChangePreferredEncoding(std::shared_ptr<Subscription> subscription) = 0;
44 };
45 class Callback {
46 public:
47 virtual const std::optional<nlohmann::json> GetStatsReport(
48 std::shared_ptr<Subscription> subscription) = 0;
49 };
51 virtual ~Subscription() = default;
52
55 virtual void AddEventListener(EventListener* listener) = 0;
58 virtual void RemoveEventListener(EventListener* listener) = 0;
60 virtual void AddInternalListener(InternalListener* listener) = 0;
61 virtual void RemoveInternalListener(InternalListener* listener) = 0;
63
65 virtual std::string Id() const = 0;
67 virtual model::ContentType ContentType() const = 0;
69 virtual std::shared_ptr<interface::Publication> Publication() const = 0;
71 virtual std::shared_ptr<interface::Member> Subscriber() const = 0;
73 virtual SubscriptionState State() = 0;
78 virtual std::shared_ptr<RemoteStream> Stream() = 0;
80 virtual std::optional<std::string> PreferredEncodingId() const = 0;
82 virtual bool ChangePreferredEncoding(const std::string& id) = 0;
85 [[deprecated]] virtual bool Cancel() const = 0;
88 [[deprecated]] virtual std::optional<model::WebRTCStats> GetStats() = 0;
90 virtual void AddGetStatsCallback(Callback* callback) = 0;
91 virtual void RemoveGetStatsCallback() = 0;
92
93 virtual void SetStream(std::shared_ptr<RemoteStream> stream) = 0;
94 virtual void SetPreferredEncodingId(const std::string& id) = 0;
95
96 virtual void OnCanceled() = 0;
98};
99
100} // namespace interface
101} // namespace core
102} // namespace skyway
103
104#endif /* SKYWAY_CORE_INTERFACE_SUBSCRIPTION_HPP_ */
イベントリスナ
Definition subscription.hpp:30
virtual void OnCanceled()
このSubscriptionのSubscribeがキャンセルされた際に発火するイベント。
Definition subscription.hpp:34
virtual void OnConnectionStateChanged(const ConnectionState state)
このSubscriptionのメディア通信の状態が変化した時に発火するイベント
Definition subscription.hpp:36
Subscriptionのインターフェース
Definition subscription.hpp:27
virtual std::shared_ptr< interface::Publication > Publication() const =0
このSubscriptionに紐づくPublicationを取得します。
virtual bool ChangePreferredEncoding(const std::string &id)=0
受信するエンコード設定を切り替えます。
virtual model::ContentType ContentType() const =0
ContentType(VideoかAudioかDataか)を取得します。
virtual std::optional< model::WebRTCStats > GetStats()=0
統計情報を取得します。
virtual std::string Id() const =0
Idを取得します。
virtual std::shared_ptr< RemoteStream > Stream()=0
Publisherが持つStreamを取得します。
virtual void AddEventListener(EventListener *listener)=0
イベントを購読します。
virtual SubscriptionState State()=0
State(公開状態がEnableかDisabelかCancelか)を取得します。
virtual bool Cancel() const =0
Subscribeを中止します。
virtual std::optional< std::string > PreferredEncodingId() const =0
このSubscriptionの優先エンコーディングIDを取得します。
virtual std::shared_ptr< interface::Member > Subscriber() const =0
このSubscriptionをSubscribeしているMemberを取得します。
virtual void RemoveEventListener(EventListener *listener)=0
イベントの購読を中止します。