Imitiating buttfly in being explicitly typed
[theonering] / src / connection_manager.py
index dfcb91a..b9a8e37 100644 (file)
@@ -1,70 +1,78 @@
 import logging
 
-import gobject
 import telepathy
 
+import constants
+import tp
+import util.go_utils as gobject_utils
+import util.misc as misc_utils
 import connection
 
 
-class TheOneRingConnectionManager(telepathy.server.ConnectionManager):
+_moduleLogger = logging.getLogger(__name__)
+
+
+class TheOneRingConnectionManager(tp.ConnectionManager):
+
+       IDLE_TIMEOUT = 10
 
        def __init__(self, shutdown_func=None):
-               telepathy.server.ConnectionManager.__init__(self, 'theonering')
+               tp.ConnectionManager.__init__(self, constants._telepathy_implementation_name_)
 
-               self._protos['gvoice'] = connection.TheOneRingConnection
+               # self._protos is from super
+               self._protos[constants._telepathy_protocol_name_] = connection.TheOneRingConnection
                self._on_shutdown = shutdown_func
-               logging.info("Connection manager created")
+               _moduleLogger.info("Connection manager created")
 
+       @misc_utils.log_exception(_moduleLogger)
        def GetParameters(self, proto):
                """
-               org.freedesktop.telepathy.ConnectionManager
+               For org.freedesktop.telepathy.ConnectionManager
 
                @returns the mandatory and optional parameters for creating a connection
                """
                if proto not in self._protos:
-                       raise telepathy.NotImplemented('unknown protocol %s' % proto)
+                       raise telepathy.errors.NotImplemented('unknown protocol %s' % proto)
 
                result = []
-               connection_class = self._protos[proto]
-               mandatory_parameters = connection_class._mandatory_parameters
-               optional_parameters = connection_class._optional_parameters
-               default_parameters = connection_class._parameter_defaults
-
-               for parameter_name, parameter_type in mandatory_parameters.iteritems():
-                       param = (
-                               parameter_name,
-                               telepathy.CONN_MGR_PARAM_FLAG_REQUIRED,
-                               parameter_type,
-                               '',
-                       )
+               ConnectionClass = self._protos[proto]
+               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 in secretParameters:
+                               flags |= telepathy.CONN_MGR_PARAM_FLAG_SECRET
+                       param = (parameterName, flags, parameterType, "")
                        result.append(param)
 
-               for parameter_name, parameter_type in optional_parameters.iteritems():
-                       if parameter_name in default_parameters:
-                               param = (
-                                       parameter_name,
-                                       telepathy.CONN_MGR_PARAM_FLAG_HAS_DEFAULT,
-                                       parameter_name,
-                                       default_parameters[parameter_name],
-                               )
-                       else:
-                               param = (parameter_name, 0, parameter_name, '')
+               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
+                               default = defaultParameters[parameterName]
+                       param = (parameterName, flags, parameterType, default)
                        result.append(param)
 
                return result
 
-       def disconnected(self, conn):
-               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()
-               logging.info("Connection manager quitting")
+               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