MRS Room APIリファレンス


本文書はMRS Room APIの型、列挙、関数、構造体を解説します。

MRS Roomライブラリはクライアント用のAPI、サーバ用のAPI、共通に使うAPIからなります。

MRS Room APIは、内部的にはMRSのレコードを送信します。
ルームにおいてデータを受信したり、何かの事象が起きたりといったことを
検知するために、コールバック関数をあらかじめ設定しておくことができます。



Room APIで使う列挙体


これらの列挙体で定義されている値は、クライアントとサーバの両方のAPIで共通に使用します。


MrsRoomResult

ルームサーバに対して部屋の作成や情報の取得など、何らかの操作を要求した場合の結果を示す列挙体

MRS_ROOM_RESULT_SUCCESS操作は成功した
MRS_ROOM_RESULT_FAILURE操作は失敗した
MRS_ROOM_RESULT_CANNOT_CREATE_ROOMルームを作成することができなかった
MRS_ROOM_RESULT_ROOM_NOT_FOUNDルームが見つからなかった
MRS_ROOM_RESULT_PLAYER_ALREADY_JOINEDプレイヤーはすでに入室している
MRS_ROOM_RESULT_PLAYER_UNJOINEDプレイヤーは入室していない

MrsRoomEvent

ルームイベントの種別を示す列挙体

MRS_ROOM_EVENT_NONEどのイベントでもない
MRS_ROOM_EVENT_CREATE_ROOM部屋が作られた
MRS_ROOM_EVENT_CREATE_ROOM_ERROR部屋を作る時にエラーが起きた
MRS_ROOM_EVENT_JOIN_ROOM入室した
MRS_ROOM_EVENT_JOIN_ROOM_ERROR入室するときにエラーが起きた
MRS_ROOM_EVENT_JOIN_ROOM_OTHER_PLAYER他のプレイヤーが入室した
MRS_ROOM_EVENT_LEAVE_ROOM退出した
MRS_ROOM_EVENT_LEAVE_ROOM_ERROR退出するときにエラーが起きた
MRS_ROOM_EVENT_LEAVE_ROOM_OTHER_PLAYER他のプレイヤーが退室した
MRS_ROOM_EVENT_SET_OWNER_PLAYER部屋の所有者プレイヤーを設定した
MRS_ROOM_EVENT_SET_OWNER_PLAYER_ERROR部屋の所有者プレイヤーを設定するときにエラーが起きた
MRS_ROOM_EVENT_KICK_ROOM強制退室させられた
MRS_ROOM_EVENT_KICK_ROOM_ERROR強制退室するときにエラーが起きた
MRS_ROOM_EVENT_KICK_ROOM_OTHER_PLAYER他のプレイヤーが強制退室させられた
MRS_ROOM_EVENT_SAFETY_CLOSE_ROOMセーフティクローズした
MRS_ROOM_EVENT_SAFETY_CLOSE_ROOM_ERRORセーフティクローズするときにエラーが起きた
MRS_ROOM_EVENT_CLOSE_ROOMセーフティクローズ以外の理由でクローズした
MRS_ROOM_EVENT_BROADCAST_ERRORbroadcastできなかった
MRS_ROOM_EVENT_OTHERCAST_ERRORothercastできなかった
MRS_ROOM_EVENT_UNICAST_ERRORunicastできなかった
MRS_ROOM_EVENT_MULTICAST_ERRORmulticastできなかった
MRS_ROOM_EVENT_OWNERCAST_ERRORownercastできなかった
MRS_ROOM_EVENT_GET_ROOMS_BEGIN部屋情報の開始
MRS_ROOM_EVENT_GET_ROOMS部屋情報の内容
MRS_ROOM_EVENT_GET_ROOMS_END部屋情報の終了

MrsRoomSafetyTime

ルーム削除保護時間の定数を示す列挙体

MRS_ROOM_SAFETY_TIME_FOREVERルームを永遠に残す

クライアント用コールバック関数

クライアントで使うコールバック関数は、ルームにおいて発生したイベントを検知するためのコールバック関数と、
アプリケーションが送信したデータを受信するためのコールバック関数との2種類があります。

