SkyWay for Linux
読み取り中…
検索中…
一致する文字列を見つけられません
local_person.hpp
1//
2// local_person.hpp
3// skyway
4//
5// Created by Naoto Takahashi on 2023/08/04.
6// Copyright © 2023 NTT Communications. All rights reserved.
7//
8
9#ifndef SKYWAY_CORE_INTERFACE_LOCAL_PERSON_HPP_
10#define SKYWAY_CORE_INTERFACE_LOCAL_PERSON_HPP_
11
12#include "skyway/analytics/interface/analytics_client.hpp"
13#include "skyway/core/interface/chunk_messenger.hpp"
14#include "skyway/core/interface/local_stream.hpp"
15#include "skyway/core/interface/publication.hpp"
16#include "skyway/core/interface/remote_member.hpp"
17
18namespace skyway {
19namespace core {
20namespace interface {
21
23class LocalPerson : public Member {
24public:
27 public:
29 virtual void OnStreamPublished(Publication* publication) {}
31 virtual void OnStreamUnpublished(Publication* publication) {}
34 virtual void OnPublicationSubscribed(Subscription* subscription) {}
36 virtual void OnPublicationUnsubscribed(Subscription* subscription) {}
37 };
41 boost::optional<std::string> metadata;
43 std::vector<model::Codec> codec_capabilities;
45 std::vector<model::Encoding> encodings;
48
50 };
56 boost::optional<std::string> preferred_encoding_id;
58 };
59 virtual ~LocalPerson() = default;
60
62 virtual ChunkMessenger* Messenger() const = 0;
63
64 virtual analytics::interface::AnalyticsClient* AnalyticsClient() const = 0;
66
70 virtual Publication* Publish(std::shared_ptr<LocalStream> stream,
71 PublicationOptions options) = 0;
72
76 virtual Subscription* Subscribe(const std::string& publication_id,
77 const SubscriptionOptions& options) = 0;
78
81 virtual bool Unpublish(const std::string& publication_id) const = 0;
82
85 virtual bool Unsubscribe(const std::string& subscription_id) const = 0;
86
88 // These event functions are invoked by local person's action after receiving success message
89 // from RTC-API server
90 virtual void OnPublished(Publication* publication) = 0;
91 virtual void OnUnpublished(Publication* publication) = 0;
92 virtual void OnSubscribed(Subscription* subscription, RemoteMember* publisher) = 0;
93 virtual void OnUnsubscribed(Subscription* subscription, RemoteMember* publisher) = 0;
94
95 // These event functions are invoked by remote member
96 virtual void OnPublicationSubscribedByRemoteMember(Subscription* subscription,
97 RemoteMember* subscriber) = 0;
98 virtual void OnPublicationUnsubscribedByRemoteMember(Subscription* subscription,
99 RemoteMember* subscriber) = 0;
100
103 virtual void Dispose() = 0;
105
106protected:
107 LocalPerson(Channel* channel, const model::Member& dto);
108};
109
110} // namespace interface
111} // namespace core
112} // namespace skyway
113
114#endif /* SKYWAY_CORE_INTERFACE_LOCAL_PERSON_HPP_ */
Channelのインターフェース
Definition channel.hpp:28
イベントリスナ
Definition local_person.hpp:26
virtual void OnStreamPublished(Publication *publication)
このLocalPersonがPublishした時に発火するイベント
Definition local_person.hpp:29
virtual void OnPublicationUnsubscribed(Subscription *subscription)
このLocalPersonがUnsubscribeした時に発火するイベント
Definition local_person.hpp:36
virtual void OnPublicationSubscribed(Subscription *subscription)
このLocalPersonがSubscribeした時に発火するイベント
Definition local_person.hpp:34
virtual void OnStreamUnpublished(Publication *publication)
このLocalPersonがUnpublishした時に発火するイベント
Definition local_person.hpp:31
LocalPersonのインターフェース
Definition local_person.hpp:23
virtual Subscription * Subscribe(const std::string &publication_id, const SubscriptionOptions &options)=0
公開されているPublicationを購読します。
virtual bool Unsubscribe(const std::string &subscription_id) const =0
購読しているSubscriptionの購読を解除します。
virtual Publication * Publish(std::shared_ptr< LocalStream > stream, PublicationOptions options)=0
Streamを公開します。
virtual bool Unpublish(const std::string &publication_id) const =0
公開しているPublicationを非公開にします。
イベントリスナ
Definition member.hpp:35
LocalPersonおよびRemoteMemberの基底クラス
Definition member.hpp:32
Publicationのインターフェース
Definition publication.hpp:29
このSDK以外で生成されたメンバ
Definition remote_member.hpp:32
Subscriptionのインターフェース
Definition subscription.hpp:27
PublishでPublicationに対して指定するオプション
Definition local_person.hpp:39
std::vector< model::Encoding > encodings
エンコーディング設定
Definition local_person.hpp:45
boost::optional< std::string > metadata
metadata
Definition local_person.hpp:41
bool is_enabled
Publish時の公開状態
Definition local_person.hpp:47
std::vector< model::Codec > codec_capabilities
コーデック一覧
Definition local_person.hpp:43
SubscribeでSubscriptionに対して指定するオプション
Definition local_person.hpp:52
bool is_enabled
Subscribe時の購読状態
Definition local_person.hpp:54
boost::optional< std::string > preferred_encoding_id
優先エンコーディングID
Definition local_person.hpp:56
メンバー情報
Definition domain.hpp:54