diff options
author | Zac Medico <zmedico@gentoo.org> | 2012-02-10 18:10:07 -0800 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2012-02-10 18:10:07 -0800 |
commit | 613486a70464ca8c6bd2fdbf68514168e3014b47 (patch) | |
tree | be5b97623543da0c79ebd2dd9d43c51f3341d700 /pym/_emerge/PollScheduler.py | |
parent | 4abd7ee534a78b78bcec8ebfdcbc023e5ba30bd3 (diff) | |
download | portage-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.py | 22 |
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 |