SkyWay Linux SDK
読み取り中…
検索中…
一致する文字列を見つけられません
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
28// `std::enable_shared_from_this<T>` is supposed to be inherited by concrete classes.
29// (e.g. skyway/core/channel/channel.hpp)
30// however if so, compile failed on the Android SDK that includes interfaces.
31class Channel : public std::enable_shared_from_this<Channel> {
32public:
35 public:
37 virtual void OnClosed() {}
38
41 virtual void OnMetadataUpdated(const std::string& metadata) {}
42
45 virtual void OnMemberListChanged() {}
46
49 virtual void OnMemberJoined(std::shared_ptr<interface::Member> member) {}
50
53 virtual void OnMemberLeft(std::shared_ptr<interface::Member> member) {}
54
58 virtual void OnMemberMetadataUpdated(std::shared_ptr<interface::Member> member,
59 const std::string& metadata) {}
60
65 std::shared_ptr<interface::Publication> publication, const std::string& metadata) {}
66
69 virtual void OnPublicationListChanged() {}
70
73 virtual void OnStreamPublished(std::shared_ptr<interface::Publication> publication) {}
74
77 virtual void OnStreamUnpublished(std::shared_ptr<interface::Publication> publication) {}
78
81 virtual void OnPublicationEnabled(std::shared_ptr<interface::Publication> publication) {}
82
85 virtual void OnPublicationDisabled(std::shared_ptr<interface::Publication> publication) {}
86
88 virtual void OnSubscriptionListChanged() {}
89
93 std::shared_ptr<interface::Subscription> subscription) {}
94
98 std::shared_ptr<interface::Subscription> subscription) {}
99 };
100
101 virtual ~Channel() = default;
102
105 virtual void AddEventListener(EventListener* listener) = 0;
106
109 virtual void RemoveEventListener(EventListener* listener) = 0;
110
112 virtual std::string Id() const = 0;
113
115 virtual std::optional<std::string> Name() const = 0;
116
118 virtual std::optional<std::string> Metadata() const = 0;
119
121 virtual std::shared_ptr<interface::LocalPerson> LocalPerson() = 0;
122
124 virtual std::vector<std::shared_ptr<interface::RemoteMember>> Bots(bool active_only = true) = 0;
125
128 virtual std::vector<std::shared_ptr<interface::Member>> Members(bool active_only = true) = 0;
129
131 virtual std::vector<std::shared_ptr<interface::Publication>> Publications(
132 bool active_only = true) = 0;
133
135 virtual std::vector<std::shared_ptr<interface::Subscription>> Subscriptions(
136 bool active_only = true) = 0;
137
139 virtual ChannelState State() const = 0;
140
144 virtual std::shared_ptr<interface::LocalPerson> Join(const model::Member::Init& init) = 0;
145
152 virtual bool Leave(std::shared_ptr<interface::Member> member) = 0;
153
162 virtual bool Close() = 0;
163
168 virtual void Dispose(bool remove_myself_if_needed) = 0;
169
171 virtual bool UpdateMetadata(const std::string& metadata) = 0;
172
175 virtual std::shared_ptr<interface::Member> FindMember(const std::string& member_id,
176 bool active_only = true) = 0;
177
179 virtual std::shared_ptr<interface::RemoteMember> FindRemoteMember(const std::string& member_id,
180 bool active_only = true) = 0;
181
183 virtual std::shared_ptr<interface::Publication> FindPublication(
184 const std::string& publication_id, bool active_only = true) = 0;
185
187 virtual std::shared_ptr<interface::Subscription> FindSubscription(
188 const std::string& subscription_id, bool active_only = true) = 0;
189
191 virtual std::vector<std::shared_ptr<interface::Subscription>> GetSubscriptionsByPublicationId(
192 const std::string& publication_id, bool active_only = true) = 0;
193
195 virtual std::vector<std::shared_ptr<interface::Subscription>> GetSubscriptionsBySubscriberId(
196 const std::string& subscriber_id, bool active_only = true) = 0;
197
199 virtual std::vector<std::shared_ptr<interface::Publication>> GetPublicationsByPublisherId(
200 const std::string& publisher_id, bool active_only = true) = 0;
201
202 virtual std::optional<model::Member> GetMemberDto(const std::string& member_id) const = 0;
203 virtual std::optional<model::Publication> GetPublicationDto(
204 const std::string& publication_id) const = 0;
205 virtual std::optional<model::Subscription> GetSubscriptionDto(
206 const std::string& subscription_id) const = 0;
208};
209
210} // namespace interface
211} // namespace core
212} // namespace skyway
213
214#endif /* SKYWAY_CORE_INTERFACE_CHANNEL_HPP_ */
イベントリスナ
Definition channel.hpp:34
virtual void OnStreamUnpublished(std::shared_ptr< interface::Publication > publication)
StreamがUnpublishされた時に発生するイベント
Definition channel.hpp:77
virtual void OnSubscriptionListChanged()
StreamがSubscribeまたはUnsubscribeされた時に発生するイベント
Definition channel.hpp:88
virtual void OnMemberMetadataUpdated(std::shared_ptr< interface::Member > member, const std::string &metadata)
MemberのMetadataが更新された時に発生するイベント
Definition channel.hpp:58
virtual void OnPublicationSubscribed(std::shared_ptr< interface::Subscription > subscription)
PublicationがSubscribeされた時に発生するイベント
Definition channel.hpp:92
virtual void OnMemberLeft(std::shared_ptr< interface::Member > member)
ChannelからMemberが退出した時に発生するイベント
Definition channel.hpp:53
virtual void OnPublicationListChanged()
Publicationが作成または削除された時に発生するイベント
Definition channel.hpp:69
virtual void OnMetadataUpdated(const std::string &metadata)
このChannelのMetadataが更新された時に発生するイベント
Definition channel.hpp:41
virtual void OnMemberJoined(std::shared_ptr< interface::Member > member)
ChannelにMemberが参加した時に発生するイベント
Definition channel.hpp:49
virtual void OnMemberListChanged()
Member が入退出したときに発生するイベント
Definition channel.hpp:45
virtual void OnClosed()
このChannelが閉じられた時に発生するイベント
Definition channel.hpp:37
virtual void OnStreamPublished(std::shared_ptr< interface::Publication > publication)
StreamがPublishされた時に発生するイベント
Definition channel.hpp:73
virtual void OnPublicationEnabled(std::shared_ptr< interface::Publication > publication)
PublicationがEnableになった時に発生するイベント
Definition channel.hpp:81
virtual void OnPublicationUnsubscribed(std::shared_ptr< interface::Subscription > subscription)
PublicationがUnsubscribeされた時に発生するイベント
Definition channel.hpp:97
virtual void OnPublicationDisabled(std::shared_ptr< interface::Publication > publication)
PublicationがDisableになった時に発生するイベント
Definition channel.hpp:85
virtual void OnPublicationMetadataUpdated(std::shared_ptr< interface::Publication > publication, const std::string &metadata)
PublicationのMetadataが更新された時に発生するイベント
Definition channel.hpp:64
Channelのインターフェース
Definition channel.hpp:31
virtual void AddEventListener(EventListener *listener)=0
イベントを購読します。
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 ChannelState State() const =0
Channelの状態を取得します。
virtual std::string Id() const =0
Idを取得します。
virtual std::optional< std::string > Metadata() const =0
Metadataを取得します。
virtual bool Close()=0
Channelを閉じます。
virtual std::shared_ptr< interface::LocalPerson > LocalPerson()=0
ChannelにJoinしているLocalPersonを取得します。
virtual std::optional< std::string > Name() const =0
Nameを取得します。
virtual std::vector< std::shared_ptr< interface::RemoteMember > > Bots(bool active_only=true)=0
ChannelにJoinしているBotを取得します。
virtual std::vector< std::shared_ptr< interface::Publication > > Publications(bool active_only=true)=0
Publicationの一覧を取得します。
virtual std::vector< std::shared_ptr< interface::Subscription > > Subscriptions(bool active_only=true)=0
Subscriptionの一覧を取得します。
virtual bool Leave(std::shared_ptr< interface::Member > member)=0
ChannelからMemberを退出させます。
virtual std::vector< std::shared_ptr< interface::Member > > Members(bool active_only=true)=0
ChannelにJoinしているすべてのMemberを取得します。
virtual std::shared_ptr< interface::LocalPerson > Join(const model::Member::Init &init)=0
ChannelにLocalPersonを追加します。
Join時に使用するメンバー情報
Definition domain.hpp:56