typedef void ( *MrsRoomClientEventCallback)( MrsConnection connection, void* connection_data, uint16 options, MrsRoomId room_id, MrsRoomPlayerId owner_player_id, const MrsRoomPlayerId* joined_player_ids, MrsRoomPlayerIdsLen joined_player_ids_len, MrsRoomEvent evt, MrsRoomPlayerId player_id, MrsRoomResult result, const void* data, uint32 data_len, const char* err_msg )

ルームに関連したイベントが起きたことを検知するコールバック関数です。

引数
connection Roomサーバへの接続
connection_data アプリケーションが設定した任意のデータへのポインタ
options MRSレコードの送信オプション
room_id ルームのID
owner_player_id 所有者のプレイヤーID
joined_player_ids 参加しているプレイヤーIDの配列
joined_player_ids_len 参加しているプレイヤーIDの配列の長さ
evt 起きた事象の種類
player_id 事象の契機となったプレイヤーのID
result 操作の結果
data 操作をしたときにアプリケーションが付帯データとして送信した任意のデータのアドレス
data_len 付帯データの長さ
err_msg エラーメッセージ(resultだけでは判別不能なエラーの詳細を知るために使用)
返り値
なし

typedef void ( *MrsRoomClientReadRecordCallback)( MrsConnection connection, void* connection_data, MrsRoomId room_id, MrsRoomPlayerId owner_player_id, const MrsRoomPlayerId* joined_player_ids, MrsRoomPlayerIdsLen joined_player_ids_len, MrsRoomPlayerId write_player_id, uint32 seqnum, uint16 options, uint16 payload_type, const void* payload, uint32 payload_len )

ルームに対して送信されたメッセージを受信したことを検知するコールバック関数です。

引数
connection Roomサーバへの接続
connection_data アプリケーションが設定した任意のデータへのポインタ
room_id ルームのID
owner_player_id 所有者のプレイヤーID
joined_player_ids 参加しているプレイヤーIDの配列
joined_player_ids_len 参加しているプレイヤーIDの配列の長さ
write_player_id メッセージを送信した
seqnum メッセージが送信された時のレコードの通し番号
options レコードの送信オプション(MRSのレコード送信オプションと同じ値)
payload_type レコードの種別。アプリケーションが自由に決定する
payload 送信するデータの中身の先頭アドレス
payload_len 送信するデータの長さ
返り値
なし

クライアント用のAPI関数


以下で説明する関数群は、アプリケーションが呼び出すAPI関数で、コールバック関数を設定したり、
ルームサーバに対して要求をするためのレコードを送信したりします。

bool mrs_room_client_initialize()

MRS ROOM CLIENTのライブラリに必要なメモリを割り当てて初期化を行います

引数
なし
返り値
成功したらtrue, メモリが足りないなどの場合にfalseを返します。

void mrs_room_client_update()

MRS ROOM CLIENTライブラリの状態を更新します

引数
なし
返り値
なし

void mrs_room_client_finalize()

MRS ROOM CLIENTライブラリが確保しているメモリをすべて解放します

引数
なし
返り値
なし

void mrs_room_client_set_event_callback( MrsRoomClientEventCallback callback )

ルームイベント検知用コールバック関数を設定します

引数
callback コールバック関数
返り値
なし
説明

コールバック関数は、ルームイベントが1回発生するたびに1回づつ呼び出されます。

void mrs_room_client_set_read_record_callback( MrsRoomClientReadRecordCallback callback )

ルームのメッセージ受信コールバック関数を設定します

引数
callback コールバック関数
返り値
なし
説明

コールバック関数は、ルームに対して送られたメッセージを受信したときに、1メッセージあたり1回づつ呼び出されます。

bool mrs_room_client_parse_record( MrsConnection connection, void* connection_data, uint32 seqnum, uint16 options, uint16 payload_type, const void* payload, uint32 payload_len )

ルームサーバへの接続で受信したレコードを解析してイベントとメッセージに分離します

引数
connection Roomサーバへの接続
connection_data アプリケーションが設定した任意のデータへのポインタ
seqnum メッセージが送信された時のレコードの通し番号
options レコードの送信オプション(MRSのレコード送信オプションと同じ値)
payload_type レコードの種別。アプリケーションが自由に決定する
payload 送信するデータの中身の先頭アドレス
payload_len 送信するデータの長さ
返り値
trueなら解析済、falseなら未解析なので、アプリ側で解析を行う必要がある。
説明

