Code:
class Tcp_Object
{
protected:
Tcp_Object *_parent;
bool _hasparent;
public:
bool hasParent();
Tcp_Object* parent();
Tcp_Object();
Tcp_Object(Tcp_Object *parent);
};
class Server_Client : public Tcp_Object
{
private:
SOCKET _sock;
bool _isConnected;
//threads
DWORD serve();
public:
Server_Client(SOCKET socket, Tcp_Object *parent);
SOCKET getSock();
};
class Server : public Tcp_Object
{
private:
int _cap; //server's capacity
int _port;
bool _isActive;
WSADATA _wsa;
SOCKET _ListenSocket;
struct addrinfo *result,
*ptr,
hints;
boost::thread *_accepthread;
Server_Clients *clients;
bool _shutdown;
//methods
bool initWsa();
bool createSock();
bool bindSock();
bool startListen();
//Threads
DWORD acceptThread();
protected:
//
public:
Server(int port);
virtual ~Server();
bool start();
void setCapacity(int c);
int getCapacity();
};
Code:
Tcp_Object::Tcp_Object()
{
this->_hasparent = false;
cout << "tcp_object w/o parent" << endl;
}
Tcp_Object::Tcp_Object(Tcp_Object *parent): _parent(parent)
{
this->_hasparent = true;
cout << "tcp_object with parent" << endl;
}
Server::Server(int port): Tcp_Object()
{
//
}
Code:
Server S(1234);
S.start();