SkyWay Linux SDK
読み取り中…
検索中…
一致する文字列を見つけられません
room.hpp
1#ifndef SKYWAY_ROOM_INTERFACE_ROOM_HPP
2#define SKYWAY_ROOM_INTERFACE_ROOM_HPP
3
4#include <functional>
5
6#include <skyway/core/interface/channel.hpp>
7
8#include "skyway/room/interface/local_room_member.hpp"
9#include "skyway/room/interface/remote_room_member.hpp"
10#include "skyway/room/interface/room_domain_cache_manager.hpp"
11#include "skyway/room/interface/room_domain_factory.hpp"
12#include "skyway/room/interface/room_publication.hpp"
13#include "skyway/room/interface/room_subscription.hpp"
14#include "skyway/room/types.hpp"
15
16namespace skyway {
17namespace room {
18namespace interface {
19
23 std::optional<std::string> name;
25 std::optional<std::string> metadata;
27 model::Channel::Init ToCore() {
28 model::Channel::Init core;
29 core.name = name;
30 core.metadata = metadata;
31 return core;
32 }
34};
35
37struct RoomQuery {
39 std::optional<std::string> id;
41 std::optional<std::string> name;
43 model::Channel::Query ToCore() {
44 model::Channel::Query core;
45 core.id = id;
46 core.name = name;
47 return core;
48 }
50};
51
55 std::optional<std::string> name;
57 std::optional<std::string> metadata;
59 std::optional<int> keepalive_interval_sec;
61 std::optional<int> keepalive_interval_gap_sec;
63 model::Member::Init ToCore() {
64 model::Member::Init core;
65 core.name = name;
66 core.metadata = metadata;
67 core.keepalive_interval_sec = keepalive_interval_sec;
68 core.keepalive_interval_gap_sec = keepalive_interval_gap_sec;
69 return core;
70 }
72};
73
75class Room {
76public:
79 public:
80 virtual ~EventListener() = default;
82 virtual void OnClosed() {}
83
86 virtual void OnMetadataUpdated(const std::string& metadata) {}
87
90 virtual void OnMemberListChanged() {}
91
94 virtual void OnMemberJoined(std::shared_ptr<RoomMember> member) {}
95
98 virtual void OnMemberLeft(std::shared_ptr<RoomMember> member) {}
99
103 virtual void OnMemberMetadataUpdated(std::shared_ptr<RoomMember> member,
104 const std::string& metadata) {}
105
109 virtual void OnPublicationMetadataUpdated(std::shared_ptr<RoomPublication> publication,
110 const std::string& metadata) {}
111
114 virtual void OnPublicationListChanged() {}
115
118 virtual void OnStreamPublished(std::shared_ptr<RoomPublication> publication) {}
119
122 virtual void OnStreamUnpublished(std::shared_ptr<RoomPublication> publication) {}
123
126 virtual void OnPublicationEnabled(std::shared_ptr<RoomPublication> publication) {}
127
130 virtual void OnPublicationDisabled(std::shared_ptr<RoomPublication> publication) {}
131
134
137 virtual void OnPublicationSubscribed(std::shared_ptr<RoomSubscription> subscription) {}
138
141 virtual void OnPublicationUnsubscribed(std::shared_ptr<RoomSubscription> subscription) {}
142
147 virtual void OnSubscriptionEnabled(std::shared_ptr<RoomSubscription> subscription) {}
148
153 virtual void OnSubscriptionDisabled(std::shared_ptr<RoomSubscription> subscription) {}
154 };
155 virtual ~Room() = default;
157 virtual std::string Id() = 0;
159 virtual std::optional<std::string> Name() = 0;
161 virtual RoomType Type() = 0;
163 virtual std::optional<std::string> Metadata() = 0;
165 virtual RoomState State() = 0;
167 virtual std::vector<std::shared_ptr<RoomPublication>> Publications() = 0;
169 virtual std::vector<std::shared_ptr<RoomSubscription>> Subscriptions() = 0;
171 virtual std::vector<std::shared_ptr<RoomMember>> Members() = 0;
172
174 virtual void AddEventListener(EventListener* listener) = 0;
176 virtual void RemoveEventListener(EventListener* listener) = 0;
178 virtual bool UpdateMetadata(const std::string& metadata) = 0;
180 virtual bool Leave(RoomMember* member) = 0;
182 virtual bool Close() = 0;
184 virtual void Dispose() = 0;
185
187 virtual std::shared_ptr<interface::RoomDomainCacheManager<interface::RoomPublication>>
188 GetRoomPublicationCacheManager() = 0;
189 virtual std::shared_ptr<interface::RoomDomainCacheManager<interface::RoomSubscription>>
190 GetRoomSubscriptionCacheManager() = 0;
191 virtual std::shared_ptr<interface::RoomDomainCacheManager<interface::LocalRoomMember>>
192 GetLocalRoomMemberCacheManager() = 0;
193 virtual std::shared_ptr<interface::RoomDomainCacheManager<interface::RemoteRoomMember>>
194 GetRemoteRoomMemberCacheManager() = 0;
195 virtual void RunWithRoomEventListenerLock(std::function<void()> function) = 0;
197};
198
200class RoomFactory {
201public:
202 virtual ~RoomFactory() = default;
203 virtual std::shared_ptr<Room> Create(
204 RoomInitOptions options, std::unique_ptr<interface::RoomDomainFactory> domain_factory) = 0;
205 virtual std::shared_ptr<Room> Find(
206 RoomQuery query, std::unique_ptr<interface::RoomDomainFactory> domain_factory) = 0;
207 virtual std::shared_ptr<Room> FindOrCreate(
208 RoomInitOptions options, std::unique_ptr<interface::RoomDomainFactory> domain_factory) = 0;
209};
211
212} // namespace interface
213} // namespace room
214} // namespace skyway
215
216#endif /* SKYWAY_ROOM_INTERFACE_ROOM_HPP */
イベントリスナ
Definition room.hpp:78
virtual void OnMetadataUpdated(const std::string &metadata)
このRoomのMetadataが更新された後に発生するイベント
Definition room.hpp:86
virtual void OnPublicationEnabled(std::shared_ptr< RoomPublication > publication)
RoomPublicationがEnableになった後に発生するイベント
Definition room.hpp:126
virtual void OnClosed()
このRoomが閉じられた後に発生するイベント
Definition room.hpp:82
virtual void OnMemberMetadataUpdated(std::shared_ptr< RoomMember > member, const std::string &metadata)
RoomMemberのMetadataが更新された後に発生するイベント
Definition room.hpp:103
virtual void OnPublicationUnsubscribed(std::shared_ptr< RoomSubscription > subscription)
RoomPublicationがUnsubscribeされた後に発生するイベント
Definition room.hpp:141
virtual void OnPublicationDisabled(std::shared_ptr< RoomPublication > publication)
RoomPublicationがDisableになった後に発生するイベント
Definition room.hpp:130
virtual void OnSubscriptionListChanged()
StreamがSubscribeまたはUnsubscribeされた後に発生するイベント
Definition room.hpp:133
virtual void OnMemberJoined(std::shared_ptr< RoomMember > member)
RoomにRoomMemberが参加した後に発生するイベント
Definition room.hpp:94
virtual void OnStreamUnpublished(std::shared_ptr< RoomPublication > publication)
StreamがUnpublishされた後に発生するイベント
Definition room.hpp:122
virtual void OnPublicationListChanged()
RoomPublicationが作成または削除された後に発生するイベント
Definition room.hpp:114
virtual void OnPublicationSubscribed(std::shared_ptr< RoomSubscription > subscription)
RoomPublicationがSubscribeされた後に発生するイベント
Definition room.hpp:137
virtual void OnStreamPublished(std::shared_ptr< RoomPublication > publication)
StreamがPublishされた後に発生するイベント
Definition room.hpp:118
virtual void OnSubscriptionDisabled(std::shared_ptr< RoomSubscription > subscription)
RoomSubscriptionがDisableになった後に発生するイベント (現在は発火しません)
Definition room.hpp:153
virtual void OnPublicationMetadataUpdated(std::shared_ptr< RoomPublication > publication, const std::string &metadata)
RoomPublicationのMetadataが更新された後に発生するイベント
Definition room.hpp:109
virtual void OnMemberListChanged()
RoomMemberが入退出したときに発生するイベント
Definition room.hpp:90
virtual void OnSubscriptionEnabled(std::shared_ptr< RoomSubscription > subscription)
RoomSubscriptionがEnableになった後に発生するイベント (現在は発火しません)
Definition room.hpp:147
virtual void OnMemberLeft(std::shared_ptr< RoomMember > member)
RoomからRoomMemberが退出した後に発生するイベント
Definition room.hpp:98
Roomの操作を行うインターフェース
Definition room.hpp:75
virtual std::vector< std::shared_ptr< RoomPublication > > Publications()=0
Roomインスタンスに紐づくPublicationの一覧を取得します。
virtual void Dispose()=0
Roomを破棄します。破棄されたRoomではイベントが発火しなくなります。
virtual bool Close()=0
Roomを閉じます。
virtual std::optional< std::string > Name()=0
Nameを取得します。
virtual RoomState State()=0
Stateを取得します。
virtual void RemoveEventListener(EventListener *listener)=0
イベントの購読を中止します。
virtual std::vector< std::shared_ptr< RoomMember > > Members()=0
Roomインスタンスに紐づくRoomMemberの一覧を取得します。
virtual bool UpdateMetadata(const std::string &metadata)=0
Metadataを更新します。
virtual bool Leave(RoomMember *member)=0
指定したMemberをRoomから退室させます。
virtual std::vector< std::shared_ptr< RoomSubscription > > Subscriptions()=0
Roomインスタンスに紐づくSubscriptionの一覧を取得します。
virtual RoomType Type()=0
RoomのTypeを取得します。
virtual std::string Id()=0
Idを取得します。
virtual std::optional< std::string > Metadata()=0
Metadataを取得します。
virtual void AddEventListener(EventListener *listener)=0
イベントを購読します。
RoomMemberの操作を行うインターフェース
Definition room_member.hpp:23
Roomの状態や種別、統計情報などの型を定義するヘッダーファイル
RoomState
Roomの状態
Definition types.hpp:21
RoomType
Roomの種別
Definition types.hpp:18
RoomのCreate/FindOrCreateで扱うオプション
Definition room.hpp:21
std::optional< std::string > name
Name
Definition room.hpp:23
std::optional< std::string > metadata
Metadata
Definition room.hpp:25
MemberのCreateで扱うオプション
Definition room.hpp:53
std::optional< int > keepalive_interval_gap_sec
生存確認の間隔を超えてRoomからMemberが削除されるまでの時間
Definition room.hpp:61
std::optional< std::string > name
Name
Definition room.hpp:55
std::optional< std::string > metadata
Metadata
Definition room.hpp:57
std::optional< int > keepalive_interval_sec
生存確認の間隔
Definition room.hpp:59
RoomのFind/FindOrCreateで扱うオプション
Definition room.hpp:37
std::optional< std::string > name
Name
Definition room.hpp:41
std::optional< std::string > id
Id
Definition room.hpp:39