Add a 'condition' keyword argument to PollScheduler._schedule_wait()
authorZac Medico <zmedico@gentoo.org>
Mon, 13 Sep 2010 07:16:07 +0000 (00:16 -0700)
committerZac Medico <zmedico@gentoo.org>
Mon, 13 Sep 2010 07:16:07 +0000 (00:16 -0700)
which is a callable that should return True when it is desirable for
the _schedule_wait() method to return.

pym/_emerge/PollScheduler.py

index e8082fe21576956f7cca378727a2c859135572cb..f9fe32e9a7eab598b21ac860cffeca67319d3469 100644 (file)
@@ -205,7 +205,7 @@ class PollScheduler(object):
                del self._poll_event_handlers[f]
                del self._poll_event_handler_ids[reg_id]
 
-       def _schedule_wait(self, wait_ids=None, timeout=None):
+       def _schedule_wait(self, wait_ids=None, timeout=None, condition=None):
                """
                Schedule until wait_id is not longer registered
                for poll() events.
@@ -231,6 +231,8 @@ class PollScheduler(object):
                                handler, reg_id = event_handlers[f]
                                handler(f, event)
                                event_handled = True
+                               if condition is not None and condition():
+                                       break
                                if timeout is not None:
                                        elapsed_time = time.time() - start_time
                                        remaining_timeout = (timeout - 1000 * elapsed_time)