1#ifndef SKYWAY_ROOM_ABSTRACT_ROOM_DOMAIN_FACTORY_HPP
2#define SKYWAY_ROOM_ABSTRACT_ROOM_DOMAIN_FACTORY_HPP
6#include "skyway/room/interface/room_domain_factory.hpp"
13class RoomDomainFactory :
public interface::RoomDomainFactory {
15 void SetWeakRoom(std::weak_ptr<interface::Room> room)
override;
17 std::shared_ptr<interface::RoomMember> GetOrCreateRoomMember(
18 std::shared_ptr<core::interface::Member> core)
override;
20 std::shared_ptr<interface::RemoteRoomMember> GetOrCreateRemoteRoomMember(
21 std::shared_ptr<plugin::remote_person::RemotePerson> person)
override;
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;
27 std::shared_ptr<interface::RoomSubscription> GetOrCreateRoomSubscription(
28 std::shared_ptr<core::interface::Subscription> core)
override;
31 std::weak_ptr<interface::Room> GetWeakRoom();
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_;