예제 #1
0
    def __init__(self,
                 devices,
                 options,
                 verbose=0,
                 mode='threading',
                 max_threads=1,
                 stdout=sys.stdout,
                 stderr=sys.stderr):

        self.devices = to_list(devices)
        self.workqueue = WorkQueue(mode=mode)
        self.pipe_handlers = weakref.WeakValueDictionary()
        self.verbose = verbose
        self.stdout = options.stdoutfile
        self.stderr = options.stdoutfile
        self.devnull = open(os.devnull, 'w')
        self.channel_map = {'fatal_errors': self.stderr, 'debug': self.stdout}
        self.completed = 0
        self.total = 0
        self.failed = 0
        self.failed_devices = set()
        self.status_bar_length = 0
        self.set_max_threads(max_threads)

        self.task = None

        # Listen to what the workqueue is doing.
        self.workqueue.job_init_event.listen(self._on_job_init)
        self.workqueue.job_started_event.listen(self._on_job_started)
        self.workqueue.job_error_event.listen(self._on_job_error)
        self.workqueue.job_succeeded_event.listen(self._on_job_succeeded)
        self.workqueue.job_aborted_event.listen(self._on_job_aborted)

        self.options = options