Move all the connect() logic from TCPSocketHandler into a subclass

This way, TCPSocketHandler only deal with the message sending/receiving, not
the connect() or anything else.  This will be used for implementing servers
(because when a client is accepted, we don’t need all the connect() and dns
resolution stuff).
This commit is contained in:
louiz’
2016-11-11 02:54:48 +01:00
parent c41d003cbf
commit 0c8adc85f7
11 changed files with 357 additions and 300 deletions
+2 -2
View File
@@ -131,7 +131,7 @@ IrcClient::IrcClient(std::shared_ptr<Poller> poller, const std::string& hostname
const std::string& nickname, const std::string& username,
const std::string& realname, const std::string& user_hostname,
Bridge& bridge):
TCPSocketHandler(poller),
TCPClientSocketHandler(poller),
hostname(hostname),
user_hostname(user_hostname),
username(username),
@@ -338,7 +338,7 @@ void IrcClient::parse_in_buffer(const size_t)
if (pos == std::string::npos)
break ;
IrcMessage message(this->in_buf.substr(0, pos));
this->in_buf = this->in_buf.substr(pos + 2, std::string::npos);
this->consume_in_buffer(pos + 2);
log_debug("IRC RECEIVING: (", this->get_hostname(), ") ", message);
// Call the standard callback (if any), associated with the command
+2 -2
View File
@@ -5,7 +5,7 @@
#include <irc/irc_channel.hpp>
#include <irc/iid.hpp>
#include <network/tcp_socket_handler.hpp>
#include <network/tcp_client_socket_handler.hpp>
#include <network/resolver.hpp>
#include <unordered_map>
@@ -23,7 +23,7 @@ class Bridge;
* Represent one IRC client, i.e. an endpoint connected to a single IRC
* server, through a TCP socket, receiving and sending commands to it.
*/
class IrcClient: public TCPSocketHandler
class IrcClient: public TCPClientSocketHandler
{
public:
explicit IrcClient(std::shared_ptr<Poller> poller, const std::string& hostname,