예제 #1
0
int wxSocketEventDispatcher::FillSets(fd_set* readset, fd_set* writeset)
{
    int max_fd = 0;

    wxFD_ZERO(readset);
    wxFD_ZERO(writeset);

    BeginFind();
    wxHashTable::compatibility_iterator node = Next();
    while (node)
    {
        wxSocketEventDispatcherEntry* entry =
            (wxSocketEventDispatcherEntry*) node->GetData();

        if (entry->m_fdInput != -1)
        {
            wxFD_SET(entry->m_fdInput, readset);
            if (entry->m_fdInput > max_fd)
              max_fd = entry->m_fdInput;
        }

        if (entry->m_fdOutput != -1)
        {
            wxFD_SET(entry->m_fdOutput, writeset);
            if (entry->m_fdOutput > max_fd)
                max_fd = entry->m_fdOutput;
        }

        node = Next();
    }

    return max_fd;
}
예제 #2
0
void wxSocketEventDispatcher::AddEvents(fd_set* readset, fd_set* writeset)
{
    BeginFind();
    wxHashTable::compatibility_iterator node = Next();
    while (node)
    {
        // We have to store the next node here, because the event processing can 
        // destroy the object before we call Next()

        wxHashTable::compatibility_iterator next_node = Next();	

        wxSocketEventDispatcherEntry* entry =
            (wxSocketEventDispatcherEntry*) node->GetData();

        wxCHECK_RET(entry->m_socket, wxT("Critical: Processing a NULL socket in wxSocketEventDispatcher"));

        if (entry->m_fdInput != -1 && wxFD_ISSET(entry->m_fdInput, readset))
            entry->m_socket->Detected_Read();

        if (entry->m_fdOutput != -1 && wxFD_ISSET(entry->m_fdOutput, writeset))
            entry->m_socket->Detected_Write();;

        node = next_node;
    }
}
예제 #3
0
void wxPropertyValidatorRegistry::ClearRegistry(void)
{
  BeginFind();
  wxHashTable::Node *node;
  while ((node = Next()) != NULL)
  {
    delete (wxPropertyValidator *)node->GetData();
  }
}