From 98032bb557a79d828eeac9d9a372ca172ea1bda7 Mon Sep 17 00:00:00 2001 From: "Querejeta Lomas, Leire" <leire.querejeta@tecnalia.com> Date: Tue, 30 Aug 2022 09:41:10 +0200 Subject: [PATCH] Subir nuevo archivo --- src/class_server/src/class_server_main.cpp | 71 ++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 src/class_server/src/class_server_main.cpp diff --git a/src/class_server/src/class_server_main.cpp b/src/class_server/src/class_server_main.cpp new file mode 100644 index 0000000..40d05f5 --- /dev/null +++ b/src/class_server/src/class_server_main.cpp @@ -0,0 +1,71 @@ +/** + * @file class_server_main.cpp + * @author Alfonso Dominguez <alfonso.dominguez@tecnalia.com> + * @date 2020 + * + * Copyright 2020 Tecnalia Research & Innovation. + * Distributed under the GNU GPL v3. + * For full terms see https://www.gnu.org/licenses/gpl.txt + * + * @brief CLASS server main program + */ + +#include <class_server/class_server.hpp> +#include <thread> +#include <memory> + +ClassServer server; + +void handler( const boost::system::error_code& error , int signal_number ) +{ + std::cout << "[CLASS server] Handling signal " << signal_number << std::endl; + server.stop(); + + exit(1); +} + +int main (int argc, char *argv[]) +{ + if (argc != 3) + { + std::cerr << "[CLASS server] ERROR: Executable expects 2 arguments (BT port to connect to CLASS device and UDP port where this server will listen for client msgs)"<< std::endl; + std::cerr << "[CLASS server] Usage example:"<< std::endl; + #ifdef _WINDOWS + std::cerr << "[CLASS server] class_server.exe COM14 50000" << std::endl; + #else + std::cerr << "[CLASS server] ./class_server COM14 50000" << std::endl; + #endif + + return 1; + } + + std::string bt_port = argv[1]; + std::cout << "[CLASS server] Connect to BT port: " << bt_port << std::endl; + std::string udp_port_str = argv[2]; + int udp_port = 0; + try + { + udp_port = std::stoi(udp_port_str); + } + catch(const std::exception& e) + { + std::cerr << "2nd parameter is not an integer (" << udp_port_str << "). Exc:" << e.what() << std::endl; + return 1; + } + std::cout << "[CLASS server] Listen in UDP port: " << udp_port << std::endl; + + + boost::asio::io_service *io_service = new boost::asio::io_service(); + boost::asio::signal_set signals(*io_service, SIGINT ); + + // Start an asynchronous wait for one of the signals to occur. + signals.async_wait( handler ); + + if(server.start(bt_port, udp_port, io_service) == 0) + { + std::cout << "[CLASS server] Waiting for connections. Ctrl+C for stop" << std::endl; + io_service->run(); + } + + std::cout << "[CLASS server] Bye" << std::endl; +} \ No newline at end of file -- GitLab