def _trigger_start(self, command, source, *args, **kwargs): original_command = kwargs.get('original', None) trigger = self._triggers.get((command, source), None) if not trigger and original_command: trigger = self._triggers.get((original_command, source), None) if not trigger: trigger = self._triggers.get((command, None), None) if not trigger: trigger = self._triggers.get((original_command, None), None) ## trigger = self._match_condition(command, source, self._triggers) if trigger and self._match_condition_item(trigger): timer = self._trigger_timers.get(trigger[Attribute.MAPPED], None) if not timer: timer = CTimer() timer.stop() if trigger[Attribute.SECS] > 0: timer.action(self.command, (trigger[Attribute.MAPPED], ), source=self, original=source) timer.interval = trigger[Attribute.SECS] self._trigger_timers.update({trigger[Attribute.MAPPED]: timer} ) timer.start() self._logger.debug('{name} command "{command}" from source "{source}" trigger started, mapped to "{mapped}" waiting {secs} secs. '.format( name=self.name, source=source.name if source else None, command=command, mapped=trigger[Attribute.MAPPED], secs=trigger[Attribute.SECS], ))
def test_isAlive(self): rt = CTimer() rt.interval = 2 rt.start() self.assertTrue(rt.isAlive()) time.sleep(3) self.assertFalse(rt.isAlive())
def test_no_sec_callback(self): callback = Mock() callback.test.return_value = True rt = CTimer() rt.interval = 60 rt.action(callback.test, ()) rt.start() time.sleep(3) rt.stop() self.assertFalse(callback.test.called)
def idle(self, *args, **kwargs): command = kwargs.get('command', None) source = kwargs.get('source', None) mapped = kwargs.get(Attribute.MAPPED, None) secs = kwargs.get('secs', None) if secs: timer = CTimer() timer.interval = secs timer.action(self.command, (mapped, ), source=self, original=source, source_property=Property.IDLE) # self._idle_timer = timer self._idle_timer.update({(command, source): {Attribute.SECS: secs, Attribute.MAPPED: mapped, 'timer': timer}})
def _delay_start(self, command, source, *args, **kwargs): original_command = kwargs.get('original', None) delay = self._get_delay(command, source, original_command, include_zero=True) if delay: timer = self._delay_timers.get(delay['mapped'], None) if not timer: timer = CTimer() timer.stop() if delay['secs'] > 0: timer.action(self.command, (delay['mapped'], ), source=self, original=source, source_property=Property.DELAY) timer.interval = delay['secs'] self._delay_timers.update({delay['mapped']: timer} ) timer.start() self._logger.debug('{name} command "{command}" from source "{source}" delayed, mapped to "{mapped}" waiting {secs} secs. '.format( name=self.name, source=source.name if source else None, command=command, mapped=delay['mapped'], secs=delay['secs'], ))
def mapped(self, *args, **kwargs): command = kwargs.get('command', None) mapped = kwargs.get('mapped', None) source = kwargs.get('source', None) secs = kwargs.get('secs', None) timer = None commands = command if not isinstance(command, tuple): commands = (command, ) for c in commands: if secs: timer = CTimer() timer.interval = secs timer.action(self.command, (mapped, ), source=self, original=source) # self._maps.append({'command': command, 'mapped': mapped, 'source': source}) sources = source if not isinstance(source, tuple): sources = (source ,) for s in sources: self._maps.update({(c, s): (mapped, timer)})
def delay(self, *args, **kwargs): commands = kwargs.get('command', None) if (not isinstance(commands, tuple)): commands = (commands, ) mapped = kwargs.get('mapped', None) sources = kwargs.get('source', None) if (not isinstance(sources, tuple)): sources = (sources, ) secs = kwargs.get('secs', None) for command in commands: for source in sources: if not mapped: m = command else: m = mapped timer = CTimer() timer.interval=secs timer.action(self.command, (m, ), source=self, original=source, source_property=Property.DELAY) self._delays.update({(command, source): {'mapped': m, 'secs': secs, 'timer': timer}}) return True