Loading BuilderQueue/include/Connection.h +15 −10 Original line number Diff line number Diff line Loading @@ -9,14 +9,21 @@ using asio::ip::tcp; class Connection : public std::enable_shared_from_this<Connection> { public: explicit Connection(tcp::socket socket, BuilderQueue &queue) : queue(queue) { logger::write(socket, "Established connection"); explicit Connection(BuilderQueue &queue) : queue(queue) {} ~Connection() { logger::write("Ending connection"); } void start(tcp::socket socket) { try { auto self(shared_from_this()); logger::write(socket, "Established connection"); asio::spawn(socket.get_io_service(), [this, self, socket=std::move(socket)](asio::yield_context yield) mutable { Messenger client(std::move(socket), yield); auto request = client.async_receive(MessageType::string); Loading @@ -27,15 +34,13 @@ public: } else { logger::write(client.socket, "Invalid request message received: " + request); } }); } catch (std::exception& ex) { logger::write(std::string() + "Connection exception: " + ex.what()); } catch(...) { logger::write("Unknown connection exception caught"); } logger::write("Unknown connection exception caught!"); } ~Connection() { logger::write("Ending connection"); } private: Loading BuilderQueue/include/ReservationRequest.h +5 −5 Original line number Diff line number Diff line Loading @@ -7,6 +7,11 @@ // We must remove a reservation from the queue if it is destructed but we don't want // The reservation to have a handle to the queue, else we have a weird circular dependency: reservation<-->queue class ReservationRequest { private: BuilderQueue &queue; Messenger& client; Reservation &reservation; public: explicit ReservationRequest(BuilderQueue &queue, Messenger& client) : queue(queue), Loading @@ -21,9 +26,4 @@ public: BuilderData async_wait(); boost::system::error_code& error; private: BuilderQueue &queue; Messenger& client; Reservation &reservation; }; No newline at end of file BuilderQueue/src/main.cpp +1 −2 Original line number Diff line number Diff line Loading @@ -24,11 +24,10 @@ int main(int argc, char *argv[]) { tcp::socket socket(io_service); boost::system::error_code error; acceptor.async_accept(socket, yield[error]); if (error) { logger::write(socket, "Error accepting new connection"); } else { std::make_shared<Connection>(std::move(socket), builder_queue); std::make_shared<Connection>(builder_queue)->start(std::move(socket)); } } }); Loading Client/src/Client.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -75,7 +75,7 @@ Messenger Client::connect_to_queue(asio::yield_context yield) { wait_queue.stop("Failed\n", logger::severity_level::fatal); throw std::runtime_error("Failed to connect to builder queue!"); } wait_queue.stop("", logger::severity_level::success); wait_queue.stop("Connected to queue: " + queue_host + ":" + queue_port, logger::severity_level::success); return queue_messenger; } Loading Common/include/Messenger.h +2 −1 Original line number Diff line number Diff line Loading @@ -62,7 +62,8 @@ public: // Create a server messenger by doing an async block give the socket // The messenger will assume ownership of the socket explicit Messenger(tcp::socket socket, asio::yield_context yield) : socket(std::move(socket)), yield(yield) {} yield(yield) { } std::string async_receive(MessageType type = MessageType::string); Loading Loading
BuilderQueue/include/Connection.h +15 −10 Original line number Diff line number Diff line Loading @@ -9,14 +9,21 @@ using asio::ip::tcp; class Connection : public std::enable_shared_from_this<Connection> { public: explicit Connection(tcp::socket socket, BuilderQueue &queue) : queue(queue) { logger::write(socket, "Established connection"); explicit Connection(BuilderQueue &queue) : queue(queue) {} ~Connection() { logger::write("Ending connection"); } void start(tcp::socket socket) { try { auto self(shared_from_this()); logger::write(socket, "Established connection"); asio::spawn(socket.get_io_service(), [this, self, socket=std::move(socket)](asio::yield_context yield) mutable { Messenger client(std::move(socket), yield); auto request = client.async_receive(MessageType::string); Loading @@ -27,15 +34,13 @@ public: } else { logger::write(client.socket, "Invalid request message received: " + request); } }); } catch (std::exception& ex) { logger::write(std::string() + "Connection exception: " + ex.what()); } catch(...) { logger::write("Unknown connection exception caught"); } logger::write("Unknown connection exception caught!"); } ~Connection() { logger::write("Ending connection"); } private: Loading
BuilderQueue/include/ReservationRequest.h +5 −5 Original line number Diff line number Diff line Loading @@ -7,6 +7,11 @@ // We must remove a reservation from the queue if it is destructed but we don't want // The reservation to have a handle to the queue, else we have a weird circular dependency: reservation<-->queue class ReservationRequest { private: BuilderQueue &queue; Messenger& client; Reservation &reservation; public: explicit ReservationRequest(BuilderQueue &queue, Messenger& client) : queue(queue), Loading @@ -21,9 +26,4 @@ public: BuilderData async_wait(); boost::system::error_code& error; private: BuilderQueue &queue; Messenger& client; Reservation &reservation; }; No newline at end of file
BuilderQueue/src/main.cpp +1 −2 Original line number Diff line number Diff line Loading @@ -24,11 +24,10 @@ int main(int argc, char *argv[]) { tcp::socket socket(io_service); boost::system::error_code error; acceptor.async_accept(socket, yield[error]); if (error) { logger::write(socket, "Error accepting new connection"); } else { std::make_shared<Connection>(std::move(socket), builder_queue); std::make_shared<Connection>(builder_queue)->start(std::move(socket)); } } }); Loading
Client/src/Client.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -75,7 +75,7 @@ Messenger Client::connect_to_queue(asio::yield_context yield) { wait_queue.stop("Failed\n", logger::severity_level::fatal); throw std::runtime_error("Failed to connect to builder queue!"); } wait_queue.stop("", logger::severity_level::success); wait_queue.stop("Connected to queue: " + queue_host + ":" + queue_port, logger::severity_level::success); return queue_messenger; } Loading
Common/include/Messenger.h +2 −1 Original line number Diff line number Diff line Loading @@ -62,7 +62,8 @@ public: // Create a server messenger by doing an async block give the socket // The messenger will assume ownership of the socket explicit Messenger(tcp::socket socket, asio::yield_context yield) : socket(std::move(socket)), yield(yield) {} yield(yield) { } std::string async_receive(MessageType type = MessageType::string); Loading