SkyWay Linux SDK
読み取り中…
検索中…
一致する文字列を見つけられません
domain.hpp
1//
2// © NTT DOCOMO BUSINESS, Inc. All Rights Reserved.
3//
4
5#ifndef SKYWAY_MODEL_DOMAIN_HPP_
6#define SKYWAY_MODEL_DOMAIN_HPP_
7
8#include <optional>
9#include <json.hpp>
10
11namespace skyway {
12namespace model {
13
14enum class Side { kLocal, kRemote };
15enum class MemberType { kPerson, kBot };
16enum class PublicationType { kP2P, kSFU };
17enum class ContentType { kAudio, kVideo, kData };
18
19std::string ToString(Side side);
20std::string ToString(MemberType type);
21std::string ToString(PublicationType type);
22std::string ToString(ContentType type);
23
24std::optional<Side> ToSide(const std::string& side);
25std::optional<MemberType> ToMemberType(const std::string& type);
26std::optional<PublicationType> ToPublicationType(const std::string& type);
27std::optional<ContentType> ToContentType(const std::string& type);
28
30struct Codec {
32 struct Parameters {
33 std::optional<bool> use_dtx;
34 };
36 std::string mime_type;
39};
40
42struct Encoding {
44 std::optional<std::string> id;
46 std::optional<int> max_bitrate;
48 std::optional<double> scale_resolution_down_by;
50 std::optional<double> max_framerate;
51};
53struct Member {
55 struct Init {
57 MemberType type;
59 std::string subtype;
61 std::optional<std::string> name;
63 std::optional<std::string> metadata;
65 std::optional<int> keepalive_interval_sec;
67 std::optional<int> keepalive_interval_gap_sec;
68 };
70 std::string id;
72 std::optional<std::string> name;
74 MemberType type;
76 std::string subtype;
78 std::optional<std::string> metadata;
79 // the `name` can be retrieved from `init` but set the value returned by server.
80 Member() {}
81 Member(const std::string& id, const std::optional<std::string>& name, const Init& init) {
82 this->id = id;
83 this->name = name;
84 type = init.type;
85 subtype = init.subtype;
86 metadata = init.metadata;
87 }
88};
89
92 struct Init {
93 std::string channel_id;
94 std::string publisher_id;
95 PublicationType type;
96 ContentType content_type;
97 std::optional<std::string> origin;
98 std::optional<std::string> metadata;
99 std::vector<Codec> codec_capabilities = {};
100 std::vector<Encoding> encodings = {};
101 bool is_enabled;
102 };
104 std::string id;
106 std::string publisher_id;
108 std::optional<std::string> origin;
109 PublicationType type;
111 ContentType content_type;
113 std::optional<std::string> metadata;
115 std::vector<Codec> codec_capabilities;
117 std::vector<Encoding> encodings;
120 Publication() {}
121 Publication(const std::string& id, const Init& init) {
122 this->id = id;
123 publisher_id = init.publisher_id;
124 origin = init.origin;
125 type = init.type;
126 content_type = init.content_type;
127 metadata = init.metadata;
128 codec_capabilities = init.codec_capabilities;
129 encodings = init.encodings;
130 is_enabled = init.is_enabled;
131 }
132};
133
136 struct Init {
137 std::string channel_id;
138 std::string publication_id;
139 std::string subscriber_id;
140 bool is_enabled;
141 };
143 std::string id;
145 std::string publication_id;
147 std::string subscriber_id;
150 Subscription() {}
151 Subscription(const std::string& id, const Init& init) {
152 this->id = id;
153 publication_id = init.publication_id;
154 subscriber_id = init.subscriber_id;
155 is_enabled = init.is_enabled;
156 }
157};
158
160struct Channel {
162 struct Init {
164 std::optional<std::string> name;
166 std::optional<std::string> metadata;
167 };
169 struct Query {
171 std::optional<std::string> name;
173 std::optional<std::string> id;
174 };
176 std::string id;
178 std::optional<std::string> name;
180 std::optional<std::string> metadata;
182 std::vector<Member> members;
184 std::vector<Publication> publications;
186 std::vector<Subscription> subscriptions;
188 uint64_t version;
189};
190
193struct [[deprecated]] WebRTCStatsReport {
195 std::string id;
197 std::string type;
199 std::unordered_map<std::string, nlohmann::json> params;
200};
201
204struct [[deprecated]] WebRTCStats {
206 std::vector<WebRTCStatsReport> reports;
207};
208
209void from_json(const nlohmann::json& j, Codec& codec);
210void from_json(const nlohmann::json& j, Encoding& encoding);
211void from_json(const nlohmann::json& j, Channel& channel);
212void from_json(const nlohmann::json& j, Member& member);
213void from_json(const nlohmann::json& j, Publication& publication);
214void from_json(const nlohmann::json& j, Subscription& subscription);
216[[deprecated]] void from_json(const nlohmann::json& j, WebRTCStats& stats);
217
218void to_json(nlohmann::json& j, const Codec& codec);
219void to_json(nlohmann::json& j, const Encoding& encoding);
220
221} // namespace model
222} // namespace skyway
223
224#endif /* SKYWAY_MODEL_DOMAIN_HPP_ */
CreateもしくはFindOrCreateで指定する情報
Definition domain.hpp:162
std::optional< std::string > name
Channelの名前
Definition domain.hpp:164
std::optional< std::string > metadata
ChannelのMetadata
Definition domain.hpp:166
FindもしくはFindOrCreateで指定する情報
Definition domain.hpp:169
std::optional< std::string > name
Channelの名前
Definition domain.hpp:171
std::optional< std::string > id
ChannelのId
Definition domain.hpp:173
Channel情報
Definition domain.hpp:160
std::string id
Id
Definition domain.hpp:176
std::vector< Member > members
このChannelの存在するメンバーの一覧
Definition domain.hpp:182
std::optional< std::string > metadata
Metadata
Definition domain.hpp:180
std::vector< Subscription > subscriptions
このChannelの存在するSubscriptionの一覧
Definition domain.hpp:186
std::vector< Publication > publications
このChannelの存在するPublicationの一覧
Definition domain.hpp:184
uint64_t version
バージョン
Definition domain.hpp:188
std::optional< std::string > name
名前
Definition domain.hpp:178
Dtxオプションを適応するかのオプション
Definition domain.hpp:32
コーデック情報
Definition domain.hpp:30
std::string mime_type
mimetype
Definition domain.hpp:36
Parameters parameters
パラメーター
Definition domain.hpp:38
エンコーディング設定
Definition domain.hpp:42
std::optional< double > scale_resolution_down_by
解像度の倍率
Definition domain.hpp:48
std::optional< int > max_bitrate
最大ビットレート
Definition domain.hpp:46
std::optional< std::string > id
Id
Definition domain.hpp:44
std::optional< double > max_framerate
最大フレームレート
Definition domain.hpp:50
Join時に使用するメンバー情報
Definition domain.hpp:55
std::optional< std::string > metadata
Metadata
Definition domain.hpp:63
std::string subtype
サブタイプ
Definition domain.hpp:59
std::optional< std::string > name
名前
Definition domain.hpp:61
MemberType type
種類
Definition domain.hpp:57
std::optional< int > keepalive_interval_sec
生存確認の間隔
Definition domain.hpp:65
std::optional< int > keepalive_interval_gap_sec
生存確認の間隔を超えてChannelからMemberが削除されるまでの時間
Definition domain.hpp:67
メンバー情報
Definition domain.hpp:53
std::optional< std::string > metadata
Metadata
Definition domain.hpp:78
std::string subtype
サブタイプ
Definition domain.hpp:76
MemberType type
種類
Definition domain.hpp:74
std::string id
Id
Definition domain.hpp:70
std::optional< std::string > name
名前
Definition domain.hpp:72
Definition domain.hpp:92
Publication情報
Definition domain.hpp:91
std::string publisher_id
PublishしたメンバーのId
Definition domain.hpp:106
std::vector< Encoding > encodings
エンコーディング一覧
Definition domain.hpp:117
std::string id
Id
Definition domain.hpp:104
ContentType content_type
コンテンツの種類
Definition domain.hpp:111
std::optional< std::string > origin
Origin
Definition domain.hpp:108
std::vector< Codec > codec_capabilities
コーデック一覧
Definition domain.hpp:115
std::optional< std::string > metadata
Metadata
Definition domain.hpp:113
bool is_enabled
有効か無効か
Definition domain.hpp:119
Definition domain.hpp:136
Subscription情報
Definition domain.hpp:135
std::string publication_id
このSubscriptionに紐づくPublicationのId
Definition domain.hpp:145
std::string subscriber_id
このSubscriptionをSubscribeしているメンバーのId
Definition domain.hpp:147
std::string id
Id
Definition domain.hpp:143
bool is_enabled
有効か無効か
Definition domain.hpp:149
統計情報
Definition domain.hpp:204
std::vector< WebRTCStatsReport > reports
統計情報の一覧
Definition domain.hpp:206
統計情報の詳細
Definition domain.hpp:193
std::string id
Id
Definition domain.hpp:195
std::unordered_map< std::string, nlohmann::json > params
各パラメーターに対応するJson
Definition domain.hpp:199
std::string type
種類
Definition domain.hpp:197