SkyWay for Linux
読み取り中…
検索中…
一致する文字列を見つけられません
room_publication.hpp
1//
2// room_publication.hpp
3// skyway
4//
5// Created by Naoto Takahashi on 2023/11/21.
6// Copyright © 2023 NTT Communications. All rights reserved.
7//
8
9#ifndef SKYWAY_ROOM_INTERFACE_ROOM_PUBLICATION_HPP
10#define SKYWAY_ROOM_INTERFACE_ROOM_PUBLICATION_HPP
11
12#include <skyway/core/interface/publication.hpp>
13
14#include "skyway/room/interface/room_member.hpp"
15#include "skyway/room/interface/room_subscription.hpp"
16
17namespace skyway {
18namespace room {
19namespace interface {
20
23public:
26 public:
27 virtual ~EventListener() = default;
30 [[deprecated]] virtual void OnUnpublished() {}
31
34 virtual void OnSubscribed(std::unique_ptr<RoomSubscription> subscription) {}
35
38 virtual void OnUnsubscribed(std::unique_ptr<RoomSubscription> subscription) {}
39
41 virtual void OnSubscriptionListChanged() {}
42
45 virtual void OnMetadataUpdated(const std::string& metadata) {}
46
48 virtual void OnEnabled() {}
49
51 virtual void OnDisabled() {}
52
54 virtual void OnStateChanged() {}
55
58 virtual void OnConnectionStateChanged(const core::ConnectionState new_state) {}
59 };
60 virtual ~RoomPublication() = default;
62 virtual std::string Id() = 0;
64 virtual std::unique_ptr<RoomMember> Publisher() = 0;
66 virtual std::vector<std::unique_ptr<RoomSubscription>> Subscriptions() = 0;
68 virtual model::ContentType ContentType() = 0;
70 virtual boost::optional<std::string> Metadata() = 0;
72 virtual std::vector<model::Codec> CodecCapabilities() = 0;
74 virtual std::vector<model::Encoding> Encodings() = 0;
76 virtual core::interface::PublicationState State() = 0;
78 virtual std::shared_ptr<core::interface::LocalStream> Stream() = 0;
80 virtual void AddEventListener(EventListener* listener) = 0;
82 virtual void RemoveEventListener(EventListener* listener) = 0;
84 virtual bool UpdateMetadata(const std::string& metadata) = 0;
86 virtual void UpdateEncodings(std::vector<model::Encoding> encodings) = 0;
88 virtual bool ReplaceStream(std::shared_ptr<core::interface::LocalStream> stream) = 0;
93 [[deprecated]] virtual boost::optional<model::WebRTCStats> GetStats(
94 const std::string& selector) = 0;
97 [[deprecated]] virtual bool Cancel() = 0;
99 virtual bool Enable() = 0;
101 virtual bool Disable() = 0;
102};
103
104} // namespace interface
105} // namespace room
106} // namespace skyway
107
108#endif /* SKYWAY_ROOM_INTERFACE_ROOM_PUBLICATION_HPP */
イベントリスナ
Definition room_publication.hpp:25
virtual void OnConnectionStateChanged(const core::ConnectionState new_state)
Publicationの接続状態が変化した後にコールされるイベント
Definition room_publication.hpp:58
virtual void OnUnsubscribed(std::unique_ptr< RoomSubscription > subscription)
このPublicationがUnsubscribeされた後に発生するイベント
Definition room_publication.hpp:38
virtual void OnSubscribed(std::unique_ptr< RoomSubscription > subscription)
このPublicationがSubscribeされた後に発生するイベント
Definition room_publication.hpp:34
virtual void OnEnabled()
Publicationが有効状態に変化した後にコールされるイベント
Definition room_publication.hpp:48
virtual void OnSubscriptionListChanged()
このPublicationに紐づくSubscriptionの数が変化した後に発生するイベント
Definition room_publication.hpp:41
virtual void OnMetadataUpdated(const std::string &metadata)
Metadataが更新された後に発生するイベント
Definition room_publication.hpp:45
virtual void OnDisabled()
Publicationが無効状態に変化した後にコールされるイベント
Definition room_publication.hpp:51
virtual void OnUnpublished()
Unpublishされた後に発生するイベント
Definition room_publication.hpp:30
virtual void OnStateChanged()
Publicationの状態(Enabled, Disabled, Canceled)が変化した後にコールされるイベント
Definition room_publication.hpp:54
RoomのPublicationを操作するインタフェース
Definition room_publication.hpp:22
virtual boost::optional< model::WebRTCStats > GetStats(const std::string &selector)=0
統計情報を取得します。
virtual std::shared_ptr< core::interface::LocalStream > Stream()=0
Publisherが持つStreamを取得します。
virtual std::unique_ptr< RoomMember > Publisher()=0
このPublicationを公開しているMemberを取得します。
virtual void UpdateEncodings(std::vector< model::Encoding > encodings)=0
エンコーディング設定を更新します。
virtual core::interface::PublicationState State()=0
State(公開状態がEnableかDisabelかCancelか)を取得します。
virtual std::vector< model::Encoding > Encodings()=0
このPublicationのエンコーディング設定の一覧を取得します。
virtual boost::optional< std::string > Metadata()=0
Metadataを取得します。
virtual void RemoveEventListener(EventListener *listener)=0
イベントの購読を中止します。
virtual bool Enable()=0
Publicationの公開を開始します。disableによって停止していた場合は再開します。
virtual bool ReplaceStream(std::shared_ptr< core::interface::LocalStream > stream)=0
公開しているStreamを変更します。
virtual std::string Id()=0
Idを取得します。
virtual bool Cancel()=0
Publishを中止します。
virtual void AddEventListener(EventListener *listener)=0
イベントを購読します。
virtual std::vector< std::unique_ptr< RoomSubscription > > Subscriptions()=0
このPublicationを購読しているSubsciptionの一覧を取得します。
virtual model::ContentType ContentType()=0
ContentType(VideoかAudioかDataか)を取得します。
virtual bool UpdateMetadata(const std::string &metadata)=0
Metadataを更新します。
virtual bool Disable()=0
Publicationの公開を一時停止します。
virtual std::vector< model::Codec > CodecCapabilities()=0
このPublicationのコーデック一覧を取得します。