9#ifndef SKYWAY_CORE_INTERFACE_MEMBER_HPP_
10#define SKYWAY_CORE_INTERFACE_MEMBER_HPP_
15#include <unordered_set>
17#include "skyway/model/domain.hpp"
28enum class MemberState { kJoined, kLeft };
31class Member:
public std::enable_shared_from_this<Member> {
60 std::string
Id()
const;
62 std::optional<std::string>
Name()
const;
66 model::MemberType
Type()
const;
75 std::vector<std::shared_ptr<interface::Publication>>
Publications()
const;
77 std::vector<std::shared_ptr<interface::Subscription>>
Subscriptions()
const;
80 virtual void OnLeft();
81 void OnMetadataUpdated(
const std::string& metadata);
82 virtual void OnPublicationListChanged();
83 virtual void OnSubscriptionListChanged();
87 Member(std::shared_ptr<interface::Channel> channel,
const model::Member& initial_dto,
const model::Side& side);
89 std::weak_ptr<interface::Channel> channel_;
93 std::mutex listeners_mtx_;
94 std::unordered_set<EventListener*> listeners_;
95 std::atomic<bool> metadata_updated_;
イベントリスナ
Definition member.hpp:34
virtual void OnSubscriptionListChanged()
MemberのSubscriptionの一覧が更新した時に発火するイベント
Definition member.hpp:43
virtual void OnLeft()
MemberがChannelから退出した時に発火するイベント
Definition member.hpp:37
virtual void OnPublicationListChanged()
MemberのPublicationの一覧が更新した時に発火するイベント
Definition member.hpp:41
virtual void OnMetadataUpdated(const std::string &metadata)
MemberのMetadataが更新した時に発火するイベント
Definition member.hpp:39
LocalPersonおよびRemoteMemberの基底クラス
Definition member.hpp:31
std::vector< std::shared_ptr< interface::Publication > > Publications() const
自身が持つ全てのPublicationを取得します。
MemberState State() const
State(Memberの入室状態)を取得します。
bool UpdateMetadata(const std::string &metadata)
Metadataを更新します
bool Leave()
Channelから退室します。
std::vector< std::shared_ptr< interface::Subscription > > Subscriptions() const
自身が持つ全てのSubscriptionを取得します。
std::optional< std::string > Name() const
Nameを取得します。
std::string Subtype() const
Subtypeを取得します。
model::MemberType Type() const
MemberTypeを取得します。
void AddEventListener(EventListener *listener)
イベントを購読します。
std::optional< std::string > Metadata() const
Metadataを取得します。
void RemoveEventListener(EventListener *listener)
イベントの購読を中止します。
model::Side Side() const
Side(LocalかRemoteか)を取得します。
std::string Id() const
Idを取得します。
メンバー情報
Definition domain.hpp:54