home *** CD-ROM | disk | FTP | other *** search
-
- /* Author Anders Kjeldsen */
-
- #ifndef GSERVER_CPP
- #define GSERVER_CPP
-
- #include "gmisc/GServer.h"
- #include "gsystem/GObject.cpp"
- #include "gmisc/GSocket.cpp"
-
- GServer::GServer()
- {
- memset((void *)this, 0, sizeof (GServer) );
-
- if ( InitObject("GServer") )
- {
- }
- }
-
- GServer::~GServer()
- {
- }
-
- /*
- 0 = first
- n = n'th
- -1 = last
-
- */
- GSocket *GServer::GetGSocket(GWORD number)
- {
- if (number == -1)
- {
- GSocket *current = FirstGSocket;
- if (current)
- {
- while ( current->GetNext() )
- {
- current = current->GetNext();
- }
- return current;
- }
- return NULL;
- }
- GSocket *current = FirstGSocket;
- for (int i=0; i<number; i++)
- {
- if ( current == NULL ) return NULL;
- current = current->GetNext();
- }
- return current;
- }
-
- BOOL GServer::AddGSocket(GSocket *socket)
- {
- GSocket *prev = GetGSocket(-1);
- if (prev && socket)
- {
- prev->SetNext(socket);
- socket->SetPrev(prev);
- }
- return TRUE;
- }
-
- BOOL GServer::RemoveGSocket(GSocket *socket)
- {
- GSocket *current = FirstGSocket;
- if (current)
- {
- while ( current->GetNext() )
- {
- if ( current == socket ) break;
- }
- if ( current == socket )
- {
- socket->GetNext()->SetPrev(socket->GetPrev());
- socket->GetPrev()->SetNext(socket->GetNext());
- socket->SetNext(NULL);
- socket->SetPrev(NULL);
- return TRUE;
- }
- }
- return NULL;
- }
-
- #endif /* GSOCKET_CPP */
-