From 6ab77839bcb6ec563566219daca191399251aa58 Mon Sep 17 00:00:00 2001 From: Johannes Wendel Date: Wed, 9 Oct 2019 19:55:07 +0200 Subject: [PATCH 1/3] Changed --- FlippR-Driver/networking/FlippRServer.cpp | 12 ++++++------ FlippR-Driver/networking/FlippRServer.h | 3 +++ 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/FlippR-Driver/networking/FlippRServer.cpp b/FlippR-Driver/networking/FlippRServer.cpp index a2f9acd..4b99e6f 100644 --- a/FlippR-Driver/networking/FlippRServer.cpp +++ b/FlippR-Driver/networking/FlippRServer.cpp @@ -13,7 +13,6 @@ #include #include #include -#include #include #include @@ -182,9 +181,9 @@ HTTPServer* FlippRServer::build_output_server() { unsigned short port = (unsigned short) config().getInt("FlippRServer.port", this->output_port); - Poco::File socket_file(this->get_runtime_dir() + OUTPUT_SOCKET_NAME); + output_socket_file = Poco::File(this->get_runtime_dir() + OUTPUT_SOCKET_NAME); - SocketAddress address(SocketAddress::UNIX_LOCAL, socket_file.path()); + SocketAddress address(SocketAddress::UNIX_LOCAL, output_socket_file.path()); ServerSocket server_socket(address); return new HTTPServer(new OutputRequestHandlerFactory(this->output_driver), server_socket, new HTTPServerParams); @@ -194,9 +193,9 @@ TCPServer* FlippRServer::build_input_server() { unsigned short port = (unsigned short) config().getInt("FlippRServer.port", this->input_port); - Poco::File socket_file(this->get_runtime_dir() + INPUT_SOCKET_NAME); + input_socket_file = Poco::File(this->get_runtime_dir() + INPUT_SOCKET_NAME); - SocketAddress address(SocketAddress::UNIX_LOCAL, socket_file.path()); + SocketAddress address(SocketAddress::UNIX_LOCAL, input_socket_file.path()); ServerSocket server_socket(address); return new TCPServer(new input::InputSocketHandlerFactory(this->input_driver), server_socket); @@ -262,7 +261,8 @@ void FlippRServer::handle_help(const std::string& name, const std::string& value std::string FlippRServer::get_runtime_dir() { - return std::getenv("XDG_RUNTIME_DIR") ? std::getenv("XDG_RUNTIME_DIR") : DEFAULT_RUNTIME_DIR; + return DEFAULT_RUNTIME_DIR; + //return std::getenv("XDG_RUNTIME_DIR") ? std::getenv("XDG_RUNTIME_DIR") : DEFAULT_RUNTIME_DIR; } } diff --git a/FlippR-Driver/networking/FlippRServer.h b/FlippR-Driver/networking/FlippRServer.h index ca5e327..f8becdb 100644 --- a/FlippR-Driver/networking/FlippRServer.h +++ b/FlippR-Driver/networking/FlippRServer.h @@ -11,6 +11,7 @@ #include #include #include +#include namespace flippR_driver { @@ -62,6 +63,8 @@ private: std::unique_ptr output_server; std::unique_ptr input_server; + Poco::File output_socket_file, input_socket_file; + }; }; From cd10f6ce52f0deab470566b86106733e49d91b4a Mon Sep 17 00:00:00 2001 From: Johannes Wendel Date: Wed, 9 Oct 2019 21:55:07 +0200 Subject: [PATCH 2/3] Fixed server file erroe --- FlippR-Driver/networking/FlippRServer.cpp | 20 +++++++++++++------ FlippR-Driver/networking/FlippRServer.h | 2 +- FlippR-Driver/src/utility/wiringPiTesting.hpp | 10 +++++----- 3 files changed, 20 insertions(+), 12 deletions(-) diff --git a/FlippR-Driver/networking/FlippRServer.cpp b/FlippR-Driver/networking/FlippRServer.cpp index 4b99e6f..9a25efd 100644 --- a/FlippR-Driver/networking/FlippRServer.cpp +++ b/FlippR-Driver/networking/FlippRServer.cpp @@ -181,9 +181,11 @@ HTTPServer* FlippRServer::build_output_server() { unsigned short port = (unsigned short) config().getInt("FlippRServer.port", this->output_port); - output_socket_file = Poco::File(this->get_runtime_dir() + OUTPUT_SOCKET_NAME); + Poco::File socket_file(this->get_runtime_dir() + OUTPUT_SOCKET_NAME); + if (socket_file.exists()) + socket_file.remove(); - SocketAddress address(SocketAddress::UNIX_LOCAL, output_socket_file.path()); + SocketAddress address(SocketAddress::UNIX_LOCAL, socket_file.path()); ServerSocket server_socket(address); return new HTTPServer(new OutputRequestHandlerFactory(this->output_driver), server_socket, new HTTPServerParams); @@ -193,9 +195,15 @@ TCPServer* FlippRServer::build_input_server() { unsigned short port = (unsigned short) config().getInt("FlippRServer.port", this->input_port); - input_socket_file = Poco::File(this->get_runtime_dir() + INPUT_SOCKET_NAME); + Poco::File socket_file(this->get_runtime_dir() + INPUT_SOCKET_NAME); + if (socket_file.exists()) + { + socket_file.remove(); + logger().information("Seems that server is already running. Make sure that only one instance of server is running."); + } - SocketAddress address(SocketAddress::UNIX_LOCAL, input_socket_file.path()); + + SocketAddress address(SocketAddress::UNIX_LOCAL, socket_file.path()); ServerSocket server_socket(address); return new TCPServer(new input::InputSocketHandlerFactory(this->input_driver), server_socket); @@ -261,8 +269,8 @@ void FlippRServer::handle_help(const std::string& name, const std::string& value std::string FlippRServer::get_runtime_dir() { - return DEFAULT_RUNTIME_DIR; - //return std::getenv("XDG_RUNTIME_DIR") ? std::getenv("XDG_RUNTIME_DIR") : DEFAULT_RUNTIME_DIR; + //return DEFAULT_RUNTIME_DIR; + return std::getenv("XDG_RUNTIME_DIR") ? std::string(std::getenv("XDG_RUNTIME_DIR")) + "/" : DEFAULT_RUNTIME_DIR; } } diff --git a/FlippR-Driver/networking/FlippRServer.h b/FlippR-Driver/networking/FlippRServer.h index f8becdb..6f8ef70 100644 --- a/FlippR-Driver/networking/FlippRServer.h +++ b/FlippR-Driver/networking/FlippRServer.h @@ -43,7 +43,7 @@ private: Poco::Net::TCPServer* build_input_server(); private: - const char * DEFAULT_RUNTIME_DIR = "/tmp/flippR_driver-runtime/"; + const char * DEFAULT_RUNTIME_DIR = "/tmp/"; const char * INPUT_SOCKET_NAME = "S.flippR_driver.in"; const char * OUTPUT_SOCKET_NAME = "S.flippR_driver.out"; const std::vector REQUIRED_CONFIG_KEYS = {"display-config", "input-config", "lamp-config", diff --git a/FlippR-Driver/src/utility/wiringPiTesting.hpp b/FlippR-Driver/src/utility/wiringPiTesting.hpp index d40c8a8..3bc68cd 100644 --- a/FlippR-Driver/src/utility/wiringPiTesting.hpp +++ b/FlippR-Driver/src/utility/wiringPiTesting.hpp @@ -12,30 +12,30 @@ static int wiringPiSetup() { - std::cout << "WiringPiSetup() called" << std::endl; + //std::cout << "WiringPiSetup() called" << std::endl; return 0; } void pinMode(int pin, int mode) { - std::cout << "Set pin " << pin << " into mode " << mode << std::endl; + //std::cout << "Set pin " << pin << " into mode " << mode << std::endl; } int digitalRead(int pin) { - std::cout << "Reading pin " << pin << std::endl; + //std::cout << "Reading pin " << pin << std::endl; return 0; } void digitalWrite(int pin, int value) { - std::cout << "Writing pin " << pin << " with value " << value << std::endl; + //std::cout << "Writing pin " << pin << " with value " << value << std::endl; } int mcp23017Setup(const int pinBase, const int i2cAddress) { - std::cout << "mcp23017Setup called with pinBase " << pinBase << " and i2cAddress " << i2cAddress << std::endl; + //std::cout << "mcp23017Setup called with pinBase " << pinBase << " and i2cAddress " << i2cAddress << std::endl; return 0; } From 33ac55b05980194fe93b9cec85ff0b3ca121cd97 Mon Sep 17 00:00:00 2001 From: Johannes Wendel Date: Wed, 9 Oct 2019 23:04:26 +0200 Subject: [PATCH 3/3] some working version --- .../networking/output/ItemVarHolder.h | 48 ------------------- 1 file changed, 48 deletions(-) delete mode 100644 FlippR-Driver/networking/output/ItemVarHolder.h diff --git a/FlippR-Driver/networking/output/ItemVarHolder.h b/FlippR-Driver/networking/output/ItemVarHolder.h deleted file mode 100644 index e951931..0000000 --- a/FlippR-Driver/networking/output/ItemVarHolder.h +++ /dev/null @@ -1,48 +0,0 @@ -// -// Created by johannes on 29.08.19. -// - -#ifndef FLIPPR_DRIVER_ITEMVARHOLDER_H -#define FLIPPR_DRIVER_ITEMVARHOLDER_H - -#include -#include - -#include "output/items/Item.h" - - -template <> -class Poco::Dynamic::VarHolderImpl> : public Poco::Dynamic::VarHolder -{ -public: - VarHolderImpl(const std::shared_ptr & item) : - item(item) - {} - - void convert(std::string & val) const override - { - val = this->item->get_name(); - } - - VarHolder * clone(Placeholder < VarHolder > * pHolder = 0) const override - { - return cloneHolder(pHolder, item); - } - - const std::type_info & type() const override - { - return typeid(item); - } - - const std::shared_ptr & value() const - { - return item; - } - -private: - std::shared_ptr item; - -}; - - -#endif //FLIPPR_DRIVER_ITEMVARHOLDER_H