X-Git-Url: http://git.maemo.org/git/?p=theonering;a=blobdiff_plain;f=src%2Fconnection_manager.py;h=b9a8e3777452a2e8893872112cd46cbdf5d4b764;hp=b392555af0e59db525c78824ee3fcaa04733d1dd;hb=b14494d3d36e55d4a6c2cbd2e467e1686cbb8f7e;hpb=b2b59a3eebb396e5663a50ef639b148fd2ac9c99 diff --git a/src/connection_manager.py b/src/connection_manager.py index b392555..b9a8e37 100644 --- a/src/connection_manager.py +++ b/src/connection_manager.py @@ -1,36 +1,30 @@ -""" -Empathy Experience: - .profile file needs to be updated with proper presence - Can't reopen a conversation for someone when I've already closed it - Can't call - When first started, reports all read conversations when some might have been read - When first started, reports all of an SMS conversation even though some has been reported previously -""" - import logging -import gobject import telepathy import constants -import gtk_toolbox +import tp +import util.go_utils as gobject_utils +import util.misc as misc_utils import connection -_moduleLogger = logging.getLogger("connection_manager") +_moduleLogger = logging.getLogger(__name__) + +class TheOneRingConnectionManager(tp.ConnectionManager): -class TheOneRingConnectionManager(telepathy.server.ConnectionManager): + IDLE_TIMEOUT = 10 def __init__(self, shutdown_func=None): - telepathy.server.ConnectionManager.__init__(self, constants._telepathy_implementation_name_) + tp.ConnectionManager.__init__(self, constants._telepathy_implementation_name_) # self._protos is from super self._protos[constants._telepathy_protocol_name_] = connection.TheOneRingConnection self._on_shutdown = shutdown_func _moduleLogger.info("Connection manager created") - @gtk_toolbox.log_exception(_moduleLogger) + @misc_utils.log_exception(_moduleLogger) def GetParameters(self, proto): """ For org.freedesktop.telepathy.ConnectionManager @@ -45,53 +39,40 @@ class TheOneRingConnectionManager(telepathy.server.ConnectionManager): mandatoryParameters = ConnectionClass._mandatory_parameters optionalParameters = ConnectionClass._optional_parameters defaultParameters = ConnectionClass._parameter_defaults + secretParameters = ConnectionClass._secret_parameters for parameterName, parameterType in mandatoryParameters.iteritems(): flags = telepathy.CONN_MGR_PARAM_FLAG_REQUIRED - if parameterName == "password": + if parameterName in secretParameters: flags |= telepathy.CONN_MGR_PARAM_FLAG_SECRET - param = ( - parameterName, - flags, - parameterType, - '', - ) + param = (parameterName, flags, parameterType, "") result.append(param) for parameterName, parameterType in optionalParameters.iteritems(): + flags = 0 + default = "" + if parameterName in secretParameters: + flags |= telepathy.CONN_MGR_PARAM_FLAG_SECRET if parameterName in defaultParameters: - flags = telepathy.CONN_MGR_PARAM_FLAG_HAS_DEFAULT - if parameterName == "password": - flags |= telepathy.CONN_MGR_PARAM_FLAG_SECRET + flags |= telepathy.CONN_MGR_PARAM_FLAG_HAS_DEFAULT default = defaultParameters[parameterName] - else: - flags = 0 - default = "" - param = ( - parameterName, - flags, - parameterName, - default, - ) + param = (parameterName, flags, parameterType, default) result.append(param) return result - def disconnected(self, conn): - """ - Overrides telepathy.server.ConnectionManager - """ - result = telepathy.server.ConnectionManager.disconnected(self, conn) - gobject.timeout_add(5000, self.shutdown) + def disconnect_completed(self): + gobject_utils.timeout_add_seconds(self.IDLE_TIMEOUT, self._shutdown) def quit(self): """ Terminates all connections. Must be called upon quit """ - for connection in self._connections: - connection.Disconnect() + for conn in self._connections: + conn.Disconnect() _moduleLogger.info("Connection manager quitting") + @misc_utils.log_exception(_moduleLogger) def _shutdown(self): if ( self._on_shutdown is not None and