summaryrefslogtreecommitdiffstats
path: root/src/rpc-server/include
diff options
context:
space:
mode:
Diffstat (limited to 'src/rpc-server/include')
-rw-r--r--src/rpc-server/include/trex_rpc_cmd_api.h90
-rw-r--r--src/rpc-server/include/trex_rpc_cmds_table.h79
-rw-r--r--src/rpc-server/include/trex_rpc_exception_api.h39
-rw-r--r--src/rpc-server/include/trex_rpc_jsonrpc_v2_parser.h94
-rw-r--r--src/rpc-server/include/trex_rpc_req_resp_server.h51
-rw-r--r--src/rpc-server/include/trex_rpc_server_api.h165
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 &params, 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 &params, 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__ */