Bump to 0.8.24
[theonering] / src / gvoice / state_machine.py
index 0a04e07..724cdc2 100644 (file)
@@ -7,7 +7,7 @@ import util.coroutines as coroutines
 import util.misc as misc_utils
 
 
-_moduleLogger = logging.getLogger("gvoice.state_machine")
+_moduleLogger = logging.getLogger(__name__)
 
 
 def to_milliseconds(**kwd):
@@ -234,7 +234,7 @@ class UpdateStateMachine(StateMachine):
                self._name = name
                self._updateItems = updateItems
                self._maxTime = maxTime
-               self._isRunning = False
+               self._isActive = False
 
                self._state = self.STATE_ACTIVE
                self._onTimeout = gobject_utils.Timeout(self._on_timeout)
@@ -250,8 +250,9 @@ class UpdateStateMachine(StateMachine):
                return """UpdateStateMachine(
        name=%r,
        strategie=%s,
-       isRunning=%r,
-)""" % (self._name, self._strategy, self._onTimeout.is_running())
+       isActive=%r,
+       isPolling=%r,
+)""" % (self._name, self._strategy, self._isActive, self._onTimeout.is_running())
 
        def __repr__(self):
                return """UpdateStateMachine(
@@ -267,12 +268,12 @@ class UpdateStateMachine(StateMachine):
                        strategy.initialize_state()
                if self._strategy.timeout != self.INFINITE_PERIOD:
                        self._onTimeout.start(seconds=0)
-               self._isRunning = True
+               self._isActive = True
                _moduleLogger.info("%s Starting State Machine" % (self._name, ))
 
        def stop(self):
                _moduleLogger.info("%s Stopping State Machine" % (self._name, ))
-               self._isRunning = False
+               self._isActive = False
                self._onTimeout.cancel()
 
        def close(self):
@@ -292,8 +293,23 @@ class UpdateStateMachine(StateMachine):
        def state(self):
                return self._state
 
-       def reset_timers(self):
-               self._reset_timers()
+       def reset_timers(self, initialize=False):
+               self._reset_timers(initialize)
+
+       def update_now(self):
+               if not self._isActive:
+                       return # not started yet
+               _moduleLogger.info("%s Forcing immediate update of state machine" % (self._name, ))
+               self._onTimeout.cancel()
+               self._strategy.reinitialize_state()
+               self._strategy.increment_state()
+               nextTimeout = self._strategy.timeout
+               if nextTimeout != self.INFINITE_PERIOD and nextTimeout < self._maxTime:
+                       nextTimeout = 0
+                       self._onTimeout.start(seconds=nextTimeout)
+                       _moduleLogger.info("%s Marked for update" % (self._name, ))
+               else:
+                       _moduleLogger.info("%s Disabled, skipping update (timeout is %s seconds)" % (self._name, nextTimeout, ))
 
        @property
        def request_reset_timers(self):
@@ -312,7 +328,7 @@ class UpdateStateMachine(StateMachine):
                self._reset_timers()
 
        def _reset_timers(self, initialize=False):
-               if not self._isRunning:
+               if not self._isActive:
                        return # not started yet
                _moduleLogger.info("%s Resetting State Machine" % (self._name, ))
                self._onTimeout.cancel()