SkyWay Linux SDK
読み取り中…
検索中…
一致する文字列を見つけられません
room.hpp
1//
2// © NTT DOCOMO BUSINESS, Inc. All Rights Reserved.
3//
4
5#ifndef SKYWAY_ROOM_ABSTRACT_ROOM_HPP
6#define SKYWAY_ROOM_ABSTRACT_ROOM_HPP
7
8#include <memory>
9#include <mutex>
10
11#include "skyway/room/interface/room.hpp"
12#include "skyway/room/interface/room_domain_cache_manager.hpp"
13#include "skyway/room/interface/room_domain_factory.hpp"
14#include "skyway/room/interface/room_subscription.hpp"
15
16namespace skyway {
17namespace room {
18namespace abstract {
19
22public:
23 virtual ~Room();
24 std::string Id() override;
25 std::optional<std::string> Name() override;
26 std::optional<std::string> Metadata() override;
27 core::interface::ChannelState State() override;
30 bool UpdateMetadata(const std::string& metadata) override;
31 bool Leave(interface::RoomMember* member) override;
32 bool Close() override;
33 void Dispose() override;
34
36 std::shared_ptr<interface::RoomDomainCacheManager<interface::RoomPublication>>
37 GetRoomPublicationCacheManager() override;
38 std::shared_ptr<interface::RoomDomainCacheManager<interface::RoomSubscription>>
39 GetRoomSubscriptionCacheManager() override;
40 std::shared_ptr<interface::RoomDomainCacheManager<interface::LocalRoomMember>>
41 GetLocalRoomMemberCacheManager() override;
42 std::shared_ptr<interface::RoomDomainCacheManager<interface::RemoteRoomMember>>
43 GetRemoteRoomMemberCacheManager() override;
45protected:
46 Room(std::shared_ptr<core::interface::Channel> core,
47 std::unique_ptr<interface::RoomDomainFactory> factory,
48 std::shared_ptr<interface::RoomDomainCacheManager<interface::RoomPublication>>
49 room_publication_cache_manager,
50 std::shared_ptr<interface::RoomDomainCacheManager<interface::RoomSubscription>>
51 room_subscription_cache_manager,
52 std::shared_ptr<interface::RoomDomainCacheManager<interface::LocalRoomMember>>
53 local_room_member_cache_manager,
54 std::shared_ptr<interface::RoomDomainCacheManager<interface::RemoteRoomMember>>
55 remote_room_member_cache_manager);
56
57 // core::interface::Channel::EventListener
58 void OnClosed() override;
59 void OnMetadataUpdated(const std::string& metadata) override;
60
61 std::shared_ptr<core::interface::Channel> core_;
62 std::unique_ptr<interface::RoomDomainFactory> factory_;
63
64 std::mutex listener_mtx_;
66
67private:
68 const std::shared_ptr<interface::RoomDomainCacheManager<interface::RoomPublication>>
69 room_publication_cache_manager_;
70 const std::shared_ptr<interface::RoomDomainCacheManager<interface::RoomSubscription>>
71 room_subscription_cache_manager_;
72 const std::shared_ptr<interface::RoomDomainCacheManager<interface::LocalRoomMember>>
73 local_room_member_cache_manager_;
74 const std::shared_ptr<interface::RoomDomainCacheManager<interface::RemoteRoomMember>>
75 remote_room_member_cache_manager_;
76};
77
78bool EnsureSfuBotExists(std::shared_ptr<core::interface::Channel> channel);
79
80} // namespace abstract
81} // namespace room
82} // namespace skyway
83
84#endif /* SKYWAY_ROOM_ABSTRACT_ROOM_HPP */
イベントリスナ
Definition channel.hpp:30
Roomの操作を行う抽象クラス
Definition room.hpp:21
std::optional< std::string > Metadata() override
Metadataを取得します。
std::string Id() override
Idを取得します。
void OnClosed() override
このChannelが閉じられた時に発生するイベント
void RemoveEventListener(interface::Room::EventListener *listener) override
イベントの購読を中止します。
bool Leave(interface::RoomMember *member) override
指定したMemberをRoomから退室させます。
void OnMetadataUpdated(const std::string &metadata) override
このChannelのMetadataが更新された時に発生するイベント
void Dispose() override
Roomを破棄します。破棄されたRoomではイベントが発火しなくなります。
bool Close() override
Roomを閉じます。
void AddEventListener(interface::Room::EventListener *listener) override
イベントを購読します。
std::optional< std::string > Name() override
Nameを取得します。
core::interface::ChannelState State() override
Stateを取得します。
bool UpdateMetadata(const std::string &metadata) override
Metadataを更新します。
イベントリスナ
Definition room.hpp:77
Roomの操作を行うインターフェース
Definition room.hpp:74
RoomMemberの操作を行うインターフェース
Definition room_member.hpp:19