MRS APIリファレンス


本文書はMRSライブラリが提供する全ての関数や型の解説をします。

MRSライブラリ全体を操作する関数

ライブラリ自体の初期化、状態更新、停止、削除などを行います。
bool mrs_initialize()

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

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

void mrs_update()

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

引数
なし
返り値
なし
説明
内部でOSに対してポーリングを行い、MRSが監視しているソケットにデータが到着している場合は
必要なコールバックを呼び出し、また送信が可能な場合はソケットに対してデータ(レコード)を送信します。
OSに対する入出力はすべてここで行われます。

void mrs_update_keep_alive()

MRSライブラリの全コネクションのキープアライブ状態を更新します

引数
なし
返り値
なし
説明
キープアライブ対象のソケットに対してデータ(レコード)を送信します。

void mrs_run( uint32 sleep_msec )

スリープしながらループし続けます

引数
なし
返り値
なし
説明
動作中にmrs_stop_running() 関数を呼び出すことでループから抜けることができます。


void mrs_stop_running()

mrs_runのループを停止します

引数
なし
返り値
なし

void mrs_finalize()

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

引数
なし
返り値
なし

接続数を操作するための関数

TCPまたはUDPクライアントの接続数を取得、設定するための関数群です。
uint32 mrs_get_connection_num_hard_limit()

MRSライブラリに埋め込まれている、同時接続数の絶対的な最大値(ハードリミット値)を返します

引数
なし
返り値
なし

uint32 mrs_get_connection_num_soft_limit()

アプリケーションがMRSライブラリに設定しているクライアントの最大接続数(ソフトリミット値)を返します。

引数
なし
返り値
なし

bool mrs_set_connection_num_soft_limit( uint32 value )

MRSライブラリ全体の最大接続数を設定します。ハードリミット値以下の値を設定できます。これをソフトリミットと呼びます。

引数
なし
返り値
設定できたらtrue, 失敗したらfalse。
説明
```mrs_get_connection_num_hard_limit```関数が返す値より大きな値は設定できません。

uint32 mrs_get_connection_num()

全体の接続しているクライアント数を返します

引数
なし
返り値
なし

uint32 mrs_server_get_connection_num( MrsServer server )

サーバーあたりの接続しているクライアント数を返します

引数
なし
返り値
なし

サーバを操作するための関数

TCPまたはUDPのサーバを作成、削除、設定するための関数群です。
MrsServer mrs_server_create( MrsConnectionType type, const char* addr, uint16 port, int32 backlog )

TCPまたはUDP(RUDPを含む)のサーバーを作成して返します

引数
type 接続の種類。MRS_CONNECTION_TYPE_TCP, MRS_CONNECTION_TYPE_UDP,MRS_CONNECTION_TYPE_WS, MRS_CONNECTION_TYPE_WSS のいずれかを設定します
addr 受け入れるソケットのローカルアドレスをIPv4アドレスの数字表現で指定します。ドメイン名では指定できません。 インターネットの不特定多数向けのサービスの場合は "0.0.0.0"を指定し、ローカルマシンからのみに制限する場合は "127.0.0.1"を指定します。それ以外のアドレスも指定可能です。
port TCPまたはUDPのポート番号を指定します。0~65535の範囲で決定してください。
backlog TCPの場合はソケットのバックログの数(OSが保持している、acceptが呼び出される前のソケットの数)を指定します。短時間に大量の新しい接続を受け入れるようなサービスの場合にこれを大きくしてください。通常は10で問題ありません。UDPの場合は、1つのMrsServerあたりの最大の同時接続数を指定します。
返り値
なし
説明
この関数が返すMrsServerに対して、 ```mrs_set_error_callback```関数を使ってエラー検出用コールバック関数を定義すると、
OS資源が足りないなどの何らかの原因で新規接続を受け入れることができなかった場合のエラーを検出することができます。
詳細は ```mrs_set_error_callback```関数の項を参照してください。

