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