connectionにおいてMRSのレコードを受信したとき、それがルームに対するメッセージの送信なのか、
イベントの発生なのかを区別するには、レコードの内容を解析する必要があります。
この関数はその処理を行い、内部で、あらかじめ mrs_room_client_set_event_callback関数や
mrs_room_client_set_read_record_callback関数を使って設定しておいたコールバック関数を呼び出します。
イベントでもなくルームのメッセージでもないレコードを受信した場合はfalseを返します。

bool mrs_room_client_create( MrsConnection connection, MrsRoomId room_id, MrsRoomPlayerId player_id, uint16 safety_time_sec, const void* data, uint32 data_len, uint16 options )

ルームを作成するようルームサーバに要求します

引数
connection Roomサーバへの接続
room_id ルームのID
player_id ルーム作成時にこのプレイヤーIDでルームの所有者プレイヤーIDを初期化する
safety_time_sec 全プレイヤーがルーム退室してもルームが削除されないことを保証する削除保護時間
data アプリケーションがルームに設定する任意のデータの先頭アドレス
data_len アプリケーションがルームに設定する任意のデータの長さ
options レコードの送信オプション(MRSのレコード送信オプションと同じ値)
返り値
なし

double mrs_room_client_get_safety_unix_time( MrsConnection connection, MrsRoomId room_id )

ルームに設定されている削除保護時間(Unix時間)を取得します

引数
connection Roomサーバへの接続
room_id ルームのID
返り値
削除保護時間(Unix時間)

bool mrs_room_client_join( MrsConnection connection, MrsRoomId room_id, MrsRoomPlayerId player_id, const void* data, uint32 data_len, uint16 options )

すでに存在しているルームに入室します

引数
connection Roomサーバへの接続
room_id ルームのID
player_id 入室しようとするプレイヤーのID
data アプリケーションがルームに設定する任意のデータの先頭アドレス
data_len アプリケーションがルームに設定する任意のデータの長さ
options レコードの送信オプション(MRSのレコード送信オプションと同じ値)
返り値
なし

bool mrs_room_client_leave( MrsConnection connection, const void* data, uint32 data_len, uint16 options )

すでに入室しているルームから退出します

引数
connection Roomサーバへの接続
data アプリケーションがルームに設定する任意のデータの先頭アドレス
data_len アプリケーションがルームに設定する任意のデータの長さ
options レコードの送信オプション(MRSのレコード送信オプションと同じ値)
返り値
なし

bool mrs_room_client_set_owner( MrsConnection connection, MrsRoomId room_id, MrsRoomPlayerId owner_player_id, const void* data, uint32 data_len, uint16 options )

ルームの所有者プレイヤーIDを変更します

引数
connection Roomサーバへの接続
room_id ルームのID
owner_player_id 新たにルームオーナーとなるプレイヤーID
data アプリケーションがルームに設定する任意のデータの先頭アドレス
data_len アプリケーションがルームに設定する任意のデータの長さ
options レコードの送信オプション(MRSのレコード送信オプションと同じ値)
返り値
なし

bool mrs_room_client_kick( MrsConnection connection, MrsRoomId room_id, MrsRoomPlayerId player_id, const void* data, uint32 data_len, uint16 options )

ルームから強制退室させます

引数
connection Roomサーバへの接続
room_id ルームのID
player_id 強制退室させるプレイヤーのID
data アプリケーションがルームに設定する任意のデータの先頭アドレス
data_len アプリケーションがルームに設定する任意のデータの長さ
options レコードの送信オプション(MRSのレコード送信オプションと同じ値)
返り値
なし

bool mrs_room_client_safety_close( MrsConnection connection, MrsRoomId room_id, const void* data, uint32 data_len, uint16 options )

ルームをセーフティクローズ(削除保護時間をリセットし、全プレイヤーが退室したらクローズ)するようにします

引数
connection Roomサーバへの接続
room_id ルームのID
data アプリケーションがルームに設定する任意のデータの先頭アドレス
data_len アプリケーションがルームに設定する任意のデータの長さ
options レコードの送信オプション(MRSのレコード送信オプションと同じ値)
返り値
なし

bool mrs_room_client_broadcast( MrsConnection connection, MrsRoomId room_id, MrsRoomPlayerId write_player_id, uint16 options, uint16 payload_type, const void* payload, uint32 payload_len )