void mrs_server_set_new_connection_callback( MrsServer server, MrsNewConnectionCallback callback )

MRSサーバが新しい接続を受け入れたときに呼び出すコールバック関数を定義します

引数
server 設定する対象となるサーバ
callback アプリケーションが定義するコールバック関数へのポインタ。コールバック関数のプロトタイプは次のようになっています。 void new_conn_callback( MrsServer server, MrsConnection client ) このコールバックでは第1引数にサーバ、第2引数に新しいクライアントが渡されます。
返り値
なし
説明


bool mrs_server_set_data( MrsServer server, void* server_data )

MrsServer に対して任意のポインタをひも付けます

引数
server 設定する対象となるサーバ
server_data 任意のデータへのポインタ
返り値
設定できたらtrue, 失敗したらfalse。有効なサーバーを指定する必要があります。
説明
ひとつのプロセスで複数のサーバを起動し、同じ新規接続コールバック関数を登録した場合でも、
このポインタの値を使って、どのサーバに対する新規接続なのかを識別することができます。

void* mrs_server_get_data( MrsServer server )

MrsServerに対してひも付けられているポインタ値を取得します

引数
server 設定する対象となるサーバ
返り値
設定されているポインタの現在の値

クライアントを操作するための関数

MRSのサーバに接続して通信をするクライアントを作成、設定します。
MrsConnection mrs_connect( MrsConnectionType type, const char* addr, uint16 port, uint32 timeout_msec )

新しい接続(MrsConnection)をひとつ割り当てて初期化し、接続を開始します。

引数
type 使用するトランスポート層プロトコルを指定します。サーバと同じ値を指定してください。
addr サーバが待ち受けているホストのIPv4アドレスを "192.168.1.232"のような数字の表現で指定します。
port TCPまたはUDPのポート番号を指定します。0~65535の範囲で決定してください。
timeout_msec 接続失敗と判定されるまでのタイムアウト時間をミリ秒で指定します。
返り値
新しく割り当てられた接続
説明
mrs_connect関数は接続を開始するだけで、実際のトランスポート層パケットはこの関数を呼び出しても送信されません。
実際のパケットは、後でmrs_update関数を呼び出すことによって送信されます。

void mrs_set_connect_callback( MrsConnection connection, MrsConnectCallback callback )

サーバへの接続が完了したことを検出するためのコールバック関数を設定します

引数
connection 設定する対象となる接続
callback コールバック関数
返り値
なし
説明
mrs_connect関数で作られた接続(MrsConnection)に対して、その接続が実際に接続が成功したことを検出するための
コールバック関数を設定します。コールバック関数は接続ごとに設定する必要があります。
接続ごとに異なるコールバック関数を設定することも可能です。

void mrs_set_disconnect_callback( MrsConnection connection, MrsDisconnectCallback callback )

接続が切れたときに呼び出されるコールバック関数を設定します

引数
connection 設定する対象となる接続
callback コールバック関数のポインタ
返り値
なし
説明
サーバーが起動していない場合やファイアウォールなど、何らかの原因によって接続に失敗した場合は、このコールバック関数は呼ばれず、 mrs_set_error_callback 関数で設定したコールバック関数が呼び出されます。

クライアントとサーバの両方で共通に使う関数

レコードの受信、送信、エラーハンドリングなどを行うための関数です。
void mrs_set_error_callback( MrsConnection connection, MrsErrorCallback callback )

接続において何らかのエラーが発生したことを検出するためのコールバック関数を設定します

引数
connection 設定する対象となる接続
callback コールバック関数のポインタ
返り値
なし

void mrs_set_read_record_callback( MrsConnection connection, MrsReadRecordCallback callback )

接続において接続相手が送信したレコードを1個受信するごとに1回呼ばれるコールバック関数を設定します

引数
connection 設定する対象となる接続
callback コールバック関数のポインタ
返り値
なし

void mrs_set_read_callback( MrsConnection connection, MrsReadCallback callback )

接続において接続相手が送信したバイナリデータを受信するごとに1回呼ばれるコールバック関数を設定します

