示例#1
0
文件: folder.py 项目: tlevine/imapfw
    def start(self, folderTasks: Queue, left: Emitter, right: Emitter) -> None:

        self._debug("start()")

        self.architect = Architect(self.workerName)

        if left is None:
            self.leftArch = DriverArchitect("%s.Driver.0" % self.workerName)
            self.leftArch.init()
            self.leftArch.start()
            left = self.leftArch.getEmitter()
        else:
            self.leftArch = ReuseDriverArchitect(left)
        if right is None:
            self.rightArch = DriverArchitect("%s.Driver.1" % self.workerName)
            self.rightArch.init()
            self.rightArch.start()
            right = self.rightArch.getEmitter()
        else:
            self.rightArch = ReuseDriverArchitect(right)

        receiver, emitter = newEmitterReceiver(self.workerName)
        receiver.accept("stop", self._on_stop)
        self.receiver = receiver

        engine = SyncFolders(self.workerName, emitter, left, right, self.accountName)

        self.architect.start(topRunner, (self.workerName, engine.run, folderTasks))
示例#2
0
    def start(self, folderTasks: Queue, left: Emitter, right: Emitter):
        self._debug("start()")

        if left is None:
            self._leftArchitect = DriverArchitect(
                "%s.Driver.0"% self._workerName)
            self._leftArchitect.start()
            left = self._leftArchitect.getEmitter()
        if right is None:
            self._rightArchitect = DriverArchitect(
                "%s.Driver.1"% self._workerName)
            self._rightArchitect.start()
            right = self._rightArchitect.getEmitter()

        receiver, emitter = newEmitterReceiver(self._workerName)
        receiver.accept('stop', self._stop)
        self._receiver = receiver

        #TODO: the architect must not know what engine will be used.
        # 'SyncFolder' from rascal: review Account.engine.
        engine = SyncFolders(self._workerName, emitter, left, right,
            self._accountName)

        self._worker = runtime.concurrency.createWorker(
            self._workerName,
            topRunner,
            (self._workerName, engine.syncFolders, folderTasks),
            )

        self._worker.start()
示例#3
0
    def start(self, workerName: str, accountTasks: Queue, engineName: str):
        """Setup and initiate one account worker. Not blocking."""

        self._debug("start(%s, %s, %s)"% (workerName, repr(accountTasks),
            engineName))

        # Setup and start both end-drivers.
        leftName, rightName = "%s.Driver.0"% workerName, "%s.Driver.1"% workerName
        self._leftArchitect = DriverArchitect(leftName)
        self._rightArchitect = DriverArchitect(rightName)

        self._leftArchitect.start()
        self._rightArchitect.start()

        # Setup events.
        receiver, emitter = newEmitterReceiver(workerName)
        receiver.accept('running', self._running)
        receiver.accept('stop', self._stop)
        receiver.accept('syncFolders', self._syncFolders)
        receiver.accept('wait', self._wait)
        self._receiver = receiver

        engine = SyncAccounts(
            workerName,
            emitter,
            self._leftArchitect.getEmitter(),
            self._rightArchitect.getEmitter(),
            )

        # Time for the worker.
        self._worker = self.concurrency.createWorker(workerName,
            topRunner,
            (workerName, engine.syncAccounts, accountTasks),
            )
        self._worker.start()
示例#4
0
    def start(self, folderTasks: Queue, left: Emitter, right: Emitter) -> None:

        self._debug("start()")

        self.architect = Architect(self.workerName)

        if left is None:
            self.leftArch = DriverArchitect("%s.Driver.0" % self.workerName)
            self.leftArch.init()
            self.leftArch.start()
            left = self.leftArch.getEmitter()
        else:
            self.leftArch = ReuseDriverArchitect(left)
        if right is None:
            self.rightArch = DriverArchitect("%s.Driver.1" % self.workerName)
            self.rightArch.init()
            self.rightArch.start()
            right = self.rightArch.getEmitter()
        else:
            self.rightArch = ReuseDriverArchitect(right)

        receiver, emitter = newEmitterReceiver(self.workerName)
        receiver.accept('stop', self._on_stop)
        self.receiver = receiver

        engine = SyncFolders(self.workerName, emitter, left, right,
                             self.accountName)

        self.architect.start(
            topRunner,
            (self.workerName, engine.run, folderTasks),
        )
示例#5
0
    def init(self) -> None:
        receiver, self.emitter = newEmitterReceiver(self.workerName)
        driverRunner = DriverRunner(self.workerName, receiver)

        self.worker = runtime.concurrency.createWorker(self.workerName,
            topRunner,
            (self.workerName, driverRunner.run)
            )
示例#6
0
    def init(self) -> None:
        receiver, self.emitter = newEmitterReceiver(self.workerName)
        driverRunner = DriverRunner(self.workerName, receiver)

        self.worker = runtime.concurrency.createWorker(self.workerName,
            topRunner,
            (self.workerName, driverRunner.run)
            )
示例#7
0
    def init(self) -> None:
        """Initialize the architect. Helps to compose components easily."""
        self.engineArch = EngineArchitect(self.workerName)
        self.engineArch.init()

        self.receiver, emitter = newEmitterReceiver(self.workerName)

        # Setup events handling.
        # self.receiver.accept('running', self._on_running)
        self.receiver.accept('stop', self._on_stop)
        self.receiver.accept('syncFolders', self._on_syncFolders)
        self.receiver.accept('areFoldersDone', self._on_areFoldersDone)

        self.engine = SyncAccounts(
            self.workerName,
            emitter,
            self.engineArch.getLeftEmitter(),
            self.engineArch.getRightEmitter(),
        )
示例#8
0
    def init(self) -> None:
        """Initialize the architect. Helps to compose components easily."""

        self.engineArch = EngineArchitect(self.workerName)
        self.engineArch.init()

        self.receiver, emitter = newEmitterReceiver(self.workerName)

        # Setup events handling.
        self.receiver.accept('areSyncFoldersDone', self._on_areSyncFoldersDone)
        self.receiver.accept('accountEngineDone', self._on_accountEngineDone)
        self.receiver.accept('syncFolders', self._on_syncFolders)

        self.engine = SyncAccounts(
            self.workerName,
            emitter,
            self.engineArch.getLeftEmitter(),
            self.engineArch.getRightEmitter(),
            )