5#ifndef SKYWAY_MODEL_DOMAIN_HPP_
6#define SKYWAY_MODEL_DOMAIN_HPP_
14enum class Side { kLocal, kRemote };
15enum class MemberType { kPerson, kBot };
16enum class PublicationType { kP2P, kSFU };
17enum class ContentType { kAudio, kVideo, kData };
19std::string ToString(Side side);
20std::string ToString(MemberType type);
21std::string ToString(PublicationType type);
22std::string ToString(ContentType type);
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);
33 std::optional<bool> use_dtx;
44 std::optional<std::string>
id;
61 std::optional<std::string>
name;
72 std::optional<std::string>
name;
81 Member(
const std::string&
id,
const std::optional<std::string>&
name,
const Init& init) {
93 std::string channel_id;
94 std::string publisher_id;
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 = {};
109 PublicationType type;
121 Publication(
const std::string&
id,
const Init& init) {
137 std::string channel_id;
138 std::string publication_id;
139 std::string subscriber_id;
164 std::optional<std::string>
name;
171 std::optional<std::string>
name;
173 std::optional<std::string>
id;
178 std::optional<std::string>
name;
199 std::unordered_map<std::string, nlohmann::json>
params;
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);
218void to_json(nlohmann::json& j,
const Codec& codec);
219void to_json(nlohmann::json& j,
const Encoding& encoding);
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
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