50 constexpr
const char error_field[] =
"error";
51 constexpr
const char id_field[] =
"id";
52 constexpr
const char method_field[] =
"method";
53 constexpr
const char params_field[] =
"params";
54 constexpr
const char result_field[] =
"result";
61 auto& al = doc.GetAllocator();
83 doc.AddMember(params_field,
message->toJson(doc), doc.GetAllocator());
89 FullMessage::FullMessage(Message*
message)
94 doc.AddMember(
"jsonrpc",
"2.0", doc.GetAllocator());
98 doc.AddMember(result_field,
message->toJson(doc), doc.GetAllocator());
111 FullMessage::FullMessage(
const std::string& json_string,
bool request)
113 doc.Parse(json_string.c_str());
114 if (doc.HasParseError() || !doc.IsObject())
128 if (!doc.HasMember(result_field) && !doc.HasMember(error_field))
138 if (!doc.HasMember(id_field))
145 rapidjson::Writer<rapidjson::StringBuffer> writer(
buf);
155 return doc[method_field].GetString();
160 if (doc.HasMember(params_field))
162 return doc[params_field];
164 else if (doc.HasMember(result_field))
166 return doc[result_field];
171 return doc[error_field];
185 return doc[id_field];
190 auto itr = doc.FindMember(id_field);
191 if (itr != doc.MemberEnd())
197 doc.AddMember(id_field,
id, doc.GetAllocator());
205 if (doc.HasMember(error_field))
242 auto& doc = full_message->doc;
243 auto& al = full_message->doc.GetAllocator();
248 doc.AddMember(
"jsonrpc",
"2.0", al);
252 err.
error_str =
"RPC request timed out.";
267 return fail_response.
getJson();
278 return fail_response.
getJson();
289 return fail_response.
getJson();
#define INSERT_INTO_JSON_OBJECT(jsonVal, doc, key, source)
std::string error_details
static const char * STATUS_BAD_JSON
std::string BAD_REQUEST(const std::string &request)
virtual rapidjson::Value toJson(rapidjson::Document &doc) const
#define GET_FROM_JSON_OBJECT(source, dst, key)
static const char * STATUS_FAILED
rapidjson::Value & getID()
Holds cryptonote related classes and helpers.
std::string getRequestType() const
static const char * STATUS_BAD_REQUEST
GenericValue< UTF8<> > Value
GenericValue with UTF8 encoding.
#define OBJECT_HAS_MEMBER_OR_THROW(val, key)
GenericDocument< UTF8<> > Document
GenericDocument with UTF8 encoding.
virtual void fromJson(rapidjson::Value &val)
GenericStringBuffer< UTF8< char >, CrtAllocator > StringBuffer
static FullMessage requestMessage(const std::string &request, Message *message)
static FullMessage * timeoutMessage()
std::string message("Message requiring signing")
static const char * STATUS_RETRY
GenericStringRef< CharType > StringRef(const CharType *str)
Mark a character pointer as constant string.
cryptonote::rpc::error getError()
static FullMessage responseMessage(Message *message)
void setID(rapidjson::Value &id)
rapidjson::Value & getMessage()
static const char * STATUS_OK
error
Tracks LMDB error codes.
rapidjson::Value getMessageCopy()
std::string BAD_JSON(const std::string &error_details)