SkyWay for Linux
読み取り中…
検索中…
一致する文字列を見つけられません
channel.hpp
1//
2// channel.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_CHANNEL_HPP_
10#define SKYWAY_CORE_INTERFACE_CHANNEL_HPP_
11
12#include "skyway/core/interface/local_person.hpp"
13#include "skyway/core/interface/publication.hpp"
14#include "skyway/core/interface/remote_member.hpp"
15#include "skyway/core/interface/subscription.hpp"
16#include "skyway/model/domain.hpp"
17#include "skyway/rtc_api/channel_state.hpp"
18#include "skyway/signaling/interface/signaling_client.hpp"
19
20namespace skyway {
21namespace core {
22namespace interface {
23
25enum class ChannelState { kOpened, kClosed };
26
28class Channel {
29public:
32 public:
34 virtual void OnClosed() {}
35
38 virtual void OnMetadataUpdated(const std::string& metadata) {}
39
42 virtual void OnMemberListChanged() {}
43
46 virtual void OnMemberJoined(Member* member) {}
47
50 virtual void OnMemberLeft(Member* member) {}
51
55 virtual void OnMemberMetadataUpdated(Member* member, const std::string& metadata) {}
56
60 virtual void OnPublicationMetadataUpdated(Publication* publication,
61 const std::string& metadata) {}
62
65 virtual void OnPublicationListChanged() {}
66
69 virtual void OnStreamPublished(Publication* publication) {}
70
73 virtual void OnStreamUnpublished(Publication* publication) {}
74
77 virtual void OnPublicationEnabled(Publication* publication) {}
78
81 virtual void OnPublicationDisabled(Publication* publication) {}
82
84 virtual void OnSubscriptionListChanged() {}
85
88 virtual void OnPublicationSubscribed(Subscription* subscription) {}
89
92 virtual void OnPublicationUnsubscribed(Subscription* subscription) {}
93
96 virtual void OnSubscriptionEnabled(Subscription* subscription) {}
97
100 virtual void OnSubscriptionDisabled(Subscription* subscription) {}
101 };
102
107 class InternalEventListener {
108 public:
111 virtual void OnPublicationSubscribed(Subscription* subscription) {}
112
115 virtual void OnPublicationUnsubscribed(Subscription* subscription) {}
116 };
118
119 virtual ~Channel() = default;
120
123 virtual void AddEventListener(EventListener* listener) = 0;
124
127 virtual void RemoveEventListener(EventListener* listener) = 0;
128
130 virtual std::string Id() const = 0;
131
133 virtual boost::optional<std::string> Name() const = 0;
134
136 virtual boost::optional<std::string> Metadata() const = 0;
137
140
142 virtual std::vector<RemoteMember*> Bots(bool active_only = true) = 0;
143
146 virtual std::vector<Member*> Members(bool active_only = true) = 0;
147
149 virtual std::vector<Publication*> Publications(bool active_only = true) = 0;
150
152 virtual std::vector<Subscription*> Subscriptions(bool active_only = true) = 0;
153
155 virtual ChannelState State() const = 0;
156
161
168 virtual bool Leave(Member* member) = 0;
169
178 virtual bool Close() = 0;
179
184 virtual void Dispose(bool remove_myself_if_needed) = 0;
185
187 virtual bool UpdateMetadata(const std::string& metadata) = 0;
188
191 virtual Member* FindMember(const std::string& member_id, bool active_only = true) = 0;
192
194 virtual RemoteMember* FindRemoteMember(const std::string& member_id,
195 bool active_only = true) = 0;
196
198 virtual Publication* FindPublication(const std::string& publication_id,
199 bool active_only = true) = 0;
200
202 virtual Subscription* FindSubscription(const std::string& subscription_id,
203 bool active_only = true) = 0;
204
206 virtual std::vector<Subscription*> GetSubscriptionsByPublicationId(
207 const std::string& publication_id, bool active_only = true) = 0;
208
210 virtual std::vector<Subscription*> GetSubscriptionsBySubscriberId(
211 const std::string& subscriber_id, bool active_only = true) = 0;
212
214 virtual std::vector<Publication*> GetPublicationsByPublisherId(const std::string& publisher_id,
215 bool active_only = true) = 0;
216
217 virtual boost::optional<model::Member> GetMemberDto(const std::string& member_id) const = 0;
218 virtual boost::optional<model::Publication> GetPublicationDto(
219 const std::string& publication_id) const = 0;
220 virtual boost::optional<model::Subscription> GetSubscriptionDto(
221 const std::string& subscription_id) const = 0;
222
223 virtual void AddInternalEventListener(InternalEventListener*) = 0;
224 virtual void RemoveInternalEventListener(InternalEventListener*) = 0;
226};
227
228} // namespace interface
229} // namespace core
230} // namespace skyway
231
232#endif /* SKYWAY_CORE_INTERFACE_CHANNEL_HPP_ */
Subscriptionの実装クラス
Definition subscription.hpp:22
イベントリスナ
Definition channel.hpp:31
virtual void OnSubscriptionListChanged()
StreamがSubscribeまたはUnsubscribeされた時に発生するイベント
Definition channel.hpp:84
virtual void OnPublicationSubscribed(Subscription *subscription)
PublicationがSubscribeされた時に発生するイベント
Definition channel.hpp:88
virtual void OnPublicationListChanged()
Publicationが作成または削除された時に発生するイベント
Definition channel.hpp:65
virtual void OnMetadataUpdated(const std::string &metadata)
このChannelのMetadataが更新された時に発生するイベント
Definition channel.hpp:38
virtual void OnMemberLeft(Member *member)
ChannelからMemberが退出した時に発生するイベント
Definition channel.hpp:50
virtual void OnMemberListChanged()
Member が入退出したときに発生するイベント
Definition channel.hpp:42
virtual void OnPublicationEnabled(Publication *publication)
PublicationがEnableになった時に発生するイベント
Definition channel.hpp:77
virtual void OnClosed()
このChannelが閉じられた時に発生するイベント
Definition channel.hpp:34
virtual void OnMemberMetadataUpdated(Member *member, const std::string &metadata)
MemberのMetadataが更新された時に発生するイベント
Definition channel.hpp:55
virtual void OnStreamUnpublished(Publication *publication)
StreamがUnpublishされた時に発生するイベント
Definition channel.hpp:73
virtual void OnPublicationUnsubscribed(Subscription *subscription)
PublicationがUnsubscribeされた時に発生するイベント
Definition channel.hpp:92
virtual void OnPublicationDisabled(Publication *publication)
PublicationがDisableになった時に発生するイベント
Definition channel.hpp:81
virtual void OnPublicationMetadataUpdated(Publication *publication, const std::string &metadata)
PublicationのMetadataが更新された時に発生するイベント
Definition channel.hpp:60
virtual void OnSubscriptionDisabled(Subscription *subscription)
SubscriptionがDisableになった時に発生するイベント
Definition channel.hpp:100
virtual void OnStreamPublished(Publication *publication)
StreamがPublishされた時に発生するイベント
Definition channel.hpp:69
virtual void OnSubscriptionEnabled(Subscription *subscription)
SubscriptionがEnableになった時に発生するイベント
Definition channel.hpp:96
virtual void OnMemberJoined(Member *member)
ChannelにMemberが参加した時に発生するイベント
Definition channel.hpp:46
Channelのインターフェース
Definition channel.hpp:28
virtual void AddEventListener(EventListener *listener)=0
イベントを購読します。
virtual boost::optional< std::string > Name() const =0
Nameを取得します。
virtual void Dispose(bool remove_myself_if_needed)=0
Channelを閉じずにChannelインスタンスを無効にし、リソースを解放します。
virtual void RemoveEventListener(EventListener *listener)=0
イベントの購読を中止します。
virtual bool UpdateMetadata(const std::string &metadata)=0
Metadataを更新します。
virtual boost::optional< std::string > Metadata() const =0
Metadataを取得します。
virtual interface::LocalPerson * Join(const model::Member::Init &init)=0
ChannelにLocalPersonを追加します。
virtual ChannelState State() const =0
Channelの状態を取得します。
virtual std::string Id() const =0
Idを取得します。
virtual std::vector< Subscription * > Subscriptions(bool active_only=true)=0
Subscriptionの一覧を取得します。
virtual bool Leave(Member *member)=0
ChannelからMemberを退出させます。
virtual std::vector< Publication * > Publications(bool active_only=true)=0
Publicationの一覧を取得します。
virtual bool Close()=0
Channelを閉じます。
virtual interface::LocalPerson * LocalPerson()=0
ChannelにJoinしているLocalPersonを取得します。
virtual std::vector< Member * > Members(bool active_only=true)=0
ChannelにJoinしているすべてのMemberを取得します。
virtual std::vector< RemoteMember * > Bots(bool active_only=true)=0
ChannelにJoinしているBotを取得します。
LocalPersonのインターフェース
Definition local_person.hpp:23
LocalPersonおよびRemoteMemberの基底クラス
Definition member.hpp:32
Publicationのインターフェース
Definition publication.hpp:29
このSDK以外で生成されたメンバ
Definition remote_member.hpp:32
Subscriptionのインターフェース
Definition subscription.hpp:27
Join時に使用するメンバー情報
Definition domain.hpp:56