引数
connection 設定する対象となる接続
callback コールバック関数のポインタ
返り値
なし

bool mrs_connection_set_data( MrsConnection connection, void* connection_data )

接続に対して、アプリケーションが任意のポインタをひも付けます

引数
connection 設定する対象となる接続
connection_data 任意のデータへのポインタ
返り値
設定に成功したらtrue, 失敗したらfalse
説明
任意のポインタを使って、プレイヤーキャラクタなどのアプリケーションの内部データをMRSの接続に関連付けることが簡単にできます。

void* mrs_connection_get_data( MrsConnection connection )

mrs_connection_set_data 関数で設定したポインタの値を取得します

引数
connection 設定する対象となる接続
返り値
設定されていたポインタの値

bool mrs_connection_is_connected( MrsConnection connection )

MrsConnectionがサーバへの接続を完了しているかどうかを調べます

引数
connection ポインタを取り出す対象トなる接続
返り値
接続できていて、データを送信可能な状態ならtrueを返します。

bool mrs_connection_set_readbuf_max_size( MrsConnection connection, uint32 value )

MrsConnectionの読み込みバッファの最大サイズを設定します

引数
connection 設定対象の接続
value 読み込みバッファの最大サイズ
返り値
設定できたなら、trueを返します

uint32 mrs_connection_get_readbuf_max_size( MrsConnection connection )

MrsConnectionの読み込みバッファの最大サイズを取得します

引数
connection 設定対象の接続
返り値
読み込みバッファの最大サイズ

MrsConnectionType mrs_connection_get_type( MrsConnection connection )

MrsConnectionに設定されているプロトコルを返します

引数
connection 対象となる接続
返り値
MrsConnectionに設定されているプロトコルを返します

bool mrs_connection_set_path( MrsConnection connection, const char* value )

MrsConnectionの接続先のパスを設定します

引数
connection 設定対象の接続
value 接続先のパス
返り値
設定できたなら、trueを返します

const char* mrs_connection_get_path( MrsConnection connection )

MrsConnectionの接続先のパスを取得します

引数
connection 設定対象の接続
返り値
MrsConnectionに設定されている接続先のパスを返します

bool mrs_write_record( MrsConnection connection, uint16 options, uint16 payload_type, const void* payload, uint32 payload_len )

接続に対して、レコードを1個送信します

引数
connection レコードを送信する対象となる接続
options レコードを送信するときのオプションを設定します。オプションはレコードごとに異なる値を設定できます。 設定可能な値は、MrsRecordOption列挙体で定義されている定数を、ORビット演算子でつないで複数同時に指定可能です。
payload_type 送信したいデータの種別をアプリケーションが自由に指定します。PAYLOAD_TYPE_BEGIN と MRS_PAYLOAD_TYPE_END の間の値を設定してください。 PAYLOAD_TYPE_BEGINは現在は0, MRS_PAYLOAD_TYPE_ENDは現在は0xffとなっていますが、将来は変更される可能性があります。
payload 送信したいデータの先頭アドレスです。データの内容はバイナリデータで、0を含んでいても問題なく送信できます。
payload_len 送信したいデータの長さ(バイト)です。
返り値
なし
説明
この関数を呼び出した時点では実際に送信されず、次の mrs_update 関数の呼び出し時に可能な限り送信しようとします。
ただし、OSやソケットの状態によっては、次の呼び出しで確実に送信されるとは限りません。
送信の準備が成功したらtrue,メモリが足りないなどによって失敗したらfalseが返されます。
MRSはレコードを送信するときに内部的に通し番号を付与します。

bool mrs_write( MrsConnection connection, const void* data, uint32 data_len )

接続に対して、バイナリデータを送信します

