9#ifndef SKYWAY_CORE_INTERFACE_MEMBER_HPP_
10#define SKYWAY_CORE_INTERFACE_MEMBER_HPP_
13#include <boost/optional.hpp>
16#include <unordered_set>
18#include "skyway/model/domain.hpp"
29enum class MemberState { kJoined, kLeft };
61 std::string
Id()
const;
63 boost::optional<std::string>
Name()
const;
67 model::MemberType
Type()
const;
81 virtual void OnLeft();
82 void OnMetadataUpdated(
const std::string& metadata);
83 virtual void OnPublicationListChanged();
84 virtual void OnSubscriptionListChanged();
94 std::mutex listeners_mtx_;
95 std::unordered_set<EventListener*> listeners_;
96 std::atomic<bool> metadata_updated_;
Channelのインターフェース
Definition channel.hpp:28
イベントリスナ
Definition member.hpp:35
virtual void OnSubscriptionListChanged()
MemberのSubscriptionの一覧が更新した時に発火するイベント
Definition member.hpp:44
virtual void OnLeft()
MemberがChannelから退出した時に発火するイベント
Definition member.hpp:38
virtual void OnPublicationListChanged()
MemberのPublicationの一覧が更新した時に発火するイベント
Definition member.hpp:42
virtual void OnMetadataUpdated(const std::string &metadata)
MemberのMetadataが更新した時に発火するイベント
Definition member.hpp:40
LocalPersonおよびRemoteMemberの基底クラス
Definition member.hpp:32
MemberState State() const
State(Memberの入室状態)を取得します。
std::vector< Subscription * > Subscriptions() const
自身が持つ全てのSubscriptionを取得します。
boost::optional< std::string > Metadata() const
Metadataを取得します。
bool UpdateMetadata(const std::string &metadata)
Metadataを更新します
bool Leave()
Channelから退室します。
std::string Subtype() const
Subtypeを取得します。
model::MemberType Type() const
MemberTypeを取得します。
std::vector< Publication * > Publications() const
自身が持つ全てのPublicationを取得します。
boost::optional< std::string > Name() const
Nameを取得します。
void AddEventListener(EventListener *listener)
イベントを購読します。
void RemoveEventListener(EventListener *listener)
イベントの購読を中止します。
model::Side Side() const
Side(LocalかRemoteか)を取得します。
std::string Id() const
Idを取得します。
メンバー情報
Definition domain.hpp:54