summaryrefslogtreecommitdiffstats
path: root/pym/_emerge/PollScheduler.py
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2012-02-10 18:10:07 -0800
committerZac Medico <zmedico@gentoo.org>2012-02-10 18:10:07 -0800
commit613486a70464ca8c6bd2fdbf68514168e3014b47 (patch)
treebe5b97623543da0c79ebd2dd9d43c51f3341d700 /pym/_emerge/PollScheduler.py
parent4abd7ee534a78b78bcec8ebfdcbc023e5ba30bd3 (diff)
downloadportage-613486a70464ca8c6bd2fdbf68514168e3014b47.tar.gz
portage-613486a70464ca8c6bd2fdbf68514168e3014b47.tar.bz2
portage-613486a70464ca8c6bd2fdbf68514168e3014b47.zip
PollScheduler: add generic _main_loop()
Diffstat (limited to 'pym/_emerge/PollScheduler.py')
-rw-r--r--pym/_emerge/PollScheduler.py22
1 files changed, 22 insertions, 0 deletions
diff --git a/pym/_emerge/PollScheduler.py b/pym/_emerge/PollScheduler.py
index eafb8a237..3b3ef67df 100644
--- a/pym/_emerge/PollScheduler.py
+++ b/pym/_emerge/PollScheduler.py
@@ -109,6 +109,28 @@ class PollScheduler(object):
finally:
self._scheduling = False
+ def _main_loop(self):
+ # Populate initial event sources. We only need to do
+ # this once here, since it can be called during the
+ # loop from within event handlers.
+ self._schedule()
+
+ # Loop while there are jobs to be scheduled.
+ while self._keep_scheduling():
+ self.sched_iface.iteration()
+
+ # Clean shutdown of previously scheduled jobs. In the
+ # case of termination, this allows for basic cleanup
+ # such as flushing of buffered output to logs.
+ while self._is_work_scheduled():
+ self.sched_iface.iteration()
+
+ def _keep_scheduling(self):
+ return False
+
+ def _is_work_scheduled(self):
+ return bool(self._running_job_count())
+
def _running_job_count(self):
return self._jobs