diff --git a/FlippR-Driver/networking/FlippRServer.cpp b/FlippR-Driver/networking/FlippRServer.cpp index c134641..761e972 100644 --- a/FlippR-Driver/networking/FlippRServer.cpp +++ b/FlippR-Driver/networking/FlippRServer.cpp @@ -4,6 +4,7 @@ #include "FlippRServer.h" #include "output/OutputRequestHandlerFactory.h" +#include "input/InputSocketHandlerFactory.h" #include "DriverFactory.h" #include @@ -77,13 +78,43 @@ void FlippRServer::initialize(Application &self) this->initialize_output_driver(); - //Todo initialize input server + this->initialize_input_driver(); //https://gist.github.com/NIPE-SYSTEMS/5a06428c0880ed7ff3cc4304be436e3e ServerApplication::initialize(self); } void FlippRServer::initialize_output_driver() +{ + std::ifstream output_pin_config_stream; + std::ifstream lamp_config_stream; + std::ifstream solenoid_config_stream; + std::ifstream sound_config_stream; + std::ifstream display_config_stream; + + try + { + output_pin_config_stream.open(this->output_pin_config); + lamp_config_stream.open(this->lamp_config); + solenoid_config_stream.open(this->solenoid_config); + sound_config_stream.open(this->sound_config); + display_config_stream.open(this->display_config); + } + catch(const std::exception& e) + { + logger().error(e.what()); + exit(EXIT_FAILURE); + } + + //todo linking errors + this->output_driver = flippR_driver::get_OutputDriver(output_pin_config_stream, + lamp_config_stream, + solenoid_config_stream, + sound_config_stream, + display_config_stream); +} + +void FlippRServer::initialize_input_driver() { std::ifstream input_config_stream; std::ifstream matrix_config_stream; @@ -99,7 +130,8 @@ void FlippRServer::initialize_output_driver() exit(EXIT_FAILURE); } - //todo linking errors + + //todo linking errors this->input_driver = flippR_driver::get_InputDriver(input_config_stream, matrix_config_stream); } @@ -140,7 +172,7 @@ TCPServer* FlippRServer::build_input_server() SocketAddress address("/tmp/flippR_driver/S.flippR_driver"); ServerSocket server_socket(address); - + return new TCPServer(new input::InputSocketHandlerFactory(this->input_driver), port); } diff --git a/FlippR-Driver/networking/FlippRServer.h b/FlippR-Driver/networking/FlippRServer.h index 6f6788b..8a987b2 100644 --- a/FlippR-Driver/networking/FlippRServer.h +++ b/FlippR-Driver/networking/FlippRServer.h @@ -34,6 +34,7 @@ public: private: void initialize_output_driver(); + void initialize_input_driver(); void parse_server_config_file(); Poco::Net::HTTPServer* build_output_server(); diff --git a/FlippR-Driver/networking/input/InputSocketHandlerFactory.h b/FlippR-Driver/networking/input/InputSocketHandlerFactory.h index 5f505e6..c45beed 100644 --- a/FlippR-Driver/networking/input/InputSocketHandlerFactory.h +++ b/FlippR-Driver/networking/input/InputSocketHandlerFactory.h @@ -15,7 +15,7 @@ namespace networking namespace input { -class InputSocketHandlerFactory : Poco::Net::TCPServerConnectionFactory +class InputSocketHandlerFactory : public Poco::Net::TCPServerConnectionFactory { public: explicit InputSocketHandlerFactory(std::shared_ptr inputDriver);