JSON-RPCのリクエストをシリアライズしてメモリに書きこむためのクラスです。
[詳解]
#include "nn/nlib/msgpack/jsonrpc/JsonRpcRequest.h"
JSON-RPCのリクエストをシリアライズしてメモリに書きこむためのクラスです。
- 説明
- クライアント側でJSON-RPCリクエストとなるバイト列を作成するために利用されるクラスです。
JsonRpcRequest
で作成したJSON-RPCリクエストをシリアライズしてサーバーに送信できるバイト列に変換します。
実際のデータ送信(と受信)はユーザーが記述する必要があります。
- 単体リクエストとバッチリクエストの両方を作成することが可能です。
- 単一のリクエストを送信する場合は以下のようなコードになります。
JsonRpcRequest& req = ...;
e = w.BeginWriteRequest(1);
e = w.WriteRequest(req);
size_t nBytes;
e = w.EndWriteRequest(&reqBytes, &nBytes);
- バッチリクエストを送信する場合は以下のようなコードになります。
Seq<JsonRpcRequest>& seq = ...;
e = w.BeginWriteRequest(seq.size());
foreach(item in seq) {
e = w.WriteRequest(item);
}
size_t nBytes;
e = w.EndWriteRequest(&reqBytes, &nBytes);
JsonRpcRequest.h の 67 行目に定義があります。
§ JsonRpcRequestWriter()
nn::nlib::msgpack::jsonrpc::JsonRpcRequestWriter::JsonRpcRequestWriter |
( |
bool |
use_msgpack | ) |
|
|
inlineexplicitnoexcept |
true
にすることでJSONの記述方式にJSONではなくmsgpack
を利用します。
- 引数
-
[in] | use_msgpack | true ならばmsgpack を利用 |
- 説明
nlib
のJSON-RPCサーバーはmsgpack
のリクエストを処理することが可能で、この場合、レスポンスもmsgpack
形式でクライアントに送信するようになります。
JsonRpcRequest.h の 71 行目に定義があります。
§ BeginWriteRequest()
nn::nlib::msgpack::jsonrpc::JsonRpcRequestWriter::BeginWriteRequest |
( |
uint32_t |
n | ) |
|
|
noexcept |
JSON-RPCのリクエストを書きこむ前に1回呼び出します。
- 引数
-
[in] | n | 書きこむリクエストの数(n >= 2でバッチリクエストになる) |
- 戻り値
-
0 | 成功しました。 |
ENOMEM | メモリの確保に失敗した場合 |
§ EndWriteRequest()
JSON-RPCリクエストの書き込みを完了します。
- 引数
-
[out] | ptr | バイト列が格納されるポインタ |
[out] | n | データのバイト数が書き込まれるポインタ |
- 戻り値
-
0 | 成功しました。 |
EINVAL | ptr またはn がNULLの場合 |
ERANGE | リクエストの個数がBeginWriteRequest() で指定した数と一致しない場合 |
ENOMEM | メモリの確保に失敗した場合 |
- 説明
- 成功すると、
ptr
にn
バイトのデータが設定されます。 このデータをサーバーに送信することでクライアント側からのJSON-RPCの呼び出しが完了します。
§ WriteNotification()
nn::nlib::msgpack::jsonrpc::JsonRpcRequestWriter::WriteNotification |
( |
const char * |
method, |
|
|
const MpObject & |
params |
|
) |
| |
|
inlinenoexcept |
JSON-RPCのNotificationを書き込みます。
- 引数
-
[in] | method | メソッド名 |
[in] | params | パラメータ |
- 戻り値
- 0ならば成功
- 説明
- 以下のコードと等価です。
JsonRpcRequest.h の 75 行目に定義があります。
§ WriteRequest() [1/2]
nn::nlib::msgpack::jsonrpc::JsonRpcRequestWriter::WriteRequest |
( |
const char * |
method, |
|
|
reqid_t |
id, |
|
|
const MpObject & |
params |
|
) |
| |
|
noexcept |
JSON-RPCのリクエストを書き込みます。
- 引数
-
[in] | method | メソッド名 |
[in] | id | リクエストのID |
[in] | params | パラメータ |
- 戻り値
-
0 | 成功しました。 |
EINVAL | method がNULL か空文字列の場合 |
ERANGE | リクエストの個数がBeginWriteRequest() で指定した数を超えた場合 |
ENOMEM | メモリの確保に失敗した場合 |
その他 | JSON/msgpackの書き込みに失敗した際にエラーが発生した場合 |
§ WriteRequest() [2/2]
nn::nlib::msgpack::jsonrpc::JsonRpcRequestWriter::WriteRequest |
( |
const JsonRpcRequest & |
req | ) |
|
|
inlinenoexcept |
JSON-RPCのリクエストを書き込みます。
- 引数
-
- 戻り値
- 0ならば成功。
- 説明
- 以下のコードと等価です。
this->
WriteRequest(req.GetMethod(), req.GetId(), req.GetParams());
JsonRpcRequest.h の 78 行目に定義があります。
このクラス詳解は次のファイルから抽出されました: