JSON-RPCのクライアント側の管理を行うクラスです。
[詳解]
#include "nn/nlib/msgpack/jsonrpc/JsonRpcClient.h"
JSON-RPCのクライアント側の管理を行うクラスです。
- 説明
- 以下のようなことを行います。
-
GenerateId()
でリクエストに付与するIDを生成する。
-
レスポンスが到着した場合に有効になるfutureを作成する。
-
サーバーからのレスポンスを振り分ける。
JsonRpcClient.h の 37 行目に定義があります。
◆ NoTargetResponseHandler
◆ JsonRpcClient()
nn::nlib::msgpack::jsonrpc::JsonRpcClient::JsonRpcClient |
( |
const JsonRpcClient & |
rhs | ) |
|
|
inline |
◆ Abort()
nn::nlib::msgpack::jsonrpc::JsonRpcClient::Abort |
( |
reqid_t |
reqid | ) |
|
◆ CloseClient()
nn::nlib::msgpack::jsonrpc::JsonRpcClient::CloseClient |
( |
const JsonRpcClient & |
client | ) |
|
|
static |
◆ GenerateId()
nn::nlib::msgpack::jsonrpc::JsonRpcClient::GenerateId |
( |
| ) |
|
JSON-RPCのリクエストに記述するIDを作成して返します。
- 戻り値
- 0以外のユニークなIDを返します。
◆ GetFutureForId()
nn::nlib::msgpack::jsonrpc::JsonRpcClient::GetFutureForId |
( |
FutureType * |
future, |
|
|
reqid_t |
reqid |
|
) |
| |
リクエストIDに対応するfutureを取得します。
- 引数
-
[out] | future | リクエストに対応するレスポンスが来ると有効になるfutureが格納されるポインタ |
[in] | reqid | リクエストのID |
- 戻り値
-
0 | 成功した場合 |
ESRCH | クライアントが有効でない場合 |
ENOMEM | メモリが足りない場合 |
◆ OpenClient()
nn::nlib::msgpack::jsonrpc::JsonRpcClient::OpenClient |
( |
const char * |
name | ) |
|
|
static |
クライアントをオープンします。存在しない場合は作成します。
- 引数
-
- 戻り値
- クライアントオブジェクト
- 説明
- 多くの場合、サーバー毎に1つの
JsonRpcClient
オブジェクトを作成することになります。
- 以下がコード例です。
◆ ResolveResponse()
nn::nlib::msgpack::jsonrpc::JsonRpcClient::ResolveResponse |
( |
const void * |
buf, |
|
|
size_t |
nbytes |
|
) |
| |
レスポンスのデータを受け取り、対応するfutureを有効にします。
- 引数
-
[in] | buf | レスポンスデータへのポインタ |
[in] | nbytes | レスポンスのサイズ |
- 戻り値
-
0 | 成功した場合 |
EINVAL | buf がNULL であるか、nbytes が0である場合 |
ESRCH | クライアントが有効でない場合 |
ENOMEM | メモリが足りない場合 |
EILSEQ | レスポンスデータを解釈できなかった場合 |
- 説明
- サーバーから(ユーザーが決定した)何らかの伝送経路から受け取ったレスポンスを適切に振り分けて、対応するfutureを有効にします。
この関数はユーザーコードから呼び出す必要があることに注意してください。 また、レスポンスデータは単一で完結している必要があります。
◆ SearchClient()
nn::nlib::msgpack::jsonrpc::JsonRpcClient::SearchClient |
( |
const char * |
name | ) |
|
|
static |
オープンされたクライアントを探して返します。
- 引数
-
- 戻り値
- クライアントオブジェクト
◆ SetNoTargetResponseHandler()
振り分けることができなかったレスポンスが発生した場合に呼び出さる関数を設定します。
- 引数
-
- 戻り値
-
- 説明
- タイムアウト後や
Abort()
した場合等にレスポンスが帰ってきた場合などは、レスポンスに対してfutureを有効にすることができません。
そのような場合にhandler
が呼び出され、レスポンスを処理することができます。
◆ swap()
nn::nlib::msgpack::jsonrpc::JsonRpcClient::swap |
( |
JsonRpcClient & |
rhs | ) |
|
|
inline |
このクラス詳解は次のファイルから抽出されました: