home *** CD-ROM | disk | FTP | other *** search
/ Magazyn Exec 4 / CD_Magazyn_EXEC_nr_4.iso / Recent / dev / c / GSys.lha / gsys / gmisc / GServer.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  2000-10-11  |  1.4 KB  |  87 lines

  1.  
  2. /* Author Anders Kjeldsen */
  3.  
  4. #ifndef GSERVER_CPP
  5. #define GSERVER_CPP
  6.  
  7. #include "gmisc/GServer.h"
  8. #include "gsystem/GObject.cpp"
  9. #include "gmisc/GSocket.cpp"
  10.  
  11. GServer::GServer()
  12. {
  13.     memset((void *)this, 0, sizeof (GServer) );
  14.  
  15.     if ( InitObject("GServer") )
  16.     {
  17.     }
  18. }
  19.  
  20. GServer::~GServer()
  21. {
  22. }
  23.  
  24. /*
  25.     0 = first
  26.     n = n'th
  27.     -1 = last
  28.  
  29.   */
  30. GSocket *GServer::GetGSocket(GWORD number)
  31. {
  32.     if (number == -1)
  33.     {
  34.         GSocket *current = FirstGSocket;
  35.         if (current)
  36.         {
  37.             while ( current->GetNext() )
  38.             {
  39.                 current = current->GetNext();
  40.             }
  41.             return current;
  42.         }
  43.         return NULL;
  44.     }
  45.     GSocket *current = FirstGSocket;
  46.     for (int i=0; i<number; i++)
  47.     {
  48.         if ( current == NULL ) return NULL;
  49.         current = current->GetNext();
  50.     }
  51.     return current;
  52. }
  53.  
  54. BOOL GServer::AddGSocket(GSocket *socket)
  55. {
  56.     GSocket *prev = GetGSocket(-1);
  57.     if (prev && socket)
  58.     {
  59.         prev->SetNext(socket);
  60.         socket->SetPrev(prev);
  61.     }
  62.     return TRUE;
  63. }
  64.  
  65. BOOL GServer::RemoveGSocket(GSocket *socket)
  66. {
  67.     GSocket *current = FirstGSocket;
  68.     if (current)
  69.     {
  70.         while ( current->GetNext() )
  71.         {
  72.             if ( current == socket ) break;
  73.         }
  74.         if ( current == socket )
  75.         {
  76.             socket->GetNext()->SetPrev(socket->GetPrev());
  77.             socket->GetPrev()->SetNext(socket->GetNext());
  78.             socket->SetNext(NULL);
  79.             socket->SetPrev(NULL);
  80.             return TRUE;
  81.         }
  82.     }
  83.     return NULL;
  84. }
  85.  
  86. #endif /* GSOCKET_CPP */
  87.