| # Copyright 1999-2009 Gentoo Foundation |
| # Distributed under the terms of the GNU General Public License v2 |
| |
| from _emerge.QueueScheduler import QueueScheduler |
| from _emerge.SequentialTaskQueue import SequentialTaskQueue |
| |
| class TaskScheduler(object): |
| |
| """ |
| A simple way to handle scheduling of AsynchrousTask instances. Simply |
| add tasks and call run(). The run() method returns when no tasks remain. |
| """ |
| |
| def __init__(self, max_jobs=None, max_load=None): |
| self._queue = SequentialTaskQueue(max_jobs=max_jobs) |
| self._scheduler = QueueScheduler( |
| max_jobs=max_jobs, max_load=max_load) |
| self.sched_iface = self._scheduler.sched_iface |
| self.run = self._scheduler.run |
| self.clear = self._scheduler.clear |
| self._scheduler.add(self._queue) |
| |
| def add(self, task): |
| self._queue.add(task) |
| |