自分を含めた全ルーム入室者に対してレコードを送信します

引数
connection Roomサーバへの接続
room_id ルームのID
write_player_id レコードを送信するプレイヤーID
options レコードの送信オプション(MRSのレコード送信オプションと同じ値)
payload_type レコードの種別。アプリケーションが自由に決定する
payload 送信するデータの中身の先頭アドレス
payload_len 送信するデータの長さ
返り値
なし

bool mrs_room_client_othercast( MrsConnection connection, MrsRoomId room_id, MrsRoomPlayerId write_player_id, uint16 options, uint16 payload_type, const void* payload, uint32 payload_len )

自分以外の全ルーム入室者に対してレコードを送信します

引数
connection Roomサーバへの接続
room_id ルームのID
write_player_id レコードを送信するプレイヤーID
options レコードの送信オプション(MRSのレコード送信オプションと同じ値)
payload_type レコードの種別。アプリケーションが自由に決定する
payload 送信するデータの中身の先頭アドレス
payload_len 送信するデータの長さ
返り値
なし

bool mrs_room_client_unicast( MrsConnection connection, MrsRoomId room_id, MrsRoomPlayerId write_player_id, uint16 options, uint16 payload_type, const void* payload, uint32 payload_len, MrsRoomPlayerId player_id )

特定のルームプレイヤーだけに対してレコードを送信します

引数
connection Roomサーバへの接続
room_id ルームのID
write_player_id レコードを送信するプレイヤーID
options レコードの送信オプション(MRSのレコード送信オプションと同じ値)
payload_type レコードの種別。アプリケーションが自由に決定する
payload 送信するデータの中身の先頭アドレス
payload_len 送信するデータの長さ
player_id 送信する対象となるプレイヤーID
返り値
なし

bool mrs_room_client_multicast( MrsConnection connection, MrsRoomId room_id, MrsRoomPlayerId write_player_id, uint16 options, uint16 payload_type, const void* payload, uint32 payload_len, const MrsRoomPlayerId* player_ids, MrsRoomPlayerIdsLen player_ids_len )

ルームに入室している複数のプレイヤーに対してレコードを送信します

引数
connection Roomサーバへの接続
room_id ルームのID
write_player_id レコードを送信するプレイヤーID
options レコードの送信オプション(MRSのレコード送信オプションと同じ値)
payload_type レコードの種別。アプリケーションが自由に決定する
payload 送信するデータの中身の先頭アドレス
payload_len 送信するデータの長さ
player_ids 送信対象となるプレイヤーIDの配列
player_ids_len 送信対象となるプレイヤーIDの配列の要素数
返り値
なし

bool mrs_room_client_othercast( MrsConnection connection, MrsRoomId room_id, MrsRoomPlayerId write_player_id, uint16 options, uint16 payload_type, const void* payload, uint32 payload_len )

ルームの所有者プレイヤーだけに対してレコードを送信します

引数
connection Roomサーバへの接続
room_id ルームのID
write_player_id レコードを送信するプレイヤーID
options レコードの送信オプション(MRSのレコード送信オプションと同じ値)
payload_type レコードの種別。アプリケーションが自由に決定する
payload 送信するデータの中身の先頭アドレス
payload_len 送信するデータの長さ
返り値
なし

bool mrs_room_client_get_rooms( MrsConnection connection, uint16 options )

全てのルームの情報を要求します

引数
connection Roomサーバへの接続
options レコードの送信オプション(MRSのレコード送信オプションと同じ値)
返り値
なし
説明

ルームサーバに対して、全てのルームの全ての参加者の情報を要求します。多い場合は数千人分の情報が返されます。
結果は非同期でルームイベントを通じて受信します。
まず MRS_ROOM_EVENT_GET_ROOMS_BEGINを受信し、次に人数分の回数 MRS_ROOM_EVENT_GET_ROOMS を受信し、
最後に MRS_ROOM_EVENT_GET_ROOMS_END を受信します。
MRS_ROOM_EVENT_GET_ROOMS イベントのコールバック関数では、 room_id引数でルームのIDを、
joined_player_ids配列ですべての参加者のIDのリストを取得します。

サーバ用コールバック関数

