Move some members of TCPSocketHandler into the SocketHandler class

This commit is contained in:
Florent Le Coz
2014-07-03 03:31:50 +02:00
parent 04d999168a
commit 8c34576ea0
3 changed files with 27 additions and 32 deletions
+25 -5
View File
@@ -1,18 +1,38 @@
#ifndef SOCKET_HANDLER_INTERFACE_HPP #ifndef SOCKET_HANDLER_HPP
# define SOCKET_HANDLER_INTERFACE_HPP # define SOCKET_HANDLER_HPP
#include <memory>
class Poller;
typedef int socket_t; typedef int socket_t;
class SocketHandler class SocketHandler
{ {
public: public:
SocketHandler() {} explicit SocketHandler(std::shared_ptr<Poller> poller, const socket_t socket):
poller(poller),
socket(socket)
{}
virtual ~SocketHandler() {} virtual ~SocketHandler() {}
virtual socket_t get_socket() const = 0;
virtual void on_recv() = 0; virtual void on_recv() = 0;
virtual void on_send() = 0; virtual void on_send() = 0;
virtual void connect() = 0; virtual void connect() = 0;
virtual bool is_connected() const = 0; virtual bool is_connected() const = 0;
socket_t get_socket() const
{ return this->socket; }
protected:
/**
* A pointer to the poller that manages us, because we need to communicate
* with it.
*/
std::shared_ptr<Poller> poller;
/**
* The handled socket.
*/
socket_t socket;
private: private:
SocketHandler(const SocketHandler&) = delete; SocketHandler(const SocketHandler&) = delete;
SocketHandler(SocketHandler&&) = delete; SocketHandler(SocketHandler&&) = delete;
@@ -20,4 +40,4 @@ private:
SocketHandler& operator=(SocketHandler&&) = delete; SocketHandler& operator=(SocketHandler&&) = delete;
}; };
#endif // SOCKET_HANDLER_INTERFACE_HPP #endif // SOCKET_HANDLER_HPP
+1 -7
View File
@@ -38,8 +38,7 @@ using namespace std::chrono_literals;
namespace ph = std::placeholders; namespace ph = std::placeholders;
TCPSocketHandler::TCPSocketHandler(std::shared_ptr<Poller> poller): TCPSocketHandler::TCPSocketHandler(std::shared_ptr<Poller> poller):
socket(-1), SocketHandler(poller, -1),
poller(poller),
use_tls(false), use_tls(false),
connected(false), connected(false),
connecting(false) connecting(false)
@@ -292,11 +291,6 @@ void TCPSocketHandler::close()
this->port.clear(); this->port.clear();
} }
socket_t TCPSocketHandler::get_socket() const
{
return this->socket;
}
void TCPSocketHandler::send_data(std::string&& data) void TCPSocketHandler::send_data(std::string&& data)
{ {
#ifdef BOTAN_FOUND #ifdef BOTAN_FOUND
+1 -20
View File
@@ -34,15 +34,13 @@ public:
}; };
#endif // BOTAN_FOUND #endif // BOTAN_FOUND
class Poller;
/** /**
* An interface, with a series of callbacks that should be implemented in * An interface, with a series of callbacks that should be implemented in
* subclasses that deal with a socket. These callbacks are called on various events * subclasses that deal with a socket. These callbacks are called on various events
* (read/write/timeout, etc) when they are notified to a poller * (read/write/timeout, etc) when they are notified to a poller
* (select/poll/epoll etc) * (select/poll/epoll etc)
*/ */
class TCPSocketHandler: SocketHandler class TCPSocketHandler: public SocketHandler
{ {
protected: protected:
~TCPSocketHandler() {} ~TCPSocketHandler() {}
@@ -77,10 +75,6 @@ public:
* Watch the socket for send events, if our out buffer is not empty. * Watch the socket for send events, if our out buffer is not empty.
*/ */
void send_pending_data(); void send_pending_data();
/**
* Returns the socket that should be handled by the poller.
*/
socket_t get_socket() const;
/** /**
* Close the connection, remove us from the poller * Close the connection, remove us from the poller
*/ */
@@ -185,10 +179,6 @@ private:
*/ */
void on_tls_activated(); void on_tls_activated();
#endif // BOTAN_FOUND #endif // BOTAN_FOUND
/**
* The handled socket.
*/
socket_t socket;
/** /**
* Where data is added, when we want to send something to the client. * Where data is added, when we want to send something to the client.
*/ */
@@ -203,15 +193,6 @@ private:
socklen_t ai_addrlen; socklen_t ai_addrlen;
protected: protected:
/**
* A pointer to the poller that manages us, because we need to communicate
* with it, sometimes (for example to tell it that he now needs to watch
* write events for us). Do not ever try to delete it.
*
* And a raw pointer because we are not owning it, it is owning us
* (actually it is sharing our ownership with a Bridge).
*/
std::shared_ptr<Poller> poller;
/** /**
* Where data read from the socket is added until we can extract a full * Where data read from the socket is added until we can extract a full
* and meaningful “message” from it. * and meaningful “message” from it.