- notifiers.erase(sn->getFD());
-}
-
-void eMainloop::processOneEvent()
-{
- /* notes:
- - we should use epoll(4)
- - timer are checked twice. there was a strong reason for it, but i can't remember. (FIXME)
- - for each time, we gettimeofday() and check wether the timer should fire.
- we should do this all better - we know how long the poll last, so we know which
- timers should fire. Problem is that a timer handler could have required so
- much time that another timer fired.
-
- A probably structure could look
-
- while (1)
- {
- time = gettimeofday()
- timeout = calculate_pending_timers(time);
-
- doPoll(timeout or infinite);
-
- if (poll_had_results)
- handle_poll_handler();
- else
- fire_timers(time + timeout)
- }
-
- the gettimeofday() call is required because fire_timers could last more
- than nothing.
-
- when poll did no timeout, we don't handle timers, as this will be done
- in the next iteration (without adding overhead - we had to get the new
- time anyway
- */
-
- // first, process pending timers...
- long usec=0;
-
- while (TimerList && (usec = timeout_usec( TimerList.begin()->getNextActivation() ) ) <= 0 )
- TimerList.begin()->activate();
+ for (std::map<int,eSocketNotifier*>::iterator i = notifiers.find(sn->getFD());
+ i != notifiers.end();
+ ++i)
+ if (i->second == sn)
+ return notifiers.erase(i);
+ eFatal("removed socket notifier which is not present");
+}