bool Round::RemoteNode::postMessage(uHTTP::HTTPRequest *httpReq, JSONObject **rootObj, Error *error) { // HTTP Request std::string requestAddr; int requestPort; if (!getRequestAddress(&requestAddr, error) || !getRequestPort(&requestPort, error)) return false; httpReq->setHost(requestAddr, requestPort); uHTTP::HTTPResponse httpRes; httpReq->post(requestAddr, requestPort, &httpRes); // Set error code and message int statusCode = httpRes.getStatusCode(); if (!uHTTP::HTTP::IsStatusCodeSuccess(statusCode)) { error->setCode(statusCode); error->setMessage(uHTTP::HTTP::StatusCodeToString(statusCode)); return false; } std::string httpContent = httpRes.getContent(); if (httpContent.length() <= 0) { statusCode = uHTTP::HTTP::NOT_FOUND; error->setCode(statusCode); error->setMessage(uHTTP::HTTP::StatusCodeToString(statusCode)); return false; } JSONParser jsonParser; if (jsonParser.parse(httpContent, error) == false) { RPC::JSON::ErrorCodeToError(RPC::JSON::ErrorCodeParserError, error); return false; } *rootObj = jsonParser.popRootObject(); if (!(*rootObj)) { RPC::JSON::ErrorCodeToError(RPC::JSON::ErrorCodeParserError, error); return false; } return true; }