cleanup before doing some MV
authorimarom <[email protected]>
Mon, 17 Aug 2015 07:55:18 +0000 (10:55 +0300)
committerimarom <[email protected]>
Mon, 17 Aug 2015 07:55:18 +0000 (10:55 +0300)
src/rpc-server/include/trex_rpc_server_api.h
src/rpc-server/src/trex_rpc_req_resp.cpp
src/rpc-server/src/trex_rpc_server.cpp

index 8009137..5f567a5 100644 (file)
@@ -105,6 +105,7 @@ protected:
 /**
  * TREX RPC server 
  * may contain serveral types of RPC servers 
+ * (request response, async and etc.) 
  * 
  * @author imarom (12-Aug-15)
  */
index 2d8f12f..f5fad46 100644 (file)
@@ -30,16 +30,26 @@ limitations under the License.
 #include <zmq.h>
 #include <json/json.h>
 
-
+/**
+ * ZMQ based request-response server
+ * 
+ */
 TrexRpcServerReqRes::TrexRpcServerReqRes(const TrexRpcServerConfig &cfg) : TrexRpcServerInterface(cfg) {
     /* ZMQ is not thread safe - this should be outside */
     m_context = zmq_ctx_new();
 }
 
+/**
+ * main entry point for the server 
+ * this function will be created on a different thread 
+ * 
+ * @author imarom (17-Aug-15)
+ */
 void TrexRpcServerReqRes::_rpc_thread_cb() {
     std::stringstream ss;
 
-    //  Socket to talk to clients
+    /* create a socket based on the configuration */
+
     m_socket  = zmq_socket (m_context, ZMQ_REP);
 
     switch (m_cfg.get_protocol()) {
@@ -52,6 +62,7 @@ void TrexRpcServerReqRes::_rpc_thread_cb() {
 
     ss << m_cfg.get_port();
 
+    /* bind the scoket */
     int rc = zmq_bind (m_socket, ss.str().c_str());
     if (rc != 0) {
         throw TrexRpcException("Unable to start ZMQ server at: " + ss.str());
@@ -61,6 +72,7 @@ void TrexRpcServerReqRes::_rpc_thread_cb() {
     while (m_is_running) {
         int msg_size = zmq_recv (m_socket, m_msg_buffer, sizeof(m_msg_buffer), 0);
 
+        /* msg_size of -1 is an error - decode it */
         if (msg_size == -1) {
             /* normal shutdown and zmq_term was called */
             if (errno == ETERM) {
@@ -70,6 +82,7 @@ void TrexRpcServerReqRes::_rpc_thread_cb() {
             }
         }
 
+        /* transform it to a string */
         std::string request((const char *)m_msg_buffer, msg_size);
         handle_request(request);
     }
@@ -78,23 +91,32 @@ void TrexRpcServerReqRes::_rpc_thread_cb() {
     zmq_close(m_socket);
 }
 
+/**
+ * stops the ZMQ based RPC server
+ * 
+ */
 void TrexRpcServerReqRes::_stop_rpc_thread() {
     /* by calling zmq_term we signal the blocked thread to exit */
     zmq_term(m_context);
 
 }
 
+/**
+ * handles a request given to the server
+ * respondes to the request
+ */
 void TrexRpcServerReqRes::handle_request(const std::string &request) {
     std::vector<TrexJsonRpcV2ParsedObject *> commands;
     Json::FastWriter writer;
     Json::Value response;
 
+    /* first parse the request using JSON RPC V2 parser */
     TrexJsonRpcV2Parser rpc_request(request);
-
     rpc_request.parse(commands);
 
     int index = 0;
 
+    /* for every command parsed - launch it */
     for (auto command : commands) {
         Json::Value single_response;
 
index 2e3f97f..bdbab5c 100644 (file)
@@ -38,6 +38,11 @@ TrexRpcServerInterface::~TrexRpcServerInterface() {
     }
 }
 
+/**
+ * starts a RPC specific server
+ * 
+ * @author imarom (17-Aug-15)
+ */
 void TrexRpcServerInterface::start() {
     m_is_running = true;