サーバで使うコールバック関数は、ルームにおいて発生したイベントを検知するためのコールバック関数のみがあります。

typedef void ( *MrsRoomServerEventCallback)( MrsConnection connection, void* connection_data, uint16 options, void* room_data, MrsRoomId room_id, MrsRoomPlayerId owner_player_id, const MrsRoomPlayerId* joined_player_ids, MrsRoomPlayerIdsLen joined_player_ids_len, MrsRoomEvent evt, MrsRoomPlayerId player_id, MrsRoomResult result, const void* data, uint32 data_len, const char* err_msg )

ルームに関連したイベントが起きたことを検知するコールバック関数です。

引数
connection Roomクライアントとの接続
connection_data アプリケーションが設定した任意のデータへのポインタ
options MRSレコードの送信オプション
room_data ルームサーバが内部的に使用するデータポインタ
room_id ルームのID
owner_player_id 所有者のプレイヤーID
joined_player_ids 参加しているプレイヤーIDの配列
joined_player_ids_len 参加しているプレイヤーIDの配列の長さ
evt 起きた事象の種類
player_id 事象の契機となったプレイヤーのID
result 操作の結果
data 操作をしたときにアプリケーションが付帯データとして送信した任意のデータのアドレス
data_len 付帯データの長さ
err_msg エラーメッセージ(resultだけでは判別不能なエラーの詳細を知るために使用)
返り値
なし

サーバー用のAPI関数

以下で説明する関数群は、サーバープログラムが呼び出すAPI関数で、ルームの作成や削除などの操作、
レコードの送信などを行います。
bool mrs_room_server_initialize()

MRS ROOM SERVERのライブラリに必要なメモリを割り当てて初期化を行います

引数
なし
返り値
成功したらtrue, メモリが足りないなどの場合にfalseを返します。

void mrs_room_server_update()

MRS ROOM SERVERライブラリの状態を更新します

引数
なし
返り値
なし

void mrs_room_server_finalize()

MRS ROOM SERVERライブラリが確保しているメモリをすべて解放します

引数
なし
返り値
なし

void mrs_room_server_set_event_callback( MrsRoomServerEventCallback callback )

Roomサーバーにおいて発生したイベントを検知するコールバック関数を設定します

引数
callback コールバック関数
返り値
なし

bool mrs_room_server_parse_record( MrsConnection connection, void* connection_data, uint32 seqnum, uint16 options, uint16 payload_type, const void* payload, uint32 payload_len )

Roomサーバが受信したMRSレコードの内容(ペイロード)を解析して必要なイベントを取り出し、コールバック関数を呼びます

引数
connection Roomクライアントとの接続
connection_data クライアントとの接続にひも付けられている任意のアプリケーションデータのポインタ。
seqnum MRSレコードの通し番号
options レコードの送信オプション(MRSのレコード送信オプションと同じ値)
payload_type レコードの種別。アプリケーションが自由に決定する
payload 送信するデータの中身の先頭アドレス
payload_len 送信するデータの長さ
返り値
解析に成功してコールバック関数を呼び出したらtrue, 何もしなかったらfalseを返します

void mrs_room_server_create( MrsConnection connection, void* connection_data, uint16 options, MrsRoomId room_id, MrsRoomPlayerId player_id, uint16 safety_time_sec, const void* data, uint32 data_len )

ルームを作成します。

引数
connection Roomクライアントとの接続
connection_data クライアントとの接続にひも付けられている任意のアプリケーションデータのポインタ。
seqnum MRSレコードの通し番号
options レコードの送信オプション(MRSのレコード送信オプションと同じ値)
room_id 作成するルームのID番号
player_id ルームを作成しようとしているプレイヤーのID番号
safety_time_sec 全プレイヤーがルーム退室してもルームが削除されないことを保証する安全時間
data ルームの作成時にアプリケーションが設定する任意のデータの先頭アドレス
data_len ルームの作成時にアプリケーションが設定する任意のデータの長さ
返り値
なし
説明
この関数はルームの作成をしようとします。結果は戻り値ではなく、ルームイベントのコールバック関数で返されます。

void mrs_room_server_create_write_record( MrsConnection connection, uint16 options, MrsRoomResult result, MrsRoomId room_id, MrsRoomPlayerId player_id, const void* data, uint32 data_len )

