- while (node)
- {
- wxSocketBase* sock = (wxSocketBase*)node->Data();
-
- delete sock;
- next_node = node->Next();
- delete node;
- node = next_node;
- }
-
- delete socks;
-
-#ifdef __WINDOWS__
- WSACleanup();
- win_initialized = 0;
-#endif
-}
-
-// --------------------------------------------------------------
-// --------- wxSocketHandler registering functions --------------
-// --------------------------------------------------------------
-
-void wxSocketHandler::Register(wxSocketBase* sock)
-{
- wxNode *node;
-
- for (node = socks->First(); node != NULL; node = node->Next())
- {
- wxSocketBase* s = (wxSocketBase*)node->Data();
-
- if (s == sock)
- return;
- }
-
- if (sock)
- {
- socks->Append(sock);
- sock->SetHandler(this);
- }
-}
-
-void wxSocketHandler::UnRegister(wxSocketBase* sock)
-{
- wxNode *node;
-
- for (node = socks->First(); node; node = node->Next())
- {
- wxSocketBase* s = (wxSocketBase*)node->Data();
-
- if (s == sock)
- {
- delete node;
- sock->SetHandler(NULL);
- return;
- }
- }
-}
-
-unsigned long wxSocketHandler::Count() const
-{
- return socks->Number();
-}
-
-// --------------------------------------------------------------
-// --------- wxSocketHandler "big" wait functions ---------------
-// --------------------------------------------------------------
-
-int wxSocketHandler::Wait(long seconds, long microseconds)
-{
- // TODO Needs the completely asynchronous notifier.
-
- /*
- int i;
- int on_wait;
- wxNode *node;
- for (node = socks->First(), i=0; node; node = node->Next(), i++)
- {
- wxSocketBase *sock = (wxSocketBase *)node->Data();
-
- sock->SaveState();
-
- sock->SetupCallbacks();
-
- sock->Callback(handler_cbk);
- sock->CallbackData((char *)&on_wait);
- }
- on_wait = 0;
- if (seconds != -1)
- s_wake.Start((seconds*1000) + (microseconds/1000), TRUE);
-
- while (!on_wait)
- PROCESS_EVENTS();
-
- for (node = socks->First(), i=0; node; node = node->Next(), i++)
- {
- wxSocketBase *sock = (wxSocketBase *)node->Data();
-
- sock->RestoreState();
- }
-
- if (on_wait == -2)
- return 0;
-
- return on_wait;
- */
- return 0;
-}
-
-void wxSocketHandler::YieldSock()
-{
- wxNode *node;
-
- // Nothing to do anymore here except waiting for the queue emptying.
- for (node = socks->First(); node; node=node->Next()) {
- wxSocketBase *sock = (wxSocketBase *)node->Data();
-
- sock->m_internal->WaitForEnd(NULL);
- }
-}
-
-// --------------------------------------------------------------
-// --------- wxSocketHandler: create and register the socket ----
-// --------------------------------------------------------------
-wxSocketServer *wxSocketHandler::CreateServer(wxSockAddress& addr,
- wxSocketBase::wxSockFlags flags)