SkyWay Linux SDK
読み取り中…
検索中…
一致する文字列を見つけられません
room.hpp
1//
2// room.hpp
3// skyway
4//
5// Created by Naoto Takahashi on 2023/11/21.
6// Copyright © 2023 NTT DOCOMO BUSINESS, Inc. All rights reserved.
7//
8
9#ifndef SKYWAY_ROOM_ABSTRACT_ROOM_HPP
10#define SKYWAY_ROOM_ABSTRACT_ROOM_HPP
11
12#include <memory>
13#include "skyway/room/interface/room.hpp"
14#include "skyway/room/interface/room_domain_cache_manager.hpp"
15#include "skyway/room/interface/room_domain_factory.hpp"
16#include "skyway/room/interface/room_subscription.hpp"
17
18namespace skyway {
19namespace room {
20namespace abstract {
21
24public:
25 virtual ~Room();
26 std::string Id() override;
27 std::optional<std::string> Name() override;
28 std::optional<std::string> Metadata() override;
29 core::interface::ChannelState State() override;
30 std::vector<std::shared_ptr<interface::RoomPublication>> Publications() override;
31 std::vector<std::shared_ptr<interface::RoomSubscription>> Subscriptions() override;
32 std::vector<std::shared_ptr<interface::RoomMember>> Members() override;
35 bool UpdateMetadata(const std::string& metadata) override;
36 bool Leave(interface::RoomMember* member) override;
37 bool Close() override;
38 void Dispose() override;
39
41 std::shared_ptr<interface::RoomDomainCacheManager<interface::RoomPublication>>
42 GetRoomPublicationCacheManager() override;
43 std::shared_ptr<interface::RoomDomainCacheManager<interface::RoomSubscription>>
44 GetRoomSubscriptionCacheManager() override;
45 std::shared_ptr<interface::RoomDomainCacheManager<interface::LocalRoomMember>>
46 GetLocalRoomMemberCacheManager() override;
47 std::shared_ptr<interface::RoomDomainCacheManager<interface::RemoteRoomMember>>
48 GetRemoteRoomMemberCacheManager() override;
50
51protected:
52 Room(std::shared_ptr<core::interface::Channel> core,
53 std::unique_ptr<interface::RoomDomainFactory> factory,
54 std::shared_ptr<interface::RoomDomainCacheManager<interface::RoomPublication>>
55 room_publication_cache_manager,
56 std::shared_ptr<interface::RoomDomainCacheManager<interface::RoomSubscription>>
57 room_subscription_cache_manager,
58 std::shared_ptr<interface::RoomDomainCacheManager<interface::LocalRoomMember>>
59 local_room_member_cache_manager,
60 std::shared_ptr<interface::RoomDomainCacheManager<interface::RemoteRoomMember>>
61 remote_room_member_cache_manager);
62
63 // core::interface::Channel::EventListener
64 void OnClosed() override;
65 void OnMetadataUpdated(const std::string& metadata) override;
66 void OnMemberListChanged() override;
67 void OnMemberJoined(std::shared_ptr<core::interface::Member> member) override;
68 void OnMemberLeft(std::shared_ptr<core::interface::Member> member) override;
69 void OnMemberMetadataUpdated(std::shared_ptr<core::interface::Member> member,
70 const std::string& metadata) override;
71 void OnPublicationMetadataUpdated(std::shared_ptr<core::interface::Publication> publication,
72 const std::string& metadata) override;
73 void OnPublicationListChanged() override;
74 void OnStreamPublished(std::shared_ptr<core::interface::Publication> publication) override;
75 void OnStreamUnpublished(std::shared_ptr<core::interface::Publication> publication) override;
76 void OnPublicationEnabled(std::shared_ptr<core::interface::Publication> publication) override;
77 void OnPublicationDisabled(std::shared_ptr<core::interface::Publication> publication) override;
79 void OnPublicationSubscribed(
80 std::shared_ptr<core::interface::Subscription> subscription) override;
81 void OnPublicationUnsubscribed(
82 std::shared_ptr<core::interface::Subscription> subscription) override;
83
84 std::shared_ptr<core::interface::Channel> core_;
85 std::unique_ptr<interface::RoomDomainFactory> factory_;
86
87 std::mutex listener_mtx_;
89
90private:
91 const std::shared_ptr<interface::RoomDomainCacheManager<interface::RoomPublication>>
92 room_publication_cache_manager_;
93 const std::shared_ptr<interface::RoomDomainCacheManager<interface::RoomSubscription>>
94 room_subscription_cache_manager_;
95 const std::shared_ptr<interface::RoomDomainCacheManager<interface::LocalRoomMember>>
96 local_room_member_cache_manager_;
97 const std::shared_ptr<interface::RoomDomainCacheManager<interface::RemoteRoomMember>>
98 remote_room_member_cache_manager_;
99};
100
101} // namespace abstract
102} // namespace room
103} // namespace skyway
104
105#endif /* SKYWAY_ROOM_ABSTRACT_ROOM_HPP */
イベントリスナ
Definition channel.hpp:34
Roomの操作を行う抽象クラス
Definition room.hpp:23
std::vector< std::shared_ptr< interface::RoomSubscription > > Subscriptions() override
Roomインスタンスに紐づくSubscriptionの一覧を取得します。
std::optional< std::string > Metadata() override
Metadataを取得します。
void OnPublicationListChanged() override
Publicationが作成または削除された時に発生するイベント
std::string Id() override
Idを取得します。
void OnClosed() override
このChannelが閉じられた時に発生するイベント
std::vector< std::shared_ptr< interface::RoomPublication > > Publications() override
Roomインスタンスに紐づくPublicationの一覧を取得します。
void RemoveEventListener(interface::Room::EventListener *listener) override
イベントの購読を中止します。
bool Leave(interface::RoomMember *member) override
指定したMemberをRoomから退室させます。
void OnMetadataUpdated(const std::string &metadata) override
このChannelのMetadataが更新された時に発生するイベント
std::vector< std::shared_ptr< interface::RoomMember > > Members() override
Roomインスタンスに紐づくRoomMemberの一覧を取得します。
void Dispose() override
Roomを破棄します。破棄されたRoomではイベントが発火しなくなります。
bool Close() override
Roomを閉じます。
void AddEventListener(interface::Room::EventListener *listener) override
イベントを購読します。
std::optional< std::string > Name() override
Nameを取得します。
void OnMemberListChanged() override
Member が入退出したときに発生するイベント
core::interface::ChannelState State() override
Stateを取得します。
bool UpdateMetadata(const std::string &metadata) override
Metadataを更新します。
void OnSubscriptionListChanged() override
StreamがSubscribeまたはUnsubscribeされた時に発生するイベント
イベントリスナ
Definition room.hpp:81
Roomの操作を行うインターフェース
Definition room.hpp:78
RoomMemberの操作を行うインターフェース
Definition room_member.hpp:23