ルームの作成を試みた結果を通知するレコードを送信します

引数
connection Roomクライアントとの接続
options レコードの送信オプション(MRSのレコード送信オプションと同じ値)
result 操作の結果
room_id 作成しようとしたルームのID番号
player_id 作成しようとしたプレイヤーのID
data ルームの作成時にアプリケーションが設定する任意のデータの先頭アドレス
data_len ルームの作成時にアプリケーションが設定する任意のデータの長さ
返り値
なし

void mrs_room_server_join( MrsConnection connection, void* connection_data, uint16 options, MrsRoomId room_id, MrsRoomPlayerId player_id, const void* data, uint32 data_len )

ルームへの入室をします

引数
connection Roomクライアントとの接続
connection_data クライアントとの接続にひも付けられている任意のアプリケーションデータのポインタ。
options レコードの送信オプション(MRSのレコード送信オプションと同じ値)
room_id 入室しようとしているルームのID
player_id 入室しようとしているプレイヤーのID
data ルームの作成時にアプリケーションが設定する任意のデータの先頭アドレス
data_len ルームの作成時にアプリケーションが設定する任意のデータの長さ
返り値
なし

void mrs_room_server_join_write_record( MrsConnection connection, uint16 options, MrsRoomResult result, MrsRoomId room_id, MrsRoomPlayerId player_id, const void* data, uint32 data_len )

ルームへの入室を試みた結果を通知するレコードを送信します

引数
connection Roomクライアントとの接続
options レコードの送信オプション(MRSのレコード送信オプションと同じ値)
result 操作の結果
room_id 入室しようとしたルームのID
player_id 入室しようとしたプレイヤーのID
data ルームの作成時にアプリケーションが設定する任意のデータの先頭アドレス
data_len ルームの作成時にアプリケーションが設定する任意のデータの長さ
返り値
なし

void mrs_room_server_leave( MrsConnection connection, void* connection_data, uint16 options, const void* data, uint32 data_len )

ルームから退出します

引数
connection Roomクライアントとの接続
connection_data クライアントとの接続にひも付けられている任意のアプリケーションデータのポインタ。
options レコードの送信オプション(MRSのレコード送信オプションと同じ値)
data ルームの作成時にアプリケーションが設定する任意のデータの先頭アドレス
data_len ルームの作成時にアプリケーションが設定する任意のデータの長さ
返り値
なし
説明
ルームに入室している状態のときのみ操作が成功します。

void mrs_room_server_leave_write_record( MrsConnection connection, uint16 options, MrsRoomResult result, MrsRoomId room_id, MrsRoomPlayerId player_id, const void* data, uint32 data_len )

ルームからの退出を試みた結果を通知するレコードを送信します

引数
connection Roomクライアントとの接続
options レコードの送信オプション(MRSのレコード送信オプションと同じ値)
result 操作の結果
room_id 退出しようとしたルームのID
player_id 退出しようとしたプレイヤーのID
data ルームの作成時にアプリケーションが設定する任意のデータの先頭アドレス
data_len ルームの作成時にアプリケーションが設定する任意のデータの長さ
返り値
なし

void mrs_room_server_set_owner( MrsConnection connection, void* connection_data, uint16 options, MrsRoomId room_id, MrsRoomPlayerId owner_player_id, const void* data, uint32 data_len )

ルームを所有するプレイヤーを変更します

引数
connection Roomクライアントとの接続
connection_data クライアントとの接続にひも付けられている任意のアプリケーションデータのポインタ。
options レコードの送信オプション(MRSのレコード送信オプションと同じ値)
room_id 所有者を変更しようとするルームのID
owner_player_id このプレイヤーIDを新しい所有者に設定します
data ルームの作成時にアプリケーションが設定する任意のデータの先頭アドレス
data_len ルームの作成時にアプリケーションが設定する任意のデータの長さ
返り値
なし

void mrs_room_server_set_owner_write_record( MrsConnection connection, uint16 options, MrsRoomResult result, MrsRoomId room_id, MrsRoomPlayerId owner_player_id, const void* data, uint32 data_len )

ルームの所有者を変更しようとした結果を通知するレコードを送信します