引数
connection レコードを送信する対象となる接続
data 送信したいデータの先頭アドレスです。データの内容はバイナリデータで、0を含んでいても問題なく送信できます。
data_len 送信したいデータの長さ(バイト)です。
返り値
なし
説明
この関数を呼び出した時点では実際に送信されず、次の mrs_update 関数の呼び出し時に可能な限り送信しようとします。
ただし、OSやソケットの状態によっては、次の呼び出しで確実に送信されるとは限りません。
MRSはレコードを送信するときに内部的に通し番号を付与します。

void mrs_close( MrsConnection connection )

接続を閉じます

引数
connection 操作対象の接続
返り値
なし
説明
この関数を呼んだ時点では、実際の接続終了の通信は行われず、次のmrs_update 関数の呼び出し時に実行されます。

暗号化通信を使うための関数

MRSでは、MrsCipherを作成し、それを接続ごとに登録することで暗号化通信を行います。
そのため接続ごとに暗号の種類を切り替えることが可能なように設計されています(現在はECDHのみが利用可能)。

送信するレコード単位で暗号の有効化をon/offすることもできます。
それにはレコードを送信する mrs_write_record 関数のオプションに暗号化利用モードを設定します。
ただし、暗号化オプションを有効化するためには、暗号に使う鍵をあらかじめ交換し終わっている必要があります。

鍵交換をするためには、 MrsCipherを mrs_cipher_create 関数を使って作成し、
それを mrs_set_cipher関数を使って接続に登録し、 mrs_key_exchange 関数を使って鍵交換の通信を起動します。 
それ以降の必要な通信や数値計算の処理は、MRSが内部的に自動で行います。
MRSは、鍵交換が無事に終了したことをアプリケーションに対してコールバック関数を使って通知します。
MrsCipher mrs_cipher_create( MrsCipherType type )

MrsCipherを作成します

引数
type 鍵交換アルゴリズムの種類を指定します。 現在利用可能なのは MRS_CIPHER_TYPE_ECDH のみです。
返り値
作成されたMrsCipher

void mrs_set_cipher( MrsConnection connection, MrsCipher cipher )

接続に対してMrsCipherを登録します。

引数
connection 登録対象となる接続
cipher 登録したいMrsCipher
返り値
なし

bool mrs_key_exchange( MrsConnection connection, MrsKeyExchangeCallback callback )

鍵交換を開始するよう指示します

引数
connection 鍵交換を開始する接続
callback 鍵交換が完了したときに呼び出されるコールバック関数
返り値
なし
説明
鍵交換は、クライアントまたはサーバから、本関数を呼んだ時に「鍵交換リクエスト」を互いに送信し、
それに対して「鍵交換レスポンス」を互いに返すという動作をします。
この関数を呼ぶと、鍵交換リクエストを送信します。 送信に成功したらtrue、失敗したらfalseを返します。

ログ出力をするための関数

MRSはライブラリ内部の動作ログを、 mrs_log_output関数を使って出力します。
この関数をアプリケーションでも使うことができます。MRSのログ出力は、
ログを出力するたびにコールバック関数を呼ぶことで実現されます。
デフォルトの状態で mrs_console_log関数が設定されていますが、
それを mrs_set_log_callback関数を用いてアプリケーションの独自のものに置き換えることができます。

ログ出力レベルはプロセス全体でひとつで、設定した値以上(値自体を含む)のレベルのログが出力されます。
出力レベルは、 EMERGが最高でDEBUGが最低です。詳細は MrsLogLevel 列挙体の定義を参照してください。
MrsLogLevel mrs_get_output_log_level()

現在設定されているログ出力レベルの値を取得します

引数
なし
返り値
現在のログ出力レベル

void mrs_set_output_log_level( MrsLogLevel level )

MRSライブラリのログ出力レベルを設定します

引数
level 設定するログ出力レベル
返り値
なし

bool mrs_is_output_log_level( MrsLogLevel level )

MRSライブラリのログ出力可能なレベルか判定します

引数
level 判定するログ出力レベル
返り値
ログ出力可能なら、trueを返します

void mrs_output_log( MrsLogLevel level, const char* msg )

ログレベルを指定してログを出力します

