Switching timeouts to seconds for whenever platforms support it
authorEd Page <eopage@byu.net>
Fri, 22 Jan 2010 04:23:00 +0000 (22:23 -0600)
committerEd Page <eopage@byu.net>
Fri, 22 Jan 2010 04:23:00 +0000 (22:23 -0600)
src/gvoice/session.py
src/gvoice/state_machine.py
src/util/go_utils.py

index 2b238d8..43e8f2e 100644 (file)
@@ -29,11 +29,11 @@ class Session(object):
                )
                self._addressbookStateMachine.set_state_strategy(
                        state_machine.StateMachine.STATE_IDLE,
-                       state_machine.ConstantStateStrategy(state_machine.to_milliseconds(hours=6))
+                       state_machine.NopStateStrategy()
                )
                self._addressbookStateMachine.set_state_strategy(
                        state_machine.StateMachine.STATE_ACTIVE,
-                       state_machine.ConstantStateStrategy(state_machine.to_milliseconds(hours=2))
+                       state_machine.ConstantStateStrategy(state_machine.to_seconds(hours=3))
                )
 
                self._voicemails = conversations.Conversations(self._backend.get_voicemails)
@@ -44,11 +44,11 @@ class Session(object):
                )
                self._voicemailsStateMachine.set_state_strategy(
                        state_machine.StateMachine.STATE_IDLE,
-                       state_machine.ConstantStateStrategy(state_machine.to_milliseconds(minutes=60))
+                       state_machine.ConstantStateStrategy(state_machine.to_seconds(hours=2))
                )
                self._voicemailsStateMachine.set_state_strategy(
                        state_machine.StateMachine.STATE_ACTIVE,
-                       state_machine.ConstantStateStrategy(state_machine.to_milliseconds(minutes=10))
+                       state_machine.ConstantStateStrategy(state_machine.to_seconds(minutes=30))
                )
                self._voicemails.updateSignalHandler.register_sink(
                        self._voicemailsStateMachine.request_reset_timers
@@ -62,14 +62,14 @@ class Session(object):
                )
                self._textsStateMachine.set_state_strategy(
                        state_machine.StateMachine.STATE_IDLE,
-                       state_machine.ConstantStateStrategy(state_machine.to_milliseconds(minutes=30))
+                       state_machine.ConstantStateStrategy(state_machine.to_seconds(minutes=30))
                )
                self._textsStateMachine.set_state_strategy(
                        state_machine.StateMachine.STATE_ACTIVE,
                        state_machine.GeometricStateStrategy(
-                               state_machine.to_milliseconds(seconds=20),
-                               state_machine.to_milliseconds(milliseconds=500),
-                               state_machine.to_milliseconds(minutes=10),
+                               state_machine.to_seconds(seconds=20),
+                               state_machine.to_seconds(seconds=1),
+                               state_machine.to_seconds(minutes=30),
                        )
                )
                self._texts.updateSignalHandler.register_sink(
index 511ccde..dbe14d2 100644 (file)
@@ -28,6 +28,18 @@ def to_milliseconds(**kwd):
        raise KeyError("Unknown arg: %r" % kwd)
 
 
+def to_seconds(**kwd):
+       if "milliseconds" in kwd:
+               return kwd["milliseconds"] / 1000
+       elif "seconds" in kwd:
+               return kwd["seconds"]
+       elif "minutes" in kwd:
+               return kwd["minutes"] * 60
+       elif "hours" in kwd:
+               return kwd["hours"] * 60 * 60
+       raise KeyError("Unknown arg: %r" % kwd)
+
+
 class NopStateStrategy(object):
 
        def __init__(self):
@@ -212,15 +224,12 @@ class UpdateStateMachine(StateMachine):
        def _request_reset_timers(self, *args):
                self._reset_timers()
 
-       def _set_initial_period(self):
-               self._currentPeriod = self._INITIAL_ACTIVE_PERIOD / 2 # We will double it later
-
        def _schedule_update(self):
                assert self._timeoutId is None
                self._strategy.increment_state()
                nextTimeout = self._strategy.timeout
                if nextTimeout != self.INFINITE_PERIOD:
-                       self._timeoutId = gobject.timeout_add(nextTimeout, self._on_timeout)
+                       self._timeoutId = gobject_utils.timeout_add_seconds(nextTimeout, self._on_timeout)
                _moduleLogger.info("%s Next update in %s ms" % (self._name, nextTimeout, ))
 
        def _stop_update(self):
index 66ea959..2753ec8 100644 (file)
@@ -68,3 +68,18 @@ def throttled(minDelay, queue):
                return new_function
 
        return actual_decorator
+
+
+def _old_timeout_add_seconds(timeout, callback):
+       return gobject.timeout_add(timeout * 1000, callback)
+
+
+def _timeout_add_seconds(timeout, callback):
+       return gobject.timeout_add_seconds(timeout, callback)
+
+
+try:
+       gobject.timeout_add_seconds
+       timeout_add_seconds = _timeout_add_seconds
+except AttributeError:
+       timeout_add_seconds = _old_timeout_add_seconds