RES send_request(const REQ& req, zmq::socket_t& sending_socket, zmq::socket_t& receiving_socket, bool& succeed) { std::string serialized_req; req.SerializeToString(&serialized_req); kZmqUtil->send_string(serialized_req, &sending_socket); RES response; zmq::message_t message; bool recurse = recursive_receive<REQ, RES>(receiving_socket, message, req, response, succeed); while (recurse) { response.Clear(); zmq::message_t message; recurse = recursive_receive<REQ, RES>(receiving_socket, message, req, response, succeed); } return response; }