SkyWay Embedded SDK 0.1.0
読み取り中…
検索中…
一致する文字列を見つけられません
room.h
[詳解]
1//
2// © NTT DOCOMO BUSINESS, Inc. All Rights Reserved.
3//
4
5#pragma once
6
7#ifdef __cplusplus
8extern "C"
9{
10#endif
11
12#include <stdint.h>
13
14#include "member.h"
15#include "publication.h"
16#include "subscription.h"
17
18
20#define SKW_ROOM_ID_SIZE (36+1)
22#define SKW_ROOM_NAME_SIZE (128+1)
24#define SKW_ROOM_METADATA_SIZE (1024+1)
25
27#define SKW_ROOM_REMOTE_MEMBER_COUNT (2)
28
30#define SKW_ROOM_PERSON_COUNT (1 + SKW_ROOM_REMOTE_MEMBER_COUNT)
31
33#define SKW_ROOM_BOT_COUNT (1)
34
36#define SKW_ROOM_DATA_PUBLICATION_COUNT (2)
37
40#define SKW_ROOM_DATA_SUBSCRIPTION_COUNT (2)
41
43#define SKW_ROOM_MEMBER_DATA_COUNT (2)
44
46#define SKW_ROOM_MEMBER_PUBLICATION_COUNT (1 + 1 + SKW_ROOM_MEMBER_DATA_COUNT)
47
49#define SKW_ROOM_CAPACITY_MEMBERS (SKW_ROOM_PERSON_COUNT + SKW_ROOM_BOT_COUNT)
51#define SKW_ROOM_CAPACITY_PUBLICATIONS (SKW_ROOM_PERSON_COUNT * SKW_ROOM_MEMBER_PUBLICATION_COUNT)
54#define SKW_ROOM_CAPACITY_SUBSCRIPTIONS (SKW_ROOM_PERSON_COUNT * SKW_ROOM_REMOTE_MEMBER_COUNT * SKW_ROOM_MEMBER_PUBLICATION_COUNT)
55
57#define SKW_ROOM_JOIN_TTL_SEC_DEFAULT (30U)
58
88
104#define SKW_ROOM_CAPACITY_EXHAUSTED_MEMBERS (1u << 0)
106#define SKW_ROOM_CAPACITY_EXHAUSTED_PUBLICATIONS (1u << 1)
108#define SKW_ROOM_CAPACITY_EXHAUSTED_SUBSCRIPTIONS (1u << 2)
109
123
126typedef void (*skw_room_on_room_closed_t)(const char* room_id);
127
131typedef void (*skw_room_on_room_metadata_updated_t)(const char* room_id, const char* metadata);
132
136typedef void (*skw_room_on_member_joined_t)(const char* room_id, const char* member_id);
137
141typedef void (*skw_room_on_member_left_t)(const char* room_id, const char* member_id);
142
147typedef void (*skw_room_on_member_metadata_updated_t)(const char* room_id, const char* member_id, const char* metadata);
148
154typedef void (*skw_room_on_stream_published_t)(const char* room_id, const char* publication_id, const char* publisher_id,
156
161typedef void (*skw_room_on_stream_unpublished_t)(const char* room_id, const char* publication_id, const char* publisher_id);
162
167typedef void (*skw_room_on_publication_subscribed_t)(const char* room_id, const char* subscription_id, const char* member_id);
168
173typedef void (*skw_room_on_publication_unsubscribed_t)(const char* room_id, const char* subscription_id, const char* member_id);
174
179typedef void (*skw_room_on_publication_metadata_updated_t)(const char* room_id, const char* publication_id, const char* metadata);
180
194
196typedef struct {
197 const char* name;
198 const char* metadata;
200
202#define SKW_ROOM_CREATE_PARAMS_INIT(...) {__VA_ARGS__}
203
205typedef struct {
206 const char* id;
208
210#define SKW_ROOM_FIND_BY_ID_PARAMS_INIT(...) {__VA_ARGS__}
211
213typedef struct {
214 const char* name;
216
218#define SKW_ROOM_FIND_BY_NAME_PARAMS_INIT(...) {__VA_ARGS__}
219
221typedef struct {
222 const char* name;
223 const char* metadata;
225
227#define SKW_ROOM_FIND_OR_CREATE_PARAMS_INIT(...) {__VA_ARGS__}
228
230typedef struct {
231 const char* id;
232 const char* metadata;
234
236#define SKW_ROOM_UPDATE_METADATA_PARAMS_INIT(...) {__VA_ARGS__}
237
239typedef struct {
240 const char* id;
241 const char* name;
242 const char* metadata;
243 uint32_t ttl_sec;
245
247#define SKW_ROOM_JOIN_PARAMS_INIT(...) {__VA_ARGS__}
248
254
260
266
272
278
283
288
292
293#ifdef __cplusplus
294}
295#endif
Memberのメタデータ更新と退出。
Publicationのメタデータ更新・フレーム送信とイベントハンドラの登録。
skw_room_publication_content_type_t
Publicationのコンテンツ種別。
Definition publication.h:61
#define SKW_ROOM_CAPACITY_MEMBERS
Roomの取得結果として格納できるMember数の上限。Person MemberとSFU Botの合計。
Definition room.h:49
char skw_room_id_t[SKW_ROOM_ID_SIZE]
RoomIDを格納する文字列型(NUL終端を含む)。
Definition room.h:90
#define SKW_ROOM_CAPACITY_PUBLICATIONS
Roomの取得結果として格納できるPublication数の上限。全Person MemberがPublishできる本数の合計。
Definition room.h:51
skw_room_err_t skw_room_register_handlers(const skw_room_handlers_t *handlers)
Roomのイベント通知を受け取るハンドラを登録します。登録できる集合は単一で、再登録すると上書きされます。
skw_room_err_t skw_room_update_metadata(const skw_room_update_metadata_params_t *params)
RoomのMetadataを更新します。
skw_room_err_t skw_room_find_by_name(const skw_room_find_by_name_params_t *params, skw_room_data_field_t *data_fields)
NameでRoomを検索します。
void(* skw_room_on_stream_published_t)(const char *room_id, const char *publication_id, const char *publisher_id, skw_room_publication_content_type_t content_type)
StreamがPublishされたときに呼ばれます。
Definition room.h:154
skw_room_publication_data_field_t skw_room_publication_data_fields_t[SKW_ROOM_CAPACITY_PUBLICATIONS]
複数のPublicationの取得結果を受け取る出力先の配列型。
Definition room.h:98
char skw_room_metadata_t[SKW_ROOM_METADATA_SIZE]
RoomMetadataを格納する文字列型(NUL終端を含む)。
Definition room.h:94
void(* skw_room_on_room_metadata_updated_t)(const char *room_id, const char *metadata)
RoomのMetadataが更新されたときに呼ばれます。
Definition room.h:131
#define SKW_ROOM_NAME_SIZE
RoomNameを格納するバッファのサイズ(NUL終端を含む)。
Definition room.h:22
void(* skw_room_on_room_closed_t)(const char *room_id)
Roomが削除されたときに呼ばれます。
Definition room.h:126
skw_room_err_t skw_room_unregister_handlers(void)
登録済みのイベント通知ハンドラを解除します。
skw_room_err_t skw_room_create(const skw_room_create_params_t *params, skw_room_data_field_t *data_fields)
指定したパラメータでRoomを新規作成します。
char skw_room_name_t[SKW_ROOM_NAME_SIZE]
RoomNameを格納する文字列型(NUL終端を含む)。
Definition room.h:92
skw_room_err_t skw_room_find_by_id(const skw_room_find_by_id_params_t *params, skw_room_data_field_t *data_fields)
IDでRoomを検索します。
void(* skw_room_on_member_left_t)(const char *room_id, const char *member_id)
Memberが退出したときに呼ばれます。
Definition room.h:141
skw_room_err_t skw_room_find_or_create(const skw_room_find_or_create_params_t *params, skw_room_data_field_t *data_fields)
NameでRoomを検索し、存在しない場合は新規作成します。
void(* skw_room_on_member_joined_t)(const char *room_id, const char *member_id)
Memberが参加したときに呼ばれます。
Definition room.h:136
skw_room_member_data_field_t skw_room_member_data_fields_t[SKW_ROOM_CAPACITY_MEMBERS]
複数のMemberの取得結果を受け取る出力先の配列型。
Definition room.h:96
void(* skw_room_on_stream_unpublished_t)(const char *room_id, const char *publication_id, const char *publisher_id)
StreamがUnpublishされたときに呼ばれます。
Definition room.h:161
void(* skw_room_on_member_metadata_updated_t)(const char *room_id, const char *member_id, const char *metadata)
MemberのMetadataが更新されたときに呼ばれます。
Definition room.h:147
#define SKW_ROOM_METADATA_SIZE
RoomMetadataを格納するバッファのサイズ(NUL終端を含む)。
Definition room.h:24
#define SKW_ROOM_ID_SIZE
RoomIDを格納するバッファのサイズ(NUL終端を含む)。
Definition room.h:20
void(* skw_room_on_publication_unsubscribed_t)(const char *room_id, const char *subscription_id, const char *member_id)
PublicationがUnsubscribeされたときに呼ばれます。
Definition room.h:173
skw_room_subscription_data_field_t skw_room_subscription_data_fields_t[SKW_ROOM_CAPACITY_SUBSCRIPTIONS]
複数のSubscriptionの取得結果を受け取る出力先の配列型。
Definition room.h:100
uint32_t skw_room_capacity_exhaustion_flags_t
各リソースの上限超過をビットで示すフラグ。
Definition room.h:102
#define SKW_ROOM_CAPACITY_SUBSCRIPTIONS
Roomの取得結果として格納できるSubscription数の上限。各Person Memberが自分以外のPublicationを すべてSubscribeした場合の合計。
Definition room.h:54
skw_room_err_t skw_room_join(const skw_room_join_params_t *params, skw_room_member_data_field_t *data_fields)
指定したRoomにLocalPersonとしてJoinします。
skw_room_err_t
Room APIのエラーコード。
Definition room.h:60
@ SKW_ROOM_ERR_MUTEX_UNLOCK_FAILED
Room APIのアンロックに失敗
Definition room.h:67
@ SKW_ROOM_ERR_FORBIDDEN
必要な権限が無い
Definition room.h:80
@ SKW_ROOM_ERR_RESPONSE_PARSE_FAILED
応答の解析に失敗した
Definition room.h:74
@ SKW_ROOM_ERR_CONNECTION_FAILED
サーバーとの接続の確立に失敗
Definition room.h:75
@ SKW_ROOM_ERR_REQUEST_FAILED
リクエストの実行に失敗
Definition room.h:66
@ SKW_ROOM_ERR_CONTEXT_NOT_SETUP
Contextがセットアップされていない
Definition room.h:65
@ SKW_ROOM_ERR_RESPONSE_TOO_LARGE
応答が受信バッファのサイズを超過した
Definition room.h:73
@ SKW_ROOM_ERR_NULL_ARGS
引数がNULL
Definition room.h:62
@ SKW_ROOM_ERR_UNAUTHORIZED
AuthTokenが不正、もしくは有効期限切れ
Definition room.h:79
@ SKW_ROOM_ERR_SERVER_INTERNAL
サーバー内部エラー
Definition room.h:85
@ SKW_ROOM_ERR_TIMEOUT
応答の受信がタイムアウトした
Definition room.h:71
@ SKW_ROOM_ERR_ALREADY_JOINED
すでにLocalPersonが存在する(disposeで解放するまで再joinできない)
Definition room.h:76
@ SKW_ROOM_ERR_CONNECTION_CLOSED
応答待ちの間に接続が切断された
Definition room.h:72
@ SKW_ROOM_ERR_TOO_MANY_REQUESTS
レートリミット超過
Definition room.h:84
@ SKW_ROOM_ERR_SERVER_BUSY
サーバーが過負荷で一時的に利用できない
Definition room.h:86
@ SKW_ROOM_ERR_TOO_LARGE
リクエストパラメータが大きすぎる
Definition room.h:83
@ SKW_ROOM_ERR_NOT_FOUND
リソースが見つからない
Definition room.h:81
@ SKW_ROOM_ERR_INVALID_ARGS
引数の値が不正
Definition room.h:63
@ SKW_ROOM_ERR_SEND_FAILED
リクエストの送信に失敗
Definition room.h:70
@ SKW_ROOM_ERR_BAD_REQUEST
リクエストパラメータが不正
Definition room.h:78
@ SKW_ROOM_ERR_CAPACITY_EXHAUSTED
取得結果が格納上限を超えた(上限までは格納済み)
Definition room.h:69
@ SKW_ROOM_ERR_UNKNOWN
不明なエラー
Definition room.h:77
@ SKW_ROOM_OK
正常終了
Definition room.h:61
@ SKW_ROOM_ERR_CONTEXT_NOT_INITED
Contextが初期化されていない
Definition room.h:64
@ SKW_ROOM_ERR_CALLED_IN_HANDLER
イベントハンドラ内から呼ばれた
Definition room.h:68
@ SKW_ROOM_ERR_ALREADY_EXIST
すでに存在するリソースを作成しようとした
Definition room.h:82
void(* skw_room_on_publication_subscribed_t)(const char *room_id, const char *subscription_id, const char *member_id)
PublicationがSubscribeされたときに呼ばれます。
Definition room.h:167
void(* skw_room_on_publication_metadata_updated_t)(const char *room_id, const char *publication_id, const char *metadata)
PublicationのMetadataが更新されたときに呼ばれます。
Definition room.h:179
skw_room_createのパラメータ。
Definition room.h:196
const char * metadata
RoomMetadata
Definition room.h:198
const char * name
RoomName
Definition room.h:197
Roomの取得/作成結果を受け取る出力先。NULLを設定したフィールドには格納されない。
Definition room.h:111
skw_room_id_t * id
RoomIDの格納先(不要ならNULL)
Definition room.h:112
uint32_t * publication_count
格納したPublication数の格納先(不要ならNULL)
Definition room.h:118
skw_room_member_data_fields_t * members
Member一覧の格納先(不要ならNULL)。各要素の格納先もNULL可。sideはレスポンスから判別できないため格納されない。
Definition room.h:115
skw_room_metadata_t * metadata
RoomMetadataの格納先(不要ならNULL)
Definition room.h:114
skw_room_name_t * name
RoomNameの格納先(不要ならNULL)
Definition room.h:113
skw_room_publication_data_fields_t * publications
Publication一覧の格納先(不要ならNULL)。各要素の格納先もNULL可。
Definition room.h:117
skw_room_subscription_data_fields_t * subscriptions
Subscription一覧の格納先(不要ならNULL)。各要素の格納先もNULL可。
Definition room.h:119
uint32_t * subscription_count
格納したSubscription数の格納先(不要ならNULL)
Definition room.h:120
uint32_t * member_count
格納したMember数の格納先(不要ならNULL)
Definition room.h:116
skw_room_capacity_exhaustion_flags_t * exhaustion_flags
上限超過フラグの格納先(不要ならNULL)。超過したリソースを示すビットのORが格納される(超過なしは0)。
Definition room.h:121
skw_room_find_by_idのパラメータ。
Definition room.h:205
const char * id
検索するRoomID
Definition room.h:206
skw_room_find_by_nameのパラメータ。
Definition room.h:213
const char * name
検索するRoomName
Definition room.h:214
skw_room_find_or_createのパラメータ。
Definition room.h:221
const char * metadata
新規作成時に設定するMetadata
Definition room.h:223
const char * name
RoomName
Definition room.h:222
Roomの各イベント通知を受け取るハンドラ。不要なイベントのフィールドはNULLにできる。
Definition room.h:182
skw_room_on_member_joined_t on_member_joined
Memberの参加時
Definition room.h:185
skw_room_on_stream_unpublished_t on_stream_unpublished
StreamのUnpublish時
Definition room.h:189
skw_room_on_publication_metadata_updated_t on_publication_metadata_updated
PublicationのMetadata更新時
Definition room.h:192
skw_room_on_publication_subscribed_t on_publication_subscribed
PublicationのSubscribe時
Definition room.h:190
skw_room_on_room_closed_t on_room_closed
Roomの削除時
Definition room.h:183
skw_room_on_room_metadata_updated_t on_room_metadata_updated
RoomのMetadata更新時
Definition room.h:184
skw_room_on_member_left_t on_member_left
Memberの退出時
Definition room.h:186
skw_room_on_publication_unsubscribed_t on_publication_unsubscribed
PublicationのUnsubscribe時
Definition room.h:191
skw_room_on_stream_published_t on_stream_published
StreamのPublish時
Definition room.h:188
skw_room_on_member_metadata_updated_t on_member_metadata_updated
MemberのMetadata更新時
Definition room.h:187
skw_room_joinのパラメータ。
Definition room.h:239
uint32_t ttl_sec
Memberの有効期間(秒)。0を指定するとSKW_ROOM_JOIN_TTL_SEC_DEFAULTを使う
Definition room.h:243
const char * id
JoinするRoomID
Definition room.h:240
const char * metadata
MemberMetadata(不要ならNULL)
Definition room.h:242
const char * name
MemberName(不要ならNULL)
Definition room.h:241
Memberの取得結果を受け取る出力先。NULLを設定したフィールドには格納されない。
Definition member.h:67
Publicationの取得結果を受け取る出力先。NULLを設定したフィールドには格納されない。
Definition publication.h:73
Subscriptionの取得結果を受け取る出力先。NULLを設定したフィールドには格納されない。
Definition subscription.h:53
skw_room_update_metadataのパラメータ。
Definition room.h:230
const char * id
対象のRoomID
Definition room.h:231
const char * metadata
新しいMetadata
Definition room.h:232
Subscriptionのイベントハンドラの登録。