aboutsummaryrefslogtreecommitdiff
blob: 71ac80f1432c2ff7268b9cc52e0cf6079267618d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# 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.wait = self._queue.wait
		self._scheduler.add(self._queue)

	def add(self, task):
		self._queue.add(task)