10 _moduleLogger = logging.getLogger("connection_manager")
13 class TheOneRingConnectionManager(telepathy.server.ConnectionManager):
15 def __init__(self, shutdown_func=None):
16 telepathy.server.ConnectionManager.__init__(self, constants._telepathy_implementation_name_)
18 self._protos[constants._telepathy_protocol_name_] = connection.TheOneRingConnection
19 self._on_shutdown = shutdown_func
20 _moduleLogger.info("Connection manager created")
22 def GetParameters(self, proto):
24 For org.freedesktop.telepathy.ConnectionManager
26 @returns the mandatory and optional parameters for creating a connection
28 if proto not in self._protos:
29 raise telepathy.NotImplemented('unknown protocol %s' % proto)
32 ConnectionClass = self._protos[proto]
33 mandatoryParameters = ConnectionClass.MANDATORY_PARAMETERS
34 optionalParameters = ConnectionClass.OPTIONAL_PARAMETERS
35 defaultParameters = ConnectionClass.PARAMETER_DEFAULTS
37 for parameterName, parameterType in mandatoryParameters.iteritems():
40 telepathy.CONN_MGR_PARAM_FLAG_REQUIRED,
46 for parameterName, parameterType in optionalParameters.iteritems():
47 if parameterName in defaultParameters:
50 telepathy.CONN_MGR_PARAM_FLAG_HAS_DEFAULT,
52 defaultParameters[parameterName],
55 param = (parameterName, 0, parameterName, '')
60 def disconnected(self, conn):
62 Overrides telepathy.server.ConnectionManager
64 result = telepathy.server.ConnectionManager.disconnected(self, conn)
65 gobject.timeout_add(5000, self.shutdown)
69 Terminates all connections. Must be called upon quit
71 for connection in self._connections:
72 connection.Disconnect()
73 _moduleLogger.info("Connection manager quitting")
77 self._on_shutdown is not None and
78 len(self._connections) == 0