Move some members of TCPSocketHandler into the SocketHandler class
This commit is contained in:
@@ -1,18 +1,38 @@
|
||||
#ifndef SOCKET_HANDLER_INTERFACE_HPP
|
||||
# define SOCKET_HANDLER_INTERFACE_HPP
|
||||
#ifndef SOCKET_HANDLER_HPP
|
||||
# define SOCKET_HANDLER_HPP
|
||||
|
||||
#include <memory>
|
||||
|
||||
class Poller;
|
||||
|
||||
typedef int socket_t;
|
||||
|
||||
class SocketHandler
|
||||
{
|
||||
public:
|
||||
SocketHandler() {}
|
||||
explicit SocketHandler(std::shared_ptr<Poller> poller, const socket_t socket):
|
||||
poller(poller),
|
||||
socket(socket)
|
||||
{}
|
||||
virtual ~SocketHandler() {}
|
||||
virtual socket_t get_socket() const = 0;
|
||||
virtual void on_recv() = 0;
|
||||
virtual void on_send() = 0;
|
||||
virtual void connect() = 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:
|
||||
SocketHandler(const SocketHandler&) = delete;
|
||||
SocketHandler(SocketHandler&&) = delete;
|
||||
@@ -20,4 +40,4 @@ private:
|
||||
SocketHandler& operator=(SocketHandler&&) = delete;
|
||||
};
|
||||
|
||||
#endif // SOCKET_HANDLER_INTERFACE_HPP
|
||||
#endif // SOCKET_HANDLER_HPP
|
||||
|
||||
@@ -38,8 +38,7 @@ using namespace std::chrono_literals;
|
||||
namespace ph = std::placeholders;
|
||||
|
||||
TCPSocketHandler::TCPSocketHandler(std::shared_ptr<Poller> poller):
|
||||
socket(-1),
|
||||
poller(poller),
|
||||
SocketHandler(poller, -1),
|
||||
use_tls(false),
|
||||
connected(false),
|
||||
connecting(false)
|
||||
@@ -292,11 +291,6 @@ void TCPSocketHandler::close()
|
||||
this->port.clear();
|
||||
}
|
||||
|
||||
socket_t TCPSocketHandler::get_socket() const
|
||||
{
|
||||
return this->socket;
|
||||
}
|
||||
|
||||
void TCPSocketHandler::send_data(std::string&& data)
|
||||
{
|
||||
#ifdef BOTAN_FOUND
|
||||
|
||||
@@ -34,15 +34,13 @@ public:
|
||||
};
|
||||
#endif // BOTAN_FOUND
|
||||
|
||||
class Poller;
|
||||
|
||||
/**
|
||||
* 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
|
||||
* (read/write/timeout, etc) when they are notified to a poller
|
||||
* (select/poll/epoll etc)
|
||||
*/
|
||||
class TCPSocketHandler: SocketHandler
|
||||
class TCPSocketHandler: public SocketHandler
|
||||
{
|
||||
protected:
|
||||
~TCPSocketHandler() {}
|
||||
@@ -77,10 +75,6 @@ public:
|
||||
* 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.
|
||||
*/
|
||||
socket_t get_socket() const;
|
||||
/**
|
||||
* Close the connection, remove us from the poller
|
||||
*/
|
||||
@@ -185,10 +179,6 @@ private:
|
||||
*/
|
||||
void on_tls_activated();
|
||||
#endif // BOTAN_FOUND
|
||||
/**
|
||||
* The handled socket.
|
||||
*/
|
||||
socket_t socket;
|
||||
/**
|
||||
* Where data is added, when we want to send something to the client.
|
||||
*/
|
||||
@@ -203,15 +193,6 @@ private:
|
||||
socklen_t ai_addrlen;
|
||||
|
||||
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
|
||||
* and meaningful “message” from it.
|
||||
|
||||
Reference in New Issue
Block a user