16 #ifndef INCLUDE_NN_NLIB_MSGPACK_JSONRPC_JSONRPCREQUEST_H_ 17 #define INCLUDE_NN_NLIB_MSGPACK_JSONRPC_JSONRPCREQUEST_H_ 25 #include "nn/nlib/Swap.h" 29 #ifdef __cpp_rvalue_references 33 #if defined(_MSC_VER) && defined(nx_msgpack_EXPORTS) 34 #undef NLIB_VIS_PUBLIC 35 #define NLIB_VIS_PUBLIC NLIB_WINEXPORT 43 class JsonRpcErrorRequestTest;
62 #ifdef __cpp_rvalue_references 75 JsonRpcResponse response_;
79 friend class JsonRpcRequestReader;
80 friend class fortest::JsonRpcErrorRequestTest;
89 #ifdef __cpp_rvalue_references 91 is_msgpack_(rhs.is_msgpack_) {
96 is_msgpack_ = rhs.is_msgpack_;
103 is_msgpack_(rhs.is_msgpack_) {
108 is_msgpack_ = rhs.is_msgpack_;
113 is_msgpack_(use_msgpack) {}
118 return WriteRequest(method,
id, nil_param);
121 return WriteRequest(method, 0, params);
125 return WriteRequest(method, 0, nil_param);
128 return WriteRequest(req.GetMethod(), req.GetId(), req.GetParams());
131 #ifdef __cpp_rvalue_references 132 std::tuple<errno_t, UniquePtrType, size_t> EndWriteRequest()
NLIB_NOEXCEPT;
136 struct JsonRpcRequestWriterPrivate;
137 JsonRpcRequestWriterPrivate* prv_;
154 NLIB_DEFINE_STD_SWAP(::nlib_ns::msgpack::jsonrpc::JsonRpcRequestWriter)
155 #if defined(_MSC_VER) && defined(nx_msgpack_EXPORTS) 156 #undef NLIB_VIS_PUBLIC 157 #define NLIB_VIS_PUBLIC NLIB_WINIMPORT 160 #endif // INCLUDE_NN_NLIB_MSGPACK_JSONRPC_JSONRPCREQUEST_H_
errno_t WriteRequest(const char *method, reqid_t id) noexcept
パラメータを省略したJSON-RPCのリクエストを書き込みます。
constexpr JsonRpcRequestWriter() noexcept
デフォルトコンストラクタです。
JsonRpcRequestWriter(JsonRpcRequestWriter &&rhs) noexcept
ムーブコンストラクタです。
JsonRpcRequest() noexcept
デフォルトコンストラクタです。
errno_t WriteNotification(const char *method, const MpObject ¶ms) noexcept
JSON-RPCのNotificationを書き込みます。
const char * GetMethod() const noexcept
このリクエストのメソッド名を取得します。
#define NLIB_DISALLOW_COPY_AND_ASSIGN(TypeName)
TypeName で指定されたクラスのコピーコンストラクタと代入演算子を禁止します。
void SetId(reqid_t id) noexcept
リクエストのidを設定します。
JSON-RPCのリクエストをシリアライズしてメモリに書きこむためのクラスです。
C++11環境(エイリアステンプレートが可能な環境)においてはstd::unique_ptrにエイリアステンプレートされま...
std::unique_ptrに相当するクラスが定義されています。
MessagePack又はJSONを読み込むことで作成されるオブジェクトです。
void MoveParamsFrom(MpObject &¶ms) noexcept
JSON-RPCのパラメータを設定します。
JsonRpcRequestWriter(bool use_msgpack) noexcept
trueにすることでJSONの記述方式にJSONではなくmsgpackを利用します。
std::vectorに似ていますが、コピーできないオブジェクトを格納可能なクラスが定義されています。 ...
空の構造体で、関数の引数をムーブすべきことを示すために利用されます。
JsonRpcRequestWriter & operator=(JsonRpcRequestWriter &&rhs) noexcept
ムーブ代入演算子です。
JSON-RPCリクエストを読み込むためのクラスです。
void MoveParamsFrom(MpObject ¶ms) noexcept
JSON-RPCのパラメータを設定します。
MessagePack, JSON及びCSVを読み込むと作成されるオブジェクトです。
errno_t WriteNotification(const char *method) noexcept
パラメータを省略したJSON-RPCのNotificationを書き込みます。
Nlist< JsonRpcRequest > ListType
バイト列から復元されるJSON-RPCリクエストのシーケンスを格納する型
nlib_thread_id GetId() noexcept
カレントスレッドのIDを取得します。
#define NLIB_NOEXCEPT
環境に合わせてnoexcept 又は同等の定義がされます。
#define NLIB_CEXPR
利用可能であればconstexprが定義されます。そうでない場合は空文字列です。
uint32_t reqid_t
JSON-RPCのリクエストに付与されるidの型です。
std::vectorに似た、コピーコンストラクタを持たないオブジェクトを格納可能なコンテナ類似クラスです。 ...
const MpObject & GetParams() const noexcept
上記関数のconst修飾付き版です。
errno_t WriteRequest(const JsonRpcRequest &req) noexcept
JSON-RPCのリクエストを書き込みます。
size_t JsonRpcServerExec(const void *p, size_t n, ReallocOutputStream::UniquePtrType *ptr)
JSON-RPCリクエストを処理してJSON-RPCレスポンスのバイト列を作成します。
#define NLIB_FINAL
利用可能であればfinalが定義されます。そうでない場合は空文字列です。
MpObject & GetParams() noexcept
このリクエストのパラメータを取得します。