SkyWay Linux SDK
読み取り中…
検索中…
一致する文字列を見つけられません
local_person.hpp
1//
2// © NTT DOCOMO BUSINESS, Inc. All Rights Reserved.
3//
4
5#ifndef SKYWAY_CORE_INTERFACE_LOCAL_PERSON_HPP_
6#define SKYWAY_CORE_INTERFACE_LOCAL_PERSON_HPP_
7
8#include "skyway/analytics/interface/analytics_client.hpp"
9#include "skyway/core/interface/chunk_messenger.hpp"
10#include "skyway/core/interface/local_stream.hpp"
11#include "skyway/core/interface/publication.hpp"
12#include "skyway/core/interface/remote_member.hpp"
13
14namespace skyway {
15namespace core {
16namespace interface {
17
19class LocalPerson : public Member {
20public:
23 public:
25 virtual void OnStreamPublished(std::shared_ptr<interface::Publication> publication) {}
27 virtual void OnStreamUnpublished(std::shared_ptr<interface::Publication> publication) {}
30 virtual void OnPublicationSubscribed(std::shared_ptr<interface::Subscription> subscription) {}
32 virtual void OnPublicationUnsubscribed(std::shared_ptr<interface::Subscription> subscription) {}
33 };
37 std::optional<std::string> metadata;
39 std::vector<model::Codec> codec_capabilities;
41 std::vector<model::Encoding> encodings;
44 model::PublicationType type;
45
46 PublicationOptions(bool is_enabled = true, model::PublicationType type = model::PublicationType::kP2P)
47 : is_enabled(is_enabled), type(type) {}
48 };
54 std::optional<std::string> preferred_encoding_id;
56 };
57 virtual ~LocalPerson() = default;
58
60 virtual ChunkMessenger* Messenger() const = 0;
61
62 virtual analytics::interface::AnalyticsClient* AnalyticsClient() const = 0;
64
68 virtual std::shared_ptr<interface::Publication> Publish(std::shared_ptr<LocalStream> stream,
69 PublicationOptions options) = 0;
70
74 virtual std::shared_ptr<interface::Subscription> Subscribe(const std::string& publication_id,
75 const SubscriptionOptions& options) = 0;
76
79 virtual bool Unpublish(const std::string& publication_id) const = 0;
80
83 virtual bool Unsubscribe(const std::string& subscription_id) const = 0;
84
86 // These event functions are invoked by local person's action after receiving success message
87 // from RTC-API server
88 virtual void OnPublished(std::shared_ptr<interface::Publication> publication) = 0;
89 virtual void OnUnpublished(std::shared_ptr<interface::Publication> publication) = 0;
90 virtual void OnSubscribed(std::shared_ptr<interface::Subscription> subscription, std::shared_ptr<interface::RemoteMember> publisher) = 0;
91 virtual void OnUnsubscribed(std::shared_ptr<interface::Subscription> subscription, std::shared_ptr<interface::RemoteMember> publisher) = 0;
92
93 // These event functions are invoked by remote member
94 virtual void OnPublicationSubscribedByRemoteMember(std::shared_ptr<interface::Subscription> subscription,
95 std::shared_ptr<interface::RemoteMember> subscriber) = 0;
96 virtual void OnPublicationUnsubscribedByRemoteMember(std::shared_ptr<interface::Subscription> subscription,
97 std::shared_ptr<interface::RemoteMember> subscriber) = 0;
98
101 virtual void Dispose() = 0;
103
104protected:
105 LocalPerson(std::shared_ptr<interface::Channel> channel, const model::Member& dto);
106};
107
108} // namespace interface
109} // namespace core
110} // namespace skyway
111
112#endif /* SKYWAY_CORE_INTERFACE_LOCAL_PERSON_HPP_ */
イベントリスナ
Definition local_person.hpp:22
virtual void OnStreamUnpublished(std::shared_ptr< interface::Publication > publication)
このLocalPersonがUnpublishした時に発火するイベント
Definition local_person.hpp:27
virtual void OnPublicationUnsubscribed(std::shared_ptr< interface::Subscription > subscription)
このLocalPersonがUnsubscribeした時に発火するイベント
Definition local_person.hpp:32
virtual void OnStreamPublished(std::shared_ptr< interface::Publication > publication)
このLocalPersonがPublishした時に発火するイベント
Definition local_person.hpp:25
virtual void OnPublicationSubscribed(std::shared_ptr< interface::Subscription > subscription)
このLocalPersonがSubscribeした時に発火するイベント
Definition local_person.hpp:30
LocalPersonのインターフェース
Definition local_person.hpp:19
virtual bool Unsubscribe(const std::string &subscription_id) const =0
購読しているSubscriptionの購読を解除します。
virtual std::shared_ptr< interface::Publication > Publish(std::shared_ptr< LocalStream > stream, PublicationOptions options)=0
Streamを公開します。
virtual std::shared_ptr< interface::Subscription > Subscribe(const std::string &publication_id, const SubscriptionOptions &options)=0
公開されているPublicationを購読します。
virtual bool Unpublish(const std::string &publication_id) const =0
公開しているPublicationを非公開にします。
イベントリスナ
Definition member.hpp:30
LocalPersonおよびRemoteMemberの基底クラス
Definition member.hpp:27
PublishでPublicationに対して指定するオプション
Definition local_person.hpp:35
std::vector< model::Encoding > encodings
エンコーディング設定
Definition local_person.hpp:41
std::optional< std::string > metadata
metadata
Definition local_person.hpp:37
bool is_enabled
Publish時の公開状態
Definition local_person.hpp:43
std::vector< model::Codec > codec_capabilities
コーデック一覧
Definition local_person.hpp:39
SubscribeでSubscriptionに対して指定するオプション
Definition local_person.hpp:50
bool is_enabled
Subscribe時の購読状態
Definition local_person.hpp:52
std::optional< std::string > preferred_encoding_id
優先エンコーディングID
Definition local_person.hpp:54
メンバー情報
Definition domain.hpp:53