From e196d2f1f400f5c9634ed42fcbdf5c5fb63a13fb Mon Sep 17 00:00:00 2001 From: Florent Le Coz Date: Mon, 24 Mar 2014 18:37:31 +0100 Subject: Do not send data if we are connected, send it only once we actually are --- src/network/socket_handler.cpp | 9 ++++++++- src/network/socket_handler.hpp | 4 ++++ 2 files changed, 12 insertions(+), 1 deletion(-) (limited to 'src/network') diff --git a/src/network/socket_handler.cpp b/src/network/socket_handler.cpp index 3f4c01d..f344786 100644 --- a/src/network/socket_handler.cpp +++ b/src/network/socket_handler.cpp @@ -238,7 +238,14 @@ void SocketHandler::send_data(std::string&& data) if (data.empty()) return ; this->out_buf.emplace_back(std::move(data)); - this->poller->watch_send_events(this); + if (this->connected) + this->poller->watch_send_events(this); +} + +void SocketHandler::send_pending_data() +{ + if (this->connected && !this->out_buf.empty()) + this->poller->watch_send_events(this); } bool SocketHandler::is_connected() const diff --git a/src/network/socket_handler.hpp b/src/network/socket_handler.hpp index 35b0fdc..f554350 100644 --- a/src/network/socket_handler.hpp +++ b/src/network/socket_handler.hpp @@ -51,6 +51,10 @@ public: * notified when a send event is ready. */ void send_data(std::string&& data); + /** + * Watch the socket for send events, if our out buffer is not empty. + */ + void send_pending_data(); /** * Returns the socket that should be handled by the poller. */ -- cgit v1.2.3