X-Git-Url: http://git.maemo.org/git/?p=theonering;a=blobdiff_plain;f=src%2Fgvoice%2Fsession.py;h=3a7de001e01708c4d7263f39e49e1192aa53d090;hp=9f68aa86be3ccce92da4bdc0de2866d00f98aa53;hb=074b7adedaeba92d5993f8015be26c684f8bbfd8;hpb=6fd8c075d389b9f4e4be90ac3b3707611c9dccbe diff --git a/src/gvoice/session.py b/src/gvoice/session.py index 9f68aa8..3a7de00 100644 --- a/src/gvoice/session.py +++ b/src/gvoice/session.py @@ -10,15 +10,15 @@ import conversations import state_machine -_moduleLogger = logging.getLogger("gvoice.session") +_moduleLogger = logging.getLogger(__name__) class Session(object): _DEFAULTS = { - "contacts": (3, "hours"), - "voicemail": (30, "minutes"), - "texts": (5, "minutes"), + "contacts": (12, "hours"), + "voicemail": (120, "minutes"), + "texts": (10, "minutes"), } _MINIMUM_MESSAGE_PERIOD = state_machine.to_seconds(minutes=30) @@ -29,9 +29,9 @@ class Session(object): else: for key, (quant, unit) in defaults.iteritems(): if quant == 0: - defaults[key] = self._DEFAULTS[key] + defaults[key] = (self._DEFAULTS[key], unit) elif quant < 0: - defaults[key] = state_machine.UpdateStateMachine.INFINITE_PERIOD + defaults[key] = (state_machine.UpdateStateMachine.INFINITE_PERIOD, unit) self._username = None self._password = None @@ -60,10 +60,12 @@ class Session(object): if defaults["voicemail"][0] == state_machine.UpdateStateMachine.INFINITE_PERIOD: voicemailPeriodInSeconds = state_machine.UpdateStateMachine.INFINITE_PERIOD + idleVoicemailPeriodInSeconds = state_machine.UpdateStateMachine.INFINITE_PERIOD else: voicemailPeriodInSeconds = state_machine.to_seconds( **{defaults["voicemail"][1]: defaults["voicemail"][0],} ) + idleVoicemailPeriodInSeconds = max(voicemailPeriodInSeconds * 4, self._MINIMUM_MESSAGE_PERIOD) self._voicemails = conversations.Conversations(self._backend.get_voicemails) self._voicemailsStateMachine = state_machine.UpdateStateMachine([self.voicemails], "Voicemail") self._voicemailsStateMachine.set_state_strategy( @@ -72,24 +74,30 @@ class Session(object): ) self._voicemailsStateMachine.set_state_strategy( state_machine.StateMachine.STATE_IDLE, - state_machine.ConstantStateStrategy( - max(voicemailPeriodInSeconds * 4, self._MINIMUM_MESSAGE_PERIOD) - ) + state_machine.ConstantStateStrategy(idleVoicemailPeriodInSeconds) ) self._voicemailsStateMachine.set_state_strategy( state_machine.StateMachine.STATE_ACTIVE, - state_machine.ConstantStateStrategy(voicemailPeriodInSeconds) + state_machine.NTimesStateStrategy( + 3 * [state_machine.to_seconds(minutes=1)], voicemailPeriodInSeconds + ) ) self._voicemails.updateSignalHandler.register_sink( self._voicemailsStateMachine.request_reset_timers ) if defaults["texts"][0] == state_machine.UpdateStateMachine.INFINITE_PERIOD: + initTextsPeriodInSeconds = state_machine.UpdateStateMachine.INFINITE_PERIOD + minTextsPeriodInSeconds = state_machine.UpdateStateMachine.INFINITE_PERIOD textsPeriodInSeconds = state_machine.UpdateStateMachine.INFINITE_PERIOD + idleTextsPeriodInSeconds = state_machine.UpdateStateMachine.INFINITE_PERIOD else: + initTextsPeriodInSeconds = state_machine.to_seconds(seconds=20) + minTextsPeriodInSeconds = state_machine.to_seconds(seconds=1) textsPeriodInSeconds = state_machine.to_seconds( **{defaults["texts"][1]: defaults["texts"][0],} ) + idleTextsPeriodInSeconds = max(textsPeriodInSeconds * 4, self._MINIMUM_MESSAGE_PERIOD) self._texts = conversations.Conversations(self._backend.get_texts) self._textsStateMachine = state_machine.UpdateStateMachine([self.texts], "Texting") self._textsStateMachine.set_state_strategy( @@ -98,15 +106,13 @@ class Session(object): ) self._textsStateMachine.set_state_strategy( state_machine.StateMachine.STATE_IDLE, - state_machine.ConstantStateStrategy( - max(textsPeriodInSeconds * 4, self._MINIMUM_MESSAGE_PERIOD) - ) + state_machine.ConstantStateStrategy(idleTextsPeriodInSeconds) ) self._textsStateMachine.set_state_strategy( state_machine.StateMachine.STATE_ACTIVE, state_machine.GeometricStateStrategy( - state_machine.to_seconds(seconds=20), - state_machine.to_seconds(seconds=1), + initTextsPeriodInSeconds, + minTextsPeriodInSeconds, textsPeriodInSeconds, ) ) @@ -180,7 +186,7 @@ class Session(object): # To throttle checking with the server, use a 30s cache newTime = time.time() if self._lastDndCheck + 30 < newTime: - self._lasDndCheck = newTime + self._lastDndCheck = newTime self._cachedIsDnd = self._backend.is_dnd() return self._cachedIsDnd