引数
connection Roomクライアントとの接続
options レコードの送信オプション(MRSのレコード送信オプションと同じ値)
result 操作の結果
room_id 所有者を変更しようとしたルームのID
owner_player_id 新しく所有者として設定しようとしたプレイヤーのID
data ルームの作成時にアプリケーションが設定する任意のデータの先頭アドレス
data_len ルームの作成時にアプリケーションが設定する任意のデータの長さ
返り値
なし

void mrs_room_server_kick( MrsConnection connection, void* connection_data, uint16 options, MrsRoomId room_id, MrsRoomPlayerId player_id, const void* data, uint32 data_len )

ルームから強制退室させます

引数
connection Roomクライアントとの接続
connection_data クライアントとの接続にひも付けられている任意のアプリケーションデータのポインタ。
options レコードの送信オプション(MRSのレコード送信オプションと同じ値)
room_id 強制退室させるルームのID
player_id 強制退室させるプレイヤーのID
data ルームの作成時にアプリケーションが設定する任意のデータの先頭アドレス
data_len ルームの作成時にアプリケーションが設定する任意のデータの長さ
返り値
なし

void mrs_room_server_kick_write_record( MrsConnection connection, uint16 options, MrsRoomResult result, MrsRoomId room_id, MrsRoomPlayerId player_id, const void* data, uint32 data_len )

ルームからの強制退室を試みた結果を通知するレコードを送信します

引数
connection Roomクライアントとの接続
options レコードの送信オプション(MRSのレコード送信オプションと同じ値)
result 操作の結果
room_id 強制退室させるルームのID
player_id 強制退室させるプレイヤーのID
data ルームの作成時にアプリケーションが設定する任意のデータの先頭アドレス
data_len ルームの作成時にアプリケーションが設定する任意のデータの長さ
返り値
なし

void mrs_room_server_safety_close( MrsConnection connection, void* connection_data, uint16 options, MrsRoomId room_id, const void* data, uint32 data_len )

ルームをセーフティクローズ(削除保護時間をリセットし、全プレイヤーが退室したらクローズ)するようにします

引数
connection Roomクライアントとの接続
connection_data クライアントとの接続にひも付けられている任意のアプリケーションデータのポインタ。
options レコードの送信オプション(MRSのレコード送信オプションと同じ値)
room_id セーフティクローズするルームのID
data ルームの作成時にアプリケーションが設定する任意のデータの先頭アドレス
data_len ルームの作成時にアプリケーションが設定する任意のデータの長さ
返り値
なし

void mrs_room_server_safety_close_write_record( MrsConnection connection, uint16 options, MrsRoomResult result, MrsRoomId room_id, const void* data, uint32 data_len )

ルームのセーフティクローズを試みた結果を通知するレコードを送信します

引数
connection Roomクライアントとの接続
options レコードの送信オプション(MRSのレコード送信オプションと同じ値)
result 操作の結果
room_id セーフティクローズするルームのID
data ルームの作成時にアプリケーションが設定する任意のデータの先頭アドレス
data_len ルームの作成時にアプリケーションが設定する任意のデータの長さ
返り値
なし

bool mrs_room_server_set_data( MrsRoomId room_id, void* data )

ルームに任意のデータポインタを設定します

引数
room_id データを設定したいルームのID
data データへのポインタ
返り値
なし
説明
ルームサーバーから派生させてゲームのサーバーを実装する場合、戦闘フィールドなどのデータをこの関数を用いてルームに
ひもづけることによって、ゲームの処理を実装することが簡単にできます。

void mrs_room_server_broadcast( MrsConnection connection, MrsRoomId room_id, MrsRoomPlayerId write_player_id, uint16 options, uint16 payload_type, const void* payload, uint32 payload_len )

ルームに参加している全てのプレイヤーにMRSレコードを送信します

引数
connection レコードを送信する元となる接続
room_id レコードを送信したいルーム
write_player_id 送信しようとしているプレイヤーのID
options レコードの送信オプション(MRSのレコード送信オプションと同じ値)
payload_type レコードの種別。アプリケーションが自由に決定する
payload 送信するデータの中身の先頭アドレス
payload_len 送信するデータの長さ
返り値
なし
説明
connection引数で送信元の接続を指定する必要がある理由は、ルームが存在しないなどで送信できなかったときにエラーを返すためです。

