9#ifndef SKYWAY_CORE_INTERFACE_SUBSCRIPTION_HPP_
10#define SKYWAY_CORE_INTERFACE_SUBSCRIPTION_HPP_
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"
24enum class SubscriptionState { kEnabled, kDisabled, kCanceled };
45 class InternalListener {
47 virtual void OnChangePreferredEncoding(
Subscription* subscription) = 0;
51 virtual const boost::optional<nlohmann::json> GetStatsReport(
55 virtual ~Subscription() =
default;
64 virtual void AddInternalListener(InternalListener* listener) = 0;
65 virtual void RemoveInternalListener(InternalListener* listener) = 0;
69 virtual std::string
Id()
const = 0;
77 virtual SubscriptionState
State() = 0;
82 virtual std::shared_ptr<RemoteStream>
Stream() = 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;
101 virtual void SetStream(std::shared_ptr<RemoteStream> stream) = 0;
102 virtual void SetPreferredEncodingId(
const std::string&
id) = 0;
104 virtual void OnCanceled() = 0;
105 virtual void OnEnabled() = 0;
106 virtual void OnDisabled() = 0;
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を取得します。