SkyWay Linux SDK
読み取り中…
検索中…
一致する文字列を見つけられません
member.hpp
1//
2// © NTT DOCOMO BUSINESS, Inc. All Rights Reserved.
3//
4
5#ifndef SKYWAY_CORE_INTERFACE_MEMBER_HPP_
6#define SKYWAY_CORE_INTERFACE_MEMBER_HPP_
7
8#include <atomic>
9#include <mutex>
10#include <string>
11#include <unordered_set>
12
13#include "skyway/model/domain.hpp"
14
15namespace skyway {
16namespace core {
17namespace interface {
18
19class Channel;
20class Publication;
21class Subscription;
22
24enum class MemberState { kJoined, kLeft };
25
27class Member: public std::enable_shared_from_this<Member> {
28public:
31 public:
33 virtual void OnLeft() {}
35 virtual void OnMetadataUpdated(const std::string& metadata) {}
37 virtual void OnPublicationListChanged() {}
39 virtual void OnSubscriptionListChanged() {}
40 };
41 virtual ~Member() = default;
42
49
51 bool UpdateMetadata(const std::string& metadata);
53 bool Leave();
54
56 std::string Id() const;
58 std::optional<std::string> Name() const;
60 std::optional<std::string> Metadata() const;
62 model::MemberType Type() const;
64 std::string Subtype() const;
66 model::Side Side() const;
68 MemberState State() const;
69
71 std::vector<std::shared_ptr<interface::Publication>> Publications() const;
73 std::vector<std::shared_ptr<interface::Subscription>> Subscriptions() const;
74
76 virtual void OnLeft();
77 void OnMetadataUpdated(const std::string& metadata);
78 virtual void OnPublicationListChanged();
79 virtual void OnSubscriptionListChanged();
81
82protected:
83 Member(std::shared_ptr<interface::Channel> channel, const model::Member& initial_dto, const model::Side& side);
84
85 std::weak_ptr<interface::Channel> channel_;
86 model::Member initial_dto_;
87 model::Side side_;
88 MemberState state_;
89 std::mutex listeners_mtx_;
90 std::unordered_set<EventListener*> listeners_;
91 std::atomic<bool> metadata_updated_;
92};
93
94} // namespace interface
95} // namespace core
96} // namespace skyway
97
98#endif /* SKYWAY_CORE_INTERFACE_MEMBER_HPP_ */
イベントリスナ
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