- if (ref[a->second]->Readable())
- FD_SET (a->second, &rfdset);
- else
- FD_SET (a->second, &wfdset);
- if (writeable[a->second])
- FD_SET (a->second, &wfdset);
-
- FD_SET (a->second, &errfdset);
+ EventHandler* eh = ref[i];
+ if (!eh)
+ continue;
+ int state = eh->GetEventMask();
+ if (state & (FD_WANT_POLL_READ | FD_WANT_FAST_READ))
+ FD_SET (i, &rfdset);
+ if (state & (FD_WANT_POLL_WRITE | FD_WANT_FAST_WRITE))
+ FD_SET (i, &wfdset);
+ FD_SET (i, &errfdset);