SkyWay Linux SDK
読み取り中…
検索中…
一致する文字列を見つけられません
room_domain_factory.hpp
1#ifndef SKYWAY_ROOM_ABSTRACT_ROOM_DOMAIN_FACTORY_HPP
2#define SKYWAY_ROOM_ABSTRACT_ROOM_DOMAIN_FACTORY_HPP
3
4#include <mutex>
5
6#include "skyway/room/interface/room_domain_factory.hpp"
7
8namespace skyway {
9namespace room {
10namespace abstract {
11
13class RoomDomainFactory : public interface::RoomDomainFactory {
14public:
15 void SetWeakRoom(std::weak_ptr<interface::Room> room) override;
16
17 std::shared_ptr<interface::RoomMember> GetOrCreateRoomMember(
18 std::shared_ptr<core::interface::Member> core) override;
19
20 std::shared_ptr<interface::RemoteRoomMember> GetOrCreateRemoteRoomMember(
21 std::shared_ptr<plugin::remote_person::RemotePerson> person) override;
22
23 std::shared_ptr<interface::RoomPublication> GetOrCreateRoomPublication(
24 std::shared_ptr<core::interface::Publication> core,
25 std::shared_ptr<media::stream::interface::local::LocalStream> stream = nullptr) override;
26
27 std::shared_ptr<interface::RoomSubscription> GetOrCreateRoomSubscription(
28 std::shared_ptr<core::interface::Subscription> core) override;
29
30protected:
31 std::weak_ptr<interface::Room> GetWeakRoom();
32
33private:
34 std::weak_ptr<interface::Room> room_;
35 std::mutex remote_room_member_mtx_;
36 std::mutex room_publication_mtx_;
37 std::mutex room_subscription_mtx_;
38};
40
41} // namespace abstract
42} // namespace room
43} // namespace skyway
44
45#endif /* SKYWAY_ROOM_ABSTRACT_ROOM_DOMAIN_FACTORY_HPP */