引数
level 出力したいログのレベル
msg メッセージ
返り値
なし

MrsLogOutputCallback mrs_get_log_callback()

ログを出力するために設定されているコールバック関数を取得します

引数
なし
返り値
現在設定されているコールバック関数

void mrs_set_log_callback( MrsLogOutputCallback callback )

ログを出力するためのコールバック関数を設定します

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

void mrs_console_log( MrsLogLevel level, const char* msg )

MRSのログを標準出力に出力する関数

引数
level mrs_output_log関数に指定されたログ出力レベルがそのまま渡されます
msg mrs_output_log関数に指定されたログメッセージがそのまま渡されます
返り値
なし
説明
mrs_console_log関数は、MRSライブラリのデフォルトのログ出力コールバック関数としてあらかじめ設定されています。
この関数は、 mrs_set_log_callback関数を使って置き換えることができます。

エラーコードを扱うための関数

MRSライブラリ内部のエラー状態は、ライブラリでひとつの変数に格納されています。
mrs_get_last_error関数でその値を取得し、 mrs_get_error_string関数で文字列に変換できます。
MrsError mrs_get_last_error()

MRSの関数内部で起きたエラーの種類を返します

引数
なし
返り値
エラーコード。値の詳細は MrsErrorを参照してください

const char* mrs_get_error_string( MrsError error )

エラー番号を文字列に変換します

引数
error エラーコード。通常は mrs_get_last_errorの値を入力します
返り値
エラーを説明する文字列

const char* mrs_get_connection_error_string( MrsConnectionError error )

接続に関するエラー番号を文字列に変換します

引数
error エラーコード。通常は MrsErrorCallbackのstatus値を入力します
返り値
エラーを説明する文字列

その他の便利な関数

void mrs_sleep( uint32 sleep_msec )

指定した時間だけスレッドの実行を停止する

引数
sleep_msec 現在のスレッドを停止するミリ秒数
返り値
なし

void mrs_set_ssl_certificate_data( const char* data )

SSL証明書データの設定

引数
data SSL証明書データ
返り値
なし

void mrs_set_ssl_private_key_data( const char* data )

SSL秘密鍵データの設定

引数
data SSL秘密鍵データ
返り値
なし

void mrs_set_keep_alive_update_msec( uint32 update_msec )

キープアライブ更新時間の設定

引数
update_msec キープアライブを更新するミリ秒数
返り値
なし

uint32 mrs_get_keep_alive_update_msec()

キープアライブ更新時間の取得

引数
なし
返り値
キープアライブを更新するミリ秒数

void mrs_set_version( const char* key, uint32 value )

バージョンの設定

引数
key 設定対象バージョンのキー
value 設定対象バージョンの値
返り値
なし

uint32 mrs_get_version( const char* key )

バージョンの取得

引数
key 取得対象バージョンのキー
返り値
バージョン

uint32 mrs_connection_get_remote_version( MrsConnection connection, const char* key )

接続先のバージョンの取得

引数
connection 取得対象の接続
key 取得対象バージョンのキー
返り値
接続先のバージョン

void mrs_udp_set_mtu( uint32 value )

UDPプロトコルのMTUの設定

引数
value MTUの値
返り値
なし

uint32 mrs_udp_get_mtu()

UDPプロトコルのMTUの取得

引数
なし
返り値
MTUの値

void mrs_mru_set_client_peer_limit( uint32 value )

MRUプロトコルのクライアント接続の上限値の設定

引数
value 上限値
返り値
なし

uint32 mrs_mru_get_client_peer_limit()

MRUプロトコルのクライアント接続の上限値の取得

引数
なし
返り値
上限値

void mrs_mru_set_sendq_size( uint32 value )

MRUプロトコルの送信キューサイズの設定

引数
value 送信キューサイズ
返り値
なし

uint32 mrs_mru_get_sendq_size()

MRUプロトコルの送信キューサイズの取得

引数
なし
返り値
送信キューサイズ

関数の引数に使う各種の列挙体

MrsLogLevel

ログ出力レベルの種類を定義します

MRS_LOG_LEVEL_EMERGシステムが使用不可
MRS_LOG_LEVEL_ALERT直ちに行動を起こさなければならない
MRS_LOG_LEVEL_CRIT危険な状態
MRS_LOG_LEVEL_ERRエラー
MRS_LOG_LEVEL_WARNING警告
MRS_LOG_LEVEL_NOTICE通常だが重要な状態
MRS_LOG_LEVEL_INFO参考にすべきメッセージ
MRS_LOG_LEVEL_DEBUGデバッグレベルのメッセージ

MrsConnectionType

MRSで利用可能なトランスポート層プロトコルの種類を定義します

MRS_CONNECTION_TYPE_NONE未定義
MRS_CONNECTION_TYPE_TCPTCP
MRS_CONNECTION_TYPE_UDPUDP(RUDPを使う場合はこの値を選択します)
MRS_CONNECTION_TYPE_WSWS(通常のWebSocketを使う場合はこの値を選択します)
MRS_CONNECTION_TYPE_WSSWSS(通信経路が暗号化されたWebSocketを使う場合はこの値を選択します)
MRS_CONNECTION_TYPE_TCP_SSLTCP_SSL(通信経路が暗号化されたTCPを使う場合はこの値を選択します)
MRS_CONNECTION_TYPE_MRUMonobit独自R-UDP

MrsCipherType

暗号化通信に使う鍵交換の方式を定義します

MRS_CIPHER_TYPE_NONE未定義
MRS_CIPHER_TYPE_ECDHECDH(楕円曲線ディフィーヘルマン)

MrsError

MRS APIのエラーコードを定義します

MRS_NO_ERRORエラーなし
MRS_ENOENTファイルやディレクトリが存在しない
MRS_ENOMEMメモリが不足している
MRS_EACCESアクセス権限が不足している(1024以下のポート番号など)
MRS_EMFILEこれ以上ファイル(ソケット)を開けない(ulimitの設定が必要です)
MRS_EADDRINUSEポート番号がすでに使われている
MRS_EADDRNOTAVAILクライアント側で必要なポート番号を使い切っている
MRS_ENETUNREACH到達できないネットワークである
MRS_ETIMEDOUT操作はタイムアウトした
MRS_EHOSTUNREACH到達できないホストである
MRS_ECONNECTIONTYPE不正な接続の種別コード (MrsConnectionの値が不正)
MRS_EBACKLOGmrs_server_create 関数のbacklogの値が不正(大きすぎる)
MRS_ECONNECTIONNUMmrs_get_connection_num_hard_limit 関数の値より多いクライアントを生成した

MrsConnectionError

MrsConnectionに設定したエラーコールバック関数に渡されるエラー種別コードを定義します

MRS_CONNECT_ERRORMrsConnectionにおいてTCPのconnect()に失敗した(サーバがポートを開いていないなど)
MRS_CONNECT_TIMEOUTMrsConnectionにおいてTCPのconnect()の時間切れ(サーバマシン自体が起動していないか、アドレスを間違えているなど)
MRS_WRITE_ERROR接続に対して書き込みができなかった
MRS_KEY_EXCHANGE_REQUEST_ERROR鍵交換の開始要求を送信できなかった
MRS_KEY_EXCHANGE_RESPONSE_ERROR鍵交換の返信を送信できなかった
MRS_PEER_CONNECTION_HARD_LIMIT_OVER接続相手がコネクション上限に達している
MRS_CONNECTION_READBUF_SIZE_OVER読み込みバッファを越えたデータを受信した
MRS_KEEPALIVE_TIMEOUT一定時間無通信状態によるタイムアウトを検出した
MRS_PROTOCOL_ERROR接続相手のプロトコルが不正
MRS_READ_INVALID_RECORD_ERROR読み込んだレコードが不正
MRS_LISTEN_ERRORソケットの待ち受け処理に失敗した(既に同じポートが使われているなど)
MRS_RESOLVE_ADDRESS_ERRORアドレス解決処理に失敗した
MRS_RESOLVE_ADDRESS_TIMEOUTアドレス解決処理の時間切れ
MRS_WRITE_ERROR_MRU_OVER_MTUMTU以上に長いデータを送ろうとした(MRUのみ)
MRS_WRITE_ERROR_MRU_SENDQ_FULL送信キューがあふれている(MRUのみ)

MrsRecordOption

レコードの送信オプション

MRS_RECORD_OPTION_NONEオプションを設定しない
MRS_RECORD_OPTION_ON_CRYPTレコードを暗号化して送信する
MRS_RECORD_OPTION_UDP_UNRELIABLEUDPにおいて信頼性保証(再送処理)をせずにレコードを送信する
MRS_RECORD_OPTION_UDP_UNSEQUENCEDUDPにおいて到着順序保証をせずにレコードを送信する

MrsPayloadType

アプリケーションが利用可能なペイロードの種別コードの範囲を定義します

MRS_PAYLOAD_TYPE_BEGIN0x00. アプリケーションが利用可能な最小の値
MRS_PAYLOAD_TYPE_END0xff. アプリケーションが利用可能な最大の値

関数の引数に与えるコールバック関数


typedef void ( *MrsLogOutputCallback)( MrsLogLevel level, const char* msg )

ログが1回出力されるごとに呼び出されるコールバック関数

引数
level mrs_output_log 関数の呼び出し時に指定されたログ出力レベルの値
msg 出力されたログメッセージ
返り値
なし

typedef void ( *MrsNewConnectionCallback)( MrsServer server, void* server_data, MrsConnection client )

新しい接続を受け入れたときに呼び出されるコールバック関数

引数
server どのサーバに対する接続要求かをあらわすMrsServer
server_data mrs_server_set_data 関数で設定されたアプリケーションの任意のデータポインタ
client 新しく受け入れた接続
返り値
なし

typedef void ( *MrsConnectCallback)( MrsConnection connection, void* connection_data )

サーバへの接続に成功した時に呼び出されるコールバック関数

引数
connection サーバへの接続処理に成功した接続
connection_data 接続に対してアプリケーションが設定した任意のデータポインタ
返り値
なし

typedef void ( *MrsDisconnectCallback)( MrsConnection connection, void* connection_data )

接続が切断したときに呼び出されるコールバック関数

引数
connection 切断が発生した接続
connection_data 接続に対してアプリケーションが設定した任意のデータポインタ
返り値
なし

typedef void ( *MrsErrorCallback)( MrsConnection connection, void* connection_data, MrsConnectionError status )

接続でエラーが発生したときに呼び出されるコールバック関数

引数
connection エラーが発生した接続
connection_data 接続に対してアプリケーションが設定した任意のデータポインタ
status エラー種別コード
返り値
なし

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

レコードを1個受信したときに呼び出されるコールバック関数

引数
connection レコードを受信した接続
connection_data 接続に対してアプリケーションが設定した任意のデータポインタ
seqnum 送信側が付与した通し番号
options 送信側が設定した送信オプション
payload_type 送信側が設定したペイロード種別
payload 送信されたデータ
payload_len 送信されたデータの長さ(バイト数)
返り値
なし

typedef void ( *MrsReadCallback)( MrsConnection connection, void* connection_data, const void* data, uint32 data_len )

バイナリデータを受信したときに呼び出されるコールバック関数

引数
connection レコードを受信した接続
connection_data 接続に対してアプリケーションが設定した任意のデータポインタ
data 送信されたデータ
data_len 送信されたデータの長さ(バイト数)
返り値
なし

typedef void ( *MrsKeyExchangeCallback)( MrsConnection connection, void* connection_data )

鍵交換が完了したときに呼ばれるコールバック関数

引数
connection 鍵交換が完了した接続
connection_data 接続に対してアプリケーションが設定した任意のデータポインタ
返り値
なし