SkyWay for Linux
読み取り中…
検索中…
一致する文字列を見つけられません
publication.hpp
1//
2// publication.hpp
3// skyway
4//
5// Created by sandabu on 2022/01/12.
6// Copyright © 2022 NTT Communications. All rights reserved.
7//
8
9#ifndef SKYWAY_CORE_PUBLICATION_HPP_
10#define SKYWAY_CORE_PUBLICATION_HPP_
11
12#include "skyway/core/interface/channel.hpp"
13#include "skyway/core/interface/local_stream.hpp"
14
15namespace skyway {
16namespace core {
17
20public:
22 Publication(interface::Channel* channel, const model::Publication& initial_dto);
25
28
30 void AddInternalListener(InternalListener* listener) override;
31 void RemoveInternalListener(InternalListener* listener) override;
33
34 std::string Id() const override;
35 interface::Member* Publisher() const override;
36 std::vector<interface::Subscription*> Subscriptions() const override;
37 model::ContentType ContentType() const override;
38 boost::optional<std::string> Metadata() const override;
39 interface::Publication* Origin() const override;
40 std::vector<model::Codec> CodecCapabilities() const override;
41 std::vector<model::Encoding> Encodings() const override;
42 interface::PublicationState State() override;
43
44 std::shared_ptr<interface::LocalStream> Stream() const override;
45
46 bool UpdateMetadata(const std::string& metadata) override;
47 void UpdateEncodings(std::vector<model::Encoding> encodings) override;
48 bool ReplaceStream(std::shared_ptr<interface::LocalStream> stream) override;
49 bool Cancel() const override;
50 bool Enable() override;
51 bool Disable() const override;
52
53 boost::optional<model::WebRTCStats> GetStats(const std::string& selector) override;
55 void AddGetStatsCallback(const std::string& remote_member_id, Callback* callback) override;
56 void RemoveGetStatsCallback(const std::string& remote_member_id) override;
57
58 void SetCodecCapabilities(std::vector<model::Codec> codec_capabilities) override;
59 void SetEncodings(std::vector<model::Encoding> encodings) override;
60 void SetStream(std::shared_ptr<interface::LocalStream> stream) override;
61 bool IsEnabling() override;
62 void Dispose() override;
63
64 void OnUnpublished() override;
65 void OnSubscribed(interface::Subscription* subscription) override;
66 void OnUnsubscribed(interface::Subscription* subscription) override;
67 void OnMetadataUpdated(const std::string& metadata) override;
68 void OnEnabled() override;
69 void OnDisabled() override;
70 void OnConnectionStateChanged(const ConnectionState new_state) override;
72
73private:
74 interface::Channel* channel_;
75 model::Publication initial_dto_;
76 std::atomic<interface::PublicationState> state_;
77 std::vector<model::Codec> codec_capabilities_;
78 std::vector<model::Encoding> encodings_;
79
80 std::shared_ptr<interface::LocalStream> stream_;
81
82 std::mutex listeners_mtx_;
83 std::mutex internal_listeners_mtx_;
84 std::unordered_set<interface::Publication::EventListener*> listeners_;
85 std::unordered_set<interface::Publication::InternalListener*> internal_listeners_;
86 std::atomic<bool> metadata_updated_;
87 bool is_enabling_;
88 std::mutex get_stats_callback_mutex_;
89 std::unordered_map<std::string, Callback*> get_stats_callbacks_;
90};
91
92} // namespace core
93} // namespace skyway
94
95#endif /* SKYWAY_CORE_PUBLICATION_HPP_ */
Publicationの実装クラス
Definition publication.hpp:19
interface::PublicationState State() override
State(公開状態がEnableかDisabelかCancelか)を取得します。
std::vector< model::Encoding > Encodings() const override
このPublicationのエンコーディング設定の一覧を取得します。
void RemoveEventListener(interface::Publication::EventListener *listener) override
イベントの購読を中止します。
void UpdateEncodings(std::vector< model::Encoding > encodings) override
エンコーディング設定を更新します。
model::ContentType ContentType() const override
ContentType(VideoかAudioかDataか)を取得します。
boost::optional< model::WebRTCStats > GetStats(const std::string &selector) override
統計情報を取得します。
bool Disable() const override
Publicationの公開を一時停止します。
std::shared_ptr< interface::LocalStream > Stream() const override
Publisherが持つStreamを取得します。
interface::Publication * Origin() const override
このPublicationのOriginを取得します。
bool Cancel() const override
Publishを中止します。
bool Enable() override
Publicationの公開を開始します。disableによって停止していた場合は再開します。
std::vector< interface::Subscription * > Subscriptions() const override
このPublicationを購読しているSubsciptionの一覧を取得します。
bool UpdateMetadata(const std::string &metadata) override
Metadataを更新します。
std::vector< model::Codec > CodecCapabilities() const override
このPublicationのコーデック一覧を取得します。
interface::Member * Publisher() const override
このPublicationをPublishしているMemberを取得します。
void AddEventListener(interface::Publication::EventListener *listener) override
イベントを購読します。
boost::optional< std::string > Metadata() const override
Metadataを取得します。
std::string Id() const override
Idを取得します。
Channelのインターフェース
Definition channel.hpp:28
LocalPersonおよびRemoteMemberの基底クラス
Definition member.hpp:32
イベントリスナ
Definition publication.hpp:32
Publicationのインターフェース
Definition publication.hpp:29
Subscriptionのインターフェース
Definition subscription.hpp:27
Publication情報
Definition domain.hpp:92