You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

66 lines
1.3 KiB

#ifndef TCP_CONNECTION_HPP
#define TCP_CONNECTION_HPP
#include "StreamConnection.hpp"
#include "Message.hpp"
#include "Socket.hpp"
#include <string>
class TcpConnection : public StreamConnection
{
public:
enum State {
OPEN,
CLOSED
};
TcpConnection ( const std::string host,
const std::string port,
Message *message,
const size_t bufferLength = 1024 );
virtual ~TcpConnection();
Connection* clone(const int socket);
bool connect();
bool disconnect();
bool send( const void* message, const size_t length );
bool receive();
bool bind();
bool listen( const int maxPendingQueueLen = 64 );
bool accept(int client_socket);
int getSocket() const;
void setState(const State state);
bool closed() const;
Message *getMessage() const;
size_t getBufferLength() const;
private:
TcpConnection ( const int socket,
Message *message,
const size_t bufferLength = 1024 );
TcpConnection(const TcpConnection&);
TcpConnection& operator=(const TcpConnection&);
Socket m_socket;
Message *m_message;
unsigned char *m_buffer;
size_t m_bufferLength;
State m_state;
};
#endif // TCP_CONNECTION_HPP