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 };
30class Subscription :
public std::enable_shared_from_this<Subscription>,
31 public ConnectionStateChangeNotifiable {
43 class InternalListener {
45 virtual void OnChangePreferredEncoding(std::shared_ptr<Subscription> subscription) = 0;
49 virtual const std::optional<nlohmann::json> GetStatsReport(
50 std::shared_ptr<Subscription> subscription) = 0;
53 virtual ~Subscription() =
default;
62 virtual void AddInternalListener(InternalListener* listener) = 0;
63 virtual void RemoveInternalListener(InternalListener* listener) = 0;
67 virtual std::string
Id()
const = 0;
71 virtual std::shared_ptr<interface::Publication>
Publication()
const = 0;
73 virtual std::shared_ptr<interface::Member>
Subscriber()
const = 0;
75 virtual SubscriptionState
State() = 0;
80 virtual std::shared_ptr<RemoteStream>
Stream() = 0;
87 [[deprecated]]
virtual bool Cancel()
const = 0;
90 [[deprecated]]
virtual std::optional<model::WebRTCStats>
GetStats() = 0;
92 virtual void AddGetStatsCallback(Callback* callback) = 0;
93 virtual void RemoveGetStatsCallback() = 0;
95 virtual void SetStream(std::shared_ptr<RemoteStream> stream) = 0;
96 virtual void SetPreferredEncodingId(
const std::string&
id) = 0;
98 virtual void OnCanceled() = 0;
イベントリスナ
Definition subscription.hpp:34
virtual void OnCanceled()
このSubscriptionのSubscribeがキャンセルされた際に発火するイベント。
Definition subscription.hpp:38
virtual void OnConnectionStateChanged(const ConnectionState state)
このSubscriptionのメディア通信の状態が変化した時に発火するイベント
Definition subscription.hpp:40
Subscriptionのインターフェース
Definition subscription.hpp:31
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
イベントの購読を中止します。