SkyWay Linux SDK
読み取り中…
検索中…
一致する文字列を見つけられません
local_room_member.hpp
1#ifndef SKYWAY_ROOM_ABSTRACT_LOCAL_ROOM_MEMBER_HPP
2#define SKYWAY_ROOM_ABSTRACT_LOCAL_ROOM_MEMBER_HPP
3
4#include <mutex>
5
6#include <skyway/core/interface/local_person.hpp>
7
8#include "skyway/room/abstract/room_member.hpp"
9#include "skyway/room/interface/local_room_member.hpp"
10#include "skyway/room/interface/room_domain_factory.hpp"
11
12namespace skyway {
13namespace room {
14namespace abstract {
15
18public:
19 virtual ~LocalRoomMember();
20
23
26
27protected:
29 class CoreEventListenerAdapter : public core::interface::LocalPerson::EventListener {
30 public:
31 CoreEventListenerAdapter(LocalRoomMember* outer);
32 void OnStreamPublished(std::shared_ptr<core::interface::Publication> publication) override;
33 void OnStreamUnpublished(
34 std::shared_ptr<core::interface::Publication> publication) override;
35 void OnPublicationSubscribed(
36 std::shared_ptr<core::interface::Subscription> subscription) override;
37 void OnPublicationUnsubscribed(
38 std::shared_ptr<core::interface::Subscription> subscription) override;
39 void OnLeft() override;
40 void OnMetadataUpdated(const std::string& metadata) override;
41 void OnPublicationListChanged() override;
42 void OnSubscriptionListChanged() override;
43
44 private:
45 LocalRoomMember* outer_;
46 };
47
48 LocalRoomMember(std::shared_ptr<core::interface::LocalPerson> core,
49 std::shared_ptr<interface::Room> room,
50 interface::RoomDomainFactory* factory);
51
52 core::interface::LocalPerson::PublicationOptions ConvertToCorePublicationOptions(
54 core::interface::LocalPerson::SubscriptionOptions ConvertToCoreSubscriptionOptions(
56 model::PublicationType ConvertToCorePublicationType(domain::PublicationType type);
58
59private:
60 void OnStreamPublished(std::shared_ptr<core::interface::Publication> publication);
61 void OnStreamUnpublished(std::shared_ptr<core::interface::Publication> publication);
62 void OnPublicationSubscribed(std::shared_ptr<core::interface::Subscription> subscription);
63 void OnPublicationUnsubscribed(std::shared_ptr<core::interface::Subscription> subscription);
64 void OnLeft();
65 void OnMetadataUpdated(const std::string& metadata);
66 void OnPublicationListChanged();
67 void OnSubscriptionListChanged();
68
69 std::unique_ptr<CoreEventListenerAdapter> core_event_listener_adapter_;
70 std::mutex listener_mtx_;
72};
73
74} // namespace abstract
75} // namespace room
76} // namespace skyway
77
78#endif /* SKYWAY_ROOM_ABSTRACT_LOCAL_ROOM_MEMBER_HPP */
LocalRoomMemberの操作を行う抽象クラス
Definition local_room_member.hpp:17
void AddEventListener(interface::LocalRoomMember::EventListener *listener) override
イベントの購読します。
void RemoveEventListener(interface::LocalRoomMember::EventListener *listener) override
イベントの購読を中止します。
RoomMemberの操作を行う抽象クラス
Definition room_member.hpp:13
イベントリスナ
Definition local_room_member.hpp:21
LocalRoomMemberの操作を行うインターフェース
Definition local_room_member.hpp:18
PublicationType
Publicationの通信方式
Definition domain.hpp:19
Publish時の設定
Definition local_room_member.hpp:42
Subscribe時の設定
Definition local_room_member.hpp:61