Beispiel #1
0
    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],
                                                                                ))
Beispiel #2
0
 def test_isAlive(self):
     rt = CTimer()
     rt.interval = 2
     rt.start()
     self.assertTrue(rt.isAlive())
     time.sleep(3)
     self.assertFalse(rt.isAlive())        
Beispiel #3
0
 def test_isAlive(self):
     rt = CTimer()
     rt.interval = 2
     rt.start()
     self.assertTrue(rt.isAlive())
     time.sleep(3)
     self.assertFalse(rt.isAlive())
Beispiel #4
0
 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)
Beispiel #5
0
 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)
Beispiel #6
0
    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}})
Beispiel #7
0
 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'],
                                                                             ))
Beispiel #8
0
 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)})
Beispiel #9
0
    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