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 Communications. All rights reserved.
7//
8
9#ifndef SKYWAY_ROOM_ABSTRACT_ROOM_HPP
10#define SKYWAY_ROOM_ABSTRACT_ROOM_HPP
11
12#include "skyway/room/interface/room.hpp"
13#include "skyway/room/interface/room_domain_factory.hpp"
14
15namespace skyway {
16namespace room {
17namespace abstract {
18
21public:
22 virtual ~Room();
23 std::string Id() override;
24 std::optional<std::string> Name() override;
25 std::optional<std::string> Metadata() override;
26 core::interface::ChannelState State() override;
27 std::vector<std::shared_ptr<interface::RoomPublication>> Publications() override;
28 std::vector<std::shared_ptr<interface::RoomSubscription>> Subscriptions() override;
29 std::vector<std::shared_ptr<interface::RoomMember>> Members() override;
32 bool UpdateMetadata(const std::string& metadata) override;
33 bool Leave(interface::RoomMember* member) override;
34 bool Close() override;
35 void Dispose() override;
36
37protected:
38 Room(std::shared_ptr<core::interface::Channel> core,
39 std::unique_ptr<interface::RoomDomainFactory> factory);
40 // core::interface::Channel::EventListener
41 void OnClosed() override;
42 void OnMetadataUpdated(const std::string& metadata) override;
43 void OnMemberListChanged() override;
44 void OnMemberJoined(std::shared_ptr<core::interface::Member> member) override;
45 void OnMemberLeft(std::shared_ptr<core::interface::Member> member) override;
46 void OnMemberMetadataUpdated(std::shared_ptr<core::interface::Member> member,
47 const std::string& metadata) override;
48 void OnPublicationMetadataUpdated(std::shared_ptr<core::interface::Publication> publication,
49 const std::string& metadata) override;
50 void OnPublicationListChanged() override;
51 void OnStreamPublished(std::shared_ptr<core::interface::Publication> publication) override;
52 void OnStreamUnpublished(std::shared_ptr<core::interface::Publication> publication) override;
53 void OnPublicationEnabled(std::shared_ptr<core::interface::Publication> publication) override;
54 void OnPublicationDisabled(std::shared_ptr<core::interface::Publication> publication) override;
56 void OnPublicationSubscribed(
57 std::shared_ptr<core::interface::Subscription> subscription) override;
58 void OnPublicationUnsubscribed(
59 std::shared_ptr<core::interface::Subscription> subscription) override;
60
61 std::shared_ptr<core::interface::Channel> core_;
62 std::unique_ptr<interface::RoomDomainFactory> factory_;
63
64 std::mutex listener_mtx_;
66};
67
68} // namespace abstract
69} // namespace room
70} // namespace skyway
71
72#endif /* SKYWAY_ROOM_ABSTRACT_ROOM_HPP */
イベントリスナ
Definition channel.hpp:34
Roomの操作を行う抽象クラス
Definition room.hpp:20
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:80
Roomの操作を行うインターフェース
Definition room.hpp:77
RoomMemberの操作を行うインターフェース
Definition room_member.hpp:23