void mrs_room_server_othercast( MrsConnection connection, MrsRoomId room_id, MrsRoomPlayerId write_player_id, uint16 options, uint16 payload_type, const void* payload, uint32 payload_len )

ルームに参加している自分以外の全てのプレイヤーにMRSのレコードを送信します

引数
connection レコードを送信する元となる接続
room_id レコードを送信したいルーム
write_player_id 送信しようとしているプレイヤーのID
options レコードの送信オプション(MRSのレコード送信オプションと同じ値)
payload_type レコードの種別。アプリケーションが自由に決定する
payload 送信するデータの中身の先頭アドレス
payload_len 送信するデータの長さ
返り値
なし
説明
connection引数で送信元の接続を指定する必要がある理由は、ルームが存在しないなどで送信できなかったときにエラーを返すためです。

void mrs_room_server_unicast( MrsConnection connection, MrsRoomId room_id, MrsRoomPlayerId write_player_id, uint16 options, uint16 payload_type, const void* payload, uint32 payload_len, MrsRoomPlayerId player_id )

ルームに参加している特定のプレイヤーだけにMRSのレコードを送信します

引数
connection レコードを送信する元となる接続
room_id レコードを送信したいルーム
write_player_id 送信しようとしているプレイヤーのID
options レコードの送信オプション(MRSのレコード送信オプションと同じ値)
payload_type レコードの種別。アプリケーションが自由に決定する
payload 送信するデータの中身の先頭アドレス
payload_len 送信するデータの長さ
player_id レコードの送信先となるプレイヤーのID
返り値
なし
説明
connection引数で送信元の接続を指定する必要がある理由は、ルームが存在しないなどで送信できなかったときにエラーを返すためです。

void mrs_room_server_multicast( MrsConnection connection, MrsRoomId room_id, MrsRoomPlayerId write_player_id, uint16 options, uint16 payload_type, const void* payload, uint32 payload_len, const MrsRoomPlayerId* player_ids, MrsRoomPlayerIdsLen player_ids_len )

ルームに参加している複数のプレイヤーに対してMRSのレコードを送信します

引数
connection レコードを送信する元となる接続
room_id レコードを送信したいルーム
write_player_id 送信しようとしているプレイヤーのID
options レコードの送信オプション(MRSのレコード送信オプションと同じ値)
payload_type レコードの種別。アプリケーションが自由に決定する
payload 送信するデータの中身の先頭アドレス
payload_len 送信するデータの長さ
player_ids レコードの送信先となるプレイヤーのIDの配列
player_ids_len レコードの送信先となるプレイヤーのIDの配列の要素数
返り値
なし
説明
connection引数で送信元の接続を指定する必要がある理由は、ルームが存在しないなどで送信できなかったときにエラーを返すためです。

void mrs_room_server_ownercast( MrsConnection connection, MrsRoomId room_id, MrsRoomPlayerId write_player_id, uint16 options, uint16 payload_type, const void* payload, uint32 payload_len )

ルームの所有者となっているプレイヤーに対してのみMRSのレコードを送信します

引数
connection レコードを送信する元となる接続
room_id レコードを送信したいルーム
write_player_id 送信しようとしているプレイヤーのID
options レコードの送信オプション(MRSのレコード送信オプションと同じ値)
payload_type レコードの種別。アプリケーションが自由に決定する
payload 送信するデータの中身の先頭アドレス
payload_len 送信するデータの長さ
返り値
なし
説明
connection引数で送信元の接続を指定する必要がある理由は、ルームが存在しないなどで送信できなかったときにエラーを返すためです。

void mrs_room_server_get_rooms( MrsConnection connection, uint16 options )

ルームサーバーが管理しているすべてのルームと参加者の情報を取得します

引数
connection 結果を送信する対象となる接続
options レコードの送信オプション(MRSのレコード送信オプションと同じ値)
返り値
なし
説明
この関数を呼び出した後、クライアント側では連続するルームのイベントとして結果を受信します。
詳しくは、mrs_room_client_get_rooms関数の説明を参照してください。

void mrs_set_room_update_msec( uint32 update_msec )

ルーム情報更新時間の設定

引数
update_msec ルーム情報を更新するミリ秒数
返り値
なし

uint32 mrs_get_room_update_msec()

ルーム情報更新時間の取得

引数
なし
返り値
ルーム情報を更新するミリ秒数