commands.push_back(new JsonRpcMethod(msg_id, rpc_cmd, request["params"]));
}
+/**
+ * tries to pretty a JSON str
+ *
+ * @author imarom (03-Sep-15)
+ *
+ * @param json_str
+ *
+ * @return std::string
+ */
+std::string TrexJsonRpcV2Parser::pretty_json_str(const std::string &json_str) {
+ Json::Reader reader;
+ Json::Value value;
+
+ /* basic JSON parsing */
+ bool rc = reader.parse(json_str, value, false);
+ if (!rc) {
+ /* duplicate the soruce */
+ return json_str;
+ }
+
+ /* successfully parsed */
+ Json::StyledWriter writer;
+ return writer.write(value);
+}
+
*/
void parse(std::vector<TrexJsonRpcV2ParsedObject *> &commands);
+ /**
+ * *tries* to generate a pretty string from JSON
+ * if json_str is not a valid JSON string
+ * it will duplicate the source
+ *
+ */
+ static std::string pretty_json_str(const std::string &json_str);
+
private:
/**
/* transform it to a string */
std::string request((const char *)m_msg_buffer, msg_size);
- verbose_msg("Server Received: " + request);
+ verbose_json("Server Received: ", TrexJsonRpcV2Parser::pretty_json_str(request));
handle_request(request);
}
*/
void TrexRpcServerReqRes::handle_request(const std::string &request) {
std::vector<TrexJsonRpcV2ParsedObject *> commands;
+
Json::FastWriter writer;
Json::Value response;
response_str = writer.write(response);
}
- verbose_msg("Server Replied: " + response_str);
+ verbose_json("Server Replied: ", response_str);
zmq_send(m_socket, response_str.c_str(), response_str.size(), 0);
#include <trex_rpc_server_api.h>
#include <trex_rpc_req_resp_server.h>
+#include <trex_rpc_jsonrpc_v2_parser.h>
#include <unistd.h>
#include <zmq.h>
#include <sstream>
std::cout << "[verbose][" << m_name << "] " << msg << "\n";
}
+void TrexRpcServerInterface::verbose_json(const std::string &msg, const std::string &json_str) {
+ verbose_msg(msg + "\n\n" + TrexJsonRpcV2Parser::pretty_json_str(json_str));
+}
+
/**
* starts a RPC specific server
*
*/
void verbose_msg(const std::string &msg);
+ /**
+ * prints a verbose message with a JSON to be converted to
+ * string
+ *
+ */
+ void verbose_json(const std::string &msg, const std::string &json_str);
+
TrexRpcServerConfig m_cfg;
bool m_is_running;
bool m_is_verbose;