diff options
Diffstat (limited to 'src/rpc-server/include')
-rw-r--r-- | src/rpc-server/include/trex_rpc_cmd_api.h | 90 | ||||
-rw-r--r-- | src/rpc-server/include/trex_rpc_cmds_table.h | 79 | ||||
-rw-r--r-- | src/rpc-server/include/trex_rpc_exception_api.h | 39 | ||||
-rw-r--r-- | src/rpc-server/include/trex_rpc_jsonrpc_v2_parser.h | 94 | ||||
-rw-r--r-- | src/rpc-server/include/trex_rpc_req_resp_server.h | 51 | ||||
-rw-r--r-- | src/rpc-server/include/trex_rpc_server_api.h | 165 |
6 files changed, 0 insertions, 518 deletions
diff --git a/src/rpc-server/include/trex_rpc_cmd_api.h b/src/rpc-server/include/trex_rpc_cmd_api.h deleted file mode 100644 index c773b15f..00000000 --- a/src/rpc-server/include/trex_rpc_cmd_api.h +++ /dev/null @@ -1,90 +0,0 @@ -/* - Itay Marom - Cisco Systems, Inc. -*/ - -/* -Copyright (c) 2015-2015 Cisco Systems, Inc. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -#ifndef __TREX_RPC_CMD_API_H__ -#define __TREX_RPC_CMD_API_H__ - -#include <string> -#include <vector> -#include <json/json.h> - -/** - * interface for RPC command - * - * @author imarom (13-Aug-15) - */ -class TrexRpcCommand { -public: - - /** - * describe different types of rc for run() - */ - enum rpc_cmd_rc_e { - RPC_CMD_OK, - RPC_CMD_PARAM_COUNT_ERR = 1, - RPC_CMD_PARAM_PARSE_ERR, - RPC_CMD_INTERNAL_ERR - }; - - /** - * method name and params - */ - TrexRpcCommand(const std::string &method_name) : m_name(method_name) { - - } - - rpc_cmd_rc_e run(const Json::Value ¶ms, Json::Value &result) { - return _run(params, result); - } - - const std::string &get_name() { - return m_name; - } - - virtual ~TrexRpcCommand() {} - -protected: - - /** - * implemented by the dervied class - * - */ - virtual rpc_cmd_rc_e _run(const Json::Value ¶ms, Json::Value &result) = 0; - - /** - * error generating functions - * - */ - void genernate_err(Json::Value &result, const std::string &msg) { - result["specific_err"] = msg; - } - - void generate_err_param_count(Json::Value &result, int expected, int provided) { - std::stringstream ss; - ss << "method expects '" << expected << "' paramteres, '" << provided << "' provided"; - genernate_err(result, ss.str()); - } - - std::string m_name; -}; - -#endif /* __TREX_RPC_CMD_API_H__ */ - diff --git a/src/rpc-server/include/trex_rpc_cmds_table.h b/src/rpc-server/include/trex_rpc_cmds_table.h deleted file mode 100644 index a41944f1..00000000 --- a/src/rpc-server/include/trex_rpc_cmds_table.h +++ /dev/null @@ -1,79 +0,0 @@ -/* - Itay Marom - Cisco Systems, Inc. -*/ - -/* -Copyright (c) 2015-2015 Cisco Systems, Inc. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -#ifndef __TREX_RPC_CMDS_TABLE_H__ -#define __TREX_RPC_CMDS_TABLE_H__ - -#include <unordered_map> -#include <string> -#include <vector> -#include <json/json.h> - -class TrexRpcCommand; - -/** - * holds all the commands registered - * - * @author imarom (13-Aug-15) - */ -class TrexRpcCommandsTable { - -public: - - static TrexRpcCommandsTable& get_instance() { - static TrexRpcCommandsTable instance; - return instance; - } - - /** - * register a new command - * - */ - void register_command(TrexRpcCommand *command); - - /** - * lookup for a command - * - */ - TrexRpcCommand * lookup(const std::string &method_name); - - /** - * query all commands registered - * - */ - void query(std::vector<std::string> &cmds); - -private: - TrexRpcCommandsTable(); - ~TrexRpcCommandsTable(); - - /* c++ 2011 style singleton */ - TrexRpcCommandsTable(TrexRpcCommandsTable const&) = delete; - void operator=(TrexRpcCommandsTable const&) = delete; - - /** - * holds all the registered RPC commands - * - */ - std::unordered_map<std::string, TrexRpcCommand *> m_rpc_cmd_table; -}; - -#endif /* __TREX_RPC_CMDS_TABLE_H__ */ diff --git a/src/rpc-server/include/trex_rpc_exception_api.h b/src/rpc-server/include/trex_rpc_exception_api.h deleted file mode 100644 index 8783c219..00000000 --- a/src/rpc-server/include/trex_rpc_exception_api.h +++ /dev/null @@ -1,39 +0,0 @@ -/* - Itay Marom - Cisco Systems, Inc. -*/ - -/* -Copyright (c) 2015-2015 Cisco Systems, Inc. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -#ifndef __TREX_RPC_EXCEPTION_API_H__ -#define __TREX_RPC_EXCEPTION_API_H__ - -#include <string> -#include <stdexcept> - -/** - * generic exception for RPC errors - * - */ -class TrexRpcException : public std::runtime_error -{ -public: - TrexRpcException(const std::string &what) : std::runtime_error(what) { - } -}; - -#endif /* __TREX_RPC_EXCEPTION_API_H__ */ diff --git a/src/rpc-server/include/trex_rpc_jsonrpc_v2_parser.h b/src/rpc-server/include/trex_rpc_jsonrpc_v2_parser.h deleted file mode 100644 index 3367ad6a..00000000 --- a/src/rpc-server/include/trex_rpc_jsonrpc_v2_parser.h +++ /dev/null @@ -1,94 +0,0 @@ -/* - Itay Marom - Cisco Systems, Inc. -*/ - -/* -Copyright (c) 2015-2015 Cisco Systems, Inc. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -#ifndef __TREX_RPC_JSONRPC_V2_PARSER_H__ -#define __TREX_RPC_JSONRPC_V2_PARSER_H__ - -#include <string> -#include <vector> -#include <json/json.h> - -/** - * JSON RPC V2 parsed object - * - * @author imarom (12-Aug-15) - */ -class TrexJsonRpcV2ParsedObject { -public: - - TrexJsonRpcV2ParsedObject(const Json::Value &msg_id, bool force); - virtual ~TrexJsonRpcV2ParsedObject() {} - - /** - * main function to execute the command - * - */ - void execute(Json::Value &response); - -protected: - - /** - * instance private implementation - */ - virtual void _execute(Json::Value &response) = 0; - - Json::Value m_msg_id; - bool m_respond; -}; - -/** - * JSON RPC V2 parser - * - * @author imarom (12-Aug-15) - */ -class TrexJsonRpcV2Parser { - -public: - - /** - * creates a JSON-RPC object from a string - * - * @author imarom (12-Aug-15) - * - * @param msg - */ - TrexJsonRpcV2Parser(const std::string &msg); - - /** - * parses the string to a executable commands vector - * - * @author imarom (12-Aug-15) - */ - void parse(std::vector<TrexJsonRpcV2ParsedObject *> &commands); - -private: - - /** - * handle a single request - * - */ - void parse_single_request(Json::Value &request, std::vector<TrexJsonRpcV2ParsedObject *> &commands); - - std::string m_msg; -}; - -#endif /* __TREX_RPC_JSONRPC_V2_PARSER_H__ */ - diff --git a/src/rpc-server/include/trex_rpc_req_resp_server.h b/src/rpc-server/include/trex_rpc_req_resp_server.h deleted file mode 100644 index f12d0540..00000000 --- a/src/rpc-server/include/trex_rpc_req_resp_server.h +++ /dev/null @@ -1,51 +0,0 @@ -/* - Itay Marom - Cisco Systems, Inc. -*/ - -/* -Copyright (c) 2015-2015 Cisco Systems, Inc. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -#ifndef __TREX_RPC_REQ_RESP_API_H__ -#define __TREX_RPC_REQ_RESP_API_H__ - -#include <trex_rpc_server_api.h> - -/** - * request-response RPC server - * - * @author imarom (11-Aug-15) - */ -class TrexRpcServerReqRes : public TrexRpcServerInterface { -public: - - TrexRpcServerReqRes(const TrexRpcServerConfig &cfg); - -protected: - void _rpc_thread_cb(); - void _stop_rpc_thread(); - -private: - void handle_request(const std::string &request); - - static const int RPC_MAX_MSG_SIZE = 2048; - void *m_context; - void *m_socket; - uint8_t m_msg_buffer[RPC_MAX_MSG_SIZE]; -}; - - -#endif /* __TREX_RPC_REQ_RESP_API_H__ */ diff --git a/src/rpc-server/include/trex_rpc_server_api.h b/src/rpc-server/include/trex_rpc_server_api.h deleted file mode 100644 index 6bb81c73..00000000 --- a/src/rpc-server/include/trex_rpc_server_api.h +++ /dev/null @@ -1,165 +0,0 @@ -/* - Itay Marom - Cisco Systems, Inc. -*/ - -/* -Copyright (c) 2015-2015 Cisco Systems, Inc. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -#ifndef __TREX_RPC_SERVER_API_H__ -#define __TREX_RPC_SERVER_API_H__ - -#include <stdint.h> -#include <vector> -#include <thread> -#include <string> -#include <stdexcept> -#include <trex_rpc_exception_api.h> - -class TrexRpcServerInterface; - -/** - * defines a configuration of generic RPC server - * - * @author imarom (17-Aug-15) - */ -class TrexRpcServerConfig { -public: - - enum rpc_prot_e { - RPC_PROT_TCP - }; - - TrexRpcServerConfig(rpc_prot_e protocol, uint16_t port) : m_protocol(protocol), m_port(port) { - - } - - uint16_t get_port() { - return m_port; - } - - rpc_prot_e get_protocol() { - return m_protocol; - } - -private: - rpc_prot_e m_protocol; - uint16_t m_port; -}; - -/** - * generic type RPC server instance - * - * @author imarom (12-Aug-15) - */ -class TrexRpcServerInterface { -public: - - TrexRpcServerInterface(const TrexRpcServerConfig &cfg, const std::string &name); - virtual ~TrexRpcServerInterface(); - - /** - * starts the server - * - */ - void start(); - - /** - * stops the server - * - */ - void stop(); - - /** - * set verbose on or off - * - */ - void set_verbose(bool verbose); - - /** - * return TRUE if server is active - * - */ - bool is_running(); - - /** - * is the server verbose or not - * - */ - bool is_verbose(); - -protected: - /** - * instances implement this - * - */ - virtual void _rpc_thread_cb() = 0; - virtual void _stop_rpc_thread() = 0; - - /** - * prints a verbosed message (if enabled) - * - */ - void verbose_msg(const std::string &msg); - - TrexRpcServerConfig m_cfg; - bool m_is_running; - bool m_is_verbose; - std::thread *m_thread; - std::string m_name; -}; - -/** - * TREX RPC server - * may contain serveral types of RPC servers - * (request response, async and etc.) - * - * @author imarom (12-Aug-15) - */ -class TrexRpcServer { -public: - - /* currently only request response server config is required */ - TrexRpcServer(const TrexRpcServerConfig &req_resp_cfg); - ~TrexRpcServer(); - - /** - * starts the RPC server - * - * @author imarom (19-Aug-15) - */ - void start(); - - /** - * stops the RPC server - * - * @author imarom (19-Aug-15) - */ - void stop(); - - void set_verbose(bool verbose); - - static const std::string &get_server_uptime() { - return s_server_uptime; - } - -private: - std::vector<TrexRpcServerInterface *> m_servers; - bool m_verbose; - static const std::string s_server_uptime; -}; - -#endif /* __TREX_RPC_SERVER_API_H__ */ |