Mercurial > irccd
changeset 556:c9b703f923d0
Irccd: re-recv from a client
author | David Demelier <markand@malikania.fr> |
---|---|
date | Fri, 24 Nov 2017 21:20:17 +0100 |
parents | 9b6b0d7d89c6 |
children | c729f06c6f27 |
files | libirccd/irccd/transport_service.cpp libirccd/irccd/transport_service.hpp |
diffstat | 2 files changed, 16 insertions(+), 9 deletions(-) [+] |
line wrap: on
line diff
--- a/libirccd/irccd/transport_service.cpp Fri Nov 24 21:04:32 2017 +0100 +++ b/libirccd/irccd/transport_service.cpp Fri Nov 24 21:20:17 2017 +0100 @@ -48,23 +48,29 @@ } } +void transport_service::do_recv(std::shared_ptr<transport_client> tc) +{ + tc->recv([this, tc] (auto code, auto json) { + if (code) + log::warning() << "transport: " << code.message() << std::endl; + else { + do_recv(tc); + handle_command(std::move(tc), json); + } + }); +} + void transport_service::do_accept(transport_server& ts) { ts.accept([this, &ts] (auto code, auto client) { if (code) log::warning() << "transport: " << code.message() << std::endl; else { - log::info() << "transport: new client connected" << std::endl; + do_accept(ts); + do_recv(std::move(client)); - client->recv([this, client] (auto code, auto json) { - if (code) - log::warning() << "transport: " << code.message() << std::endl; - else - handle_command(std::move(client), json); - }); + log::info() << "transport: new client connected" << std::endl; } - - do_accept(ts); }); }
--- a/libirccd/irccd/transport_service.hpp Fri Nov 24 21:04:32 2017 +0100 +++ b/libirccd/irccd/transport_service.hpp Fri Nov 24 21:20:17 2017 +0100 @@ -42,6 +42,7 @@ servers_t servers_; void handle_command(std::shared_ptr<transport_client>, const nlohmann::json&); + void do_recv(std::shared_ptr<transport_client>); void do_accept(transport_server&); public: