nlib
nn::nlib::msgpack::jsonrpc::JsonRpcRequestWriter クラスfinal

JSON-RPCのリクエストをシリアライズしてメモリに書きこむためのクラスです。 [詳解]

#include "nn/nlib/msgpack/jsonrpc/JsonRpcRequest.h"

公開メンバ関数

 JsonRpcRequestWriter ()
 デフォルトコンストラクタです。
 
 JsonRpcRequestWriter (bool use_msgpack)
 trueにすることでJSONの記述方式にJSONではなくmsgpackを利用します。 [詳解]
 
errno_t BeginWriteRequest (uint32_t n)
 JSON-RPCのリクエストを書きこむ前に1回呼び出します。 [詳解]
 
errno_t WriteRequest (const char *method, reqid_t id, const MpObject &params)
 JSON-RPCのリクエストを書き込みます。 [詳解]
 
errno_t WriteNotification (const char *method, const MpObject &params)
 JSON-RPCのNotificationを書き込みます。 [詳解]
 
errno_t WriteRequest (const JsonRpcRequest &req)
 JSON-RPCのリクエストを書き込みます。 [詳解]
 
errno_t EndWriteRequest (ReallocOutputStream::UniquePtrType *ptr, size_t *n)
 JSON-RPCリクエストの書き込みを完了します。 [詳解]
 

詳解

JSON-RPCのリクエストをシリアライズしてメモリに書きこむためのクラスです。

説明
クライアント側でJSON-RPCリクエストとなるバイト列を作成するために利用されるクラスです。
JsonRpcRequestで作成したJSON-RPCリクエストをシリアライズしてサーバーに送信できるバイト列に変換します。
実際のデータ送信(と受信)はユーザーが記述する必要があります。
単体リクエストとバッチリクエストの両方を作成することが可能です。
単一のリクエストを送信する場合は以下のようなコードになります。
JsonRpcRequest& req = ...;
e = w.BeginWriteRequest(1);
if (e != 0) { エラー }
e = w.WriteRequest(req);
if (e != 0) { エラー }
size_t nBytes;
e = w.EndWriteRequest(&reqBytes, &nBytes);
if (e != 0) { エラー }
// ここにreqBytesの内容を実際に送信するコードを記述
バッチリクエストを送信する場合は以下のようなコードになります。
Seq<JsonRpcRequest>& seq = ...;
e = w.BeginWriteRequest(seq.size());
if (e != 0) { エラー }
foreach(item in seq) {
e = w.WriteRequest(item);
if (e != 0) { エラー }
}
size_t nBytes;
e = w.EndWriteRequest(&reqBytes, &nBytes);
if (e != 0) { エラー }
// ここにreqBytesの内容を実際に送信するコードを記述

JsonRpcRequest.h69 行目に定義があります。

構築子と解体子

nn::nlib::msgpack::jsonrpc::JsonRpcRequestWriter::JsonRpcRequestWriter ( bool  use_msgpack)
inlineexplicit

trueにすることでJSONの記述方式にJSONではなくmsgpackを利用します。

引数
[in]use_msgpacktrueならばmsgpackを利用
説明
nlibのJSON-RPCサーバーはmsgpackのリクエストを処理することが可能で、この場合、レスポンスもmsgpack形式でクライアントに送信するようになります。

JsonRpcRequest.h72 行目に定義があります。

関数詳解

nn::nlib::msgpack::jsonrpc::JsonRpcRequestWriter::BeginWriteRequest ( uint32_t  n)

JSON-RPCのリクエストを書きこむ前に1回呼び出します。

引数
[in]n書きこむリクエストの数(n >= 2でバッチリクエストになる)
戻り値
0成功しました。
ENOMEMメモリの確保に失敗した場合
nn::nlib::msgpack::jsonrpc::JsonRpcRequestWriter::EndWriteRequest ( ReallocOutputStream::UniquePtrType ptr,
size_t *  n 
)

JSON-RPCリクエストの書き込みを完了します。

引数
[out]ptrバイト列が格納されるポインタ
[out]nデータのバイト数が書き込まれるポインタ
戻り値
0成功しました。
EINVALptr またはn がNULLの場合
ERANGEリクエストの個数がBeginWriteRequest()で指定した数と一致しない場合
ENOMEMメモリの確保に失敗した場合
説明
成功すると、ptrnバイトのデータが設定されます。 このデータをサーバーに送信することでクライアント側からのJSON-RPCの呼び出しが完了します。
nn::nlib::msgpack::jsonrpc::JsonRpcRequestWriter::WriteNotification ( const char *  method,
const MpObject params 
)
inline

JSON-RPCのNotificationを書き込みます。

引数
[in]methodメソッド名
[in]paramsパラメータ
戻り値
0ならば成功
説明
以下のコードと等価です。
this->WriteRequest(method, 0, params);

JsonRpcRequest.h76 行目に定義があります。

nn::nlib::msgpack::jsonrpc::JsonRpcRequestWriter::WriteRequest ( const char *  method,
reqid_t  id,
const MpObject params 
)

JSON-RPCのリクエストを書き込みます。

引数
[in]methodメソッド名
[in]idリクエストのID
[in]paramsパラメータ
戻り値
0成功しました。
EINVALmethodNULLか空文字列の場合
ERANGEリクエストの個数がBeginWriteRequest()で指定した数を超えた場合
ENOMEMメモリの確保に失敗した場合
その他JSON/msgpackの書き込みに失敗した際にエラーが発生した場合
nn::nlib::msgpack::jsonrpc::JsonRpcRequestWriter::WriteRequest ( const JsonRpcRequest req)
inline

JSON-RPCのリクエストを書き込みます。

引数
[in]reqJSON-RPCリクエスト
戻り値
0ならば成功。
説明
以下のコードと等価です。
this->WriteRequest(req.GetMethod(), req.GetId(), req.GetParams());

JsonRpcRequest.h79 行目に定義があります。


このクラス詳解は次のファイルから抽出されました: