5#ifndef SKYWAY_CORE_INTERFACE_MEMBER_HPP_
6#define SKYWAY_CORE_INTERFACE_MEMBER_HPP_
11#include <unordered_set>
13#include "skyway/model/domain.hpp"
24enum class MemberState { kJoined, kLeft };
27class Member:
public std::enable_shared_from_this<Member> {
56 std::string
Id()
const;
58 std::optional<std::string>
Name()
const;
62 model::MemberType
Type()
const;
71 std::vector<std::shared_ptr<interface::Publication>>
Publications()
const;
73 std::vector<std::shared_ptr<interface::Subscription>>
Subscriptions()
const;
76 virtual void OnLeft();
77 void OnMetadataUpdated(
const std::string& metadata);
78 virtual void OnPublicationListChanged();
79 virtual void OnSubscriptionListChanged();
83 Member(std::shared_ptr<interface::Channel> channel,
const model::Member& initial_dto,
const model::Side& side);
85 std::weak_ptr<interface::Channel> channel_;
89 std::mutex listeners_mtx_;
90 std::unordered_set<EventListener*> listeners_;
91 std::atomic<bool> metadata_updated_;
イベントリスナ
Definition member.hpp:30
virtual void OnSubscriptionListChanged()
MemberのSubscriptionの一覧が更新した時に発火するイベント
Definition member.hpp:39
virtual void OnLeft()
MemberがChannelから退出した時に発火するイベント
Definition member.hpp:33
virtual void OnPublicationListChanged()
MemberのPublicationの一覧が更新した時に発火するイベント
Definition member.hpp:37
virtual void OnMetadataUpdated(const std::string &metadata)
MemberのMetadataが更新した時に発火するイベント
Definition member.hpp:35
LocalPersonおよびRemoteMemberの基底クラス
Definition member.hpp:27
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:53