SkyWay for Linux
読み取り中…
検索中…
一致する文字列を見つけられません
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 boost::optional<std::string> Name() override;
25 boost::optional<std::string> Metadata() override;
26 core::interface::ChannelState State() override;
27 std::vector<std::unique_ptr<interface::RoomPublication>> Publications() override;
28 std::vector<std::unique_ptr<interface::RoomSubscription>> Subscriptions() override;
29 std::vector<std::unique_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;
45 void OnMemberLeft(core::interface::Member* member) override;
47 const std::string& metadata) override;
49 const std::string& metadata) override;
50 void OnPublicationListChanged() 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:31
LocalPersonおよびRemoteMemberの基底クラス
Definition member.hpp:32
Publicationのインターフェース
Definition publication.hpp:29
Subscriptionのインターフェース
Definition subscription.hpp:27
Roomの操作を行う抽象クラス
Definition room.hpp:20
boost::optional< std::string > Metadata() override
Metadataを取得します。
void OnMemberMetadataUpdated(core::interface::Member *member, const std::string &metadata) override
MemberのMetadataが更新された時に発生するイベント
void OnPublicationUnsubscribed(core::interface::Subscription *subscription) override
PublicationがUnsubscribeされた時に発生するイベント
std::vector< std::unique_ptr< interface::RoomPublication > > Publications() override
Roomインスタンスに紐づくPublicationの一覧を取得します。
void OnPublicationSubscribed(core::interface::Subscription *subscription) override
PublicationがSubscribeされた時に発生するイベント
void OnSubscriptionDisabled(core::interface::Subscription *subscription) override
SubscriptionがDisableになった時に発生するイベント
void OnMemberLeft(core::interface::Member *member) override
ChannelからMemberが退出した時に発生するイベント
void OnPublicationListChanged() override
Publicationが作成または削除された時に発生するイベント
std::string Id() override
Idを取得します。
void OnSubscriptionEnabled(core::interface::Subscription *subscription) override
SubscriptionがEnableになった時に発生するイベント
void OnClosed() override
このChannelが閉じられた時に発生するイベント
void OnPublicationDisabled(core::interface::Publication *publication) override
PublicationがDisableになった時に発生するイベント
void OnPublicationEnabled(core::interface::Publication *publication) override
PublicationがEnableになった時に発生するイベント
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 OnStreamUnpublished(core::interface::Publication *publication) override
StreamがUnpublishされた時に発生するイベント
void Dispose() override
Roomを破棄します。破棄されたRoomではイベントが発火しなくなります。
void OnPublicationMetadataUpdated(core::interface::Publication *publication, const std::string &metadata) override
PublicationのMetadataが更新された時に発生するイベント
std::vector< std::unique_ptr< interface::RoomMember > > Members() override
Roomインスタンスに紐づくRoomMemberの一覧を取得します。
bool Close() override
Roomを閉じます。
boost::optional< std::string > Name() override
Nameを取得します。
void AddEventListener(interface::Room::EventListener *listener) override
イベントを購読します。
void OnMemberListChanged() override
Member が入退出したときに発生するイベント
core::interface::ChannelState State() override
Stateを取得します。
bool UpdateMetadata(const std::string &metadata) override
Metadataを更新します。
void OnMemberJoined(core::interface::Member *member) override
ChannelにMemberが参加した時に発生するイベント
std::vector< std::unique_ptr< interface::RoomSubscription > > Subscriptions() override
Roomインスタンスに紐づくSubscriptionの一覧を取得します。
void OnStreamPublished(core::interface::Publication *publication) override
StreamがPublishされた時に発生するイベント
void OnSubscriptionListChanged() override
StreamがSubscribeまたはUnsubscribeされた時に発生するイベント
イベントリスナ
Definition room.hpp:80
Roomの操作を行うインターフェース
Definition room.hpp:77
RoomMemberの操作を行うインターフェース
Definition room_member.hpp:23