parent
e4b28fcdbe
commit
a59674ba9d
@ -1,39 +1,67 @@
|
|||||||
#ifndef TCP_SERVER_HPP
|
#ifndef TCP_SERVER_HPP
|
||||||
#define TCP_SERVER_HPP
|
#define TCP_SERVER_HPP
|
||||||
|
|
||||||
#include "Socket.hpp"
|
#include "Logger.hpp"
|
||||||
|
|
||||||
|
#include "Connection.hpp"
|
||||||
#include "Poll.hpp"
|
#include "Poll.hpp"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
class TcpServer : public Socket
|
template <typename T>
|
||||||
, public Poll
|
class TcpServer
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|
||||||
TcpServer ( const std::string host,
|
TcpServer ( const std::string host,
|
||||||
const std::string port,
|
const std::string port,
|
||||||
const int maxClients = 5 );
|
const int maxClients = 5,
|
||||||
|
const int maxPendingQueueLen = 10 )
|
||||||
|
: m_connection(host, port)
|
||||||
|
, m_poll( &m_connection, maxClients)
|
||||||
|
, m_maxPendingQueueLen(maxPendingQueueLen)
|
||||||
|
{
|
||||||
|
TRACE;
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual ~TcpServer()
|
||||||
|
{
|
||||||
|
TRACE;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool start()
|
||||||
|
{
|
||||||
|
TRACE;
|
||||||
|
|
||||||
virtual ~TcpServer();
|
if ( !m_connection.bindToHost() )
|
||||||
|
return false;
|
||||||
|
|
||||||
bool start();
|
if ( m_connection.listen( m_maxPendingQueueLen ) == -1 ) {
|
||||||
void stop();
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
// implements Poll::receive
|
m_poll.startPolling();
|
||||||
bool receive( const int fd );
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void stop()
|
||||||
|
{
|
||||||
|
TRACE;
|
||||||
|
m_poll.stopPolling();
|
||||||
|
m_connection.closeConnection();
|
||||||
|
}
|
||||||
|
|
||||||
virtual void msgArrived(const int clientSocket,
|
|
||||||
const unsigned char* msg,
|
|
||||||
const int msgLen ) = 0;
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
TcpServer(const TcpServer&);
|
TcpServer(const TcpServer&);
|
||||||
TcpServer& operator=(const TcpServer&);
|
TcpServer& operator=(const TcpServer&);
|
||||||
|
|
||||||
std::string m_host;
|
Connection<T> m_connection;
|
||||||
std::string m_port;
|
Poll<T> m_poll;
|
||||||
|
const int m_maxPendingQueueLen;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // TCP_SERVER_HPP
|
#endif // TCP_SERVER_HPP
|
||||||
|
Loading…
Reference in new issue