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 "skyway/room/interface/room.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_subscription.hpp"
13
14namespace skyway {
15namespace room {
16namespace abstract {
17
20public:
21 virtual ~Room();
22 std::string Id() override;
23 std::optional<std::string> Name() override;
24 std::optional<std::string> Metadata() override;
25 core::interface::ChannelState State() override;
28 bool UpdateMetadata(const std::string& metadata) override;
29 bool Leave(interface::RoomMember* member) override;
30 bool Close() override;
31 void Dispose() override;
32
34 std::shared_ptr<interface::RoomDomainCacheManager<interface::RoomPublication>>
35 GetRoomPublicationCacheManager() override;
36 std::shared_ptr<interface::RoomDomainCacheManager<interface::RoomSubscription>>
37 GetRoomSubscriptionCacheManager() override;
38 std::shared_ptr<interface::RoomDomainCacheManager<interface::LocalRoomMember>>
39 GetLocalRoomMemberCacheManager() override;
40 std::shared_ptr<interface::RoomDomainCacheManager<interface::RemoteRoomMember>>
41 GetRemoteRoomMemberCacheManager() override;
43protected:
44 Room(std::shared_ptr<core::interface::Channel> core,
45 std::unique_ptr<interface::RoomDomainFactory> factory,
46 std::shared_ptr<interface::RoomDomainCacheManager<interface::RoomPublication>>
47 room_publication_cache_manager,
48 std::shared_ptr<interface::RoomDomainCacheManager<interface::RoomSubscription>>
49 room_subscription_cache_manager,
50 std::shared_ptr<interface::RoomDomainCacheManager<interface::LocalRoomMember>>
51 local_room_member_cache_manager,
52 std::shared_ptr<interface::RoomDomainCacheManager<interface::RemoteRoomMember>>
53 remote_room_member_cache_manager);
54
55 // core::interface::Channel::EventListener
56 void OnClosed() override;
57 void OnMetadataUpdated(const std::string& metadata) override;
58
59 std::shared_ptr<core::interface::Channel> core_;
60 std::unique_ptr<interface::RoomDomainFactory> factory_;
61
62 std::mutex listener_mtx_;
64
65private:
66 const std::shared_ptr<interface::RoomDomainCacheManager<interface::RoomPublication>>
67 room_publication_cache_manager_;
68 const std::shared_ptr<interface::RoomDomainCacheManager<interface::RoomSubscription>>
69 room_subscription_cache_manager_;
70 const std::shared_ptr<interface::RoomDomainCacheManager<interface::LocalRoomMember>>
71 local_room_member_cache_manager_;
72 const std::shared_ptr<interface::RoomDomainCacheManager<interface::RemoteRoomMember>>
73 remote_room_member_cache_manager_;
74};
75
76} // namespace abstract
77} // namespace room
78} // namespace skyway
79
80#endif /* SKYWAY_ROOM_ABSTRACT_ROOM_HPP */
イベントリスナ
Definition channel.hpp:30
Roomの操作を行う抽象クラス
Definition room.hpp:19
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