10 class TheOneRingConnectionManager(telepathy.server.ConnectionManager):
12 def __init__(self, shutdown_func=None):
13 telepathy.server.ConnectionManager.__init__(self, constants._telepathy_implementation_name_)
15 self._protos[constants._telepathy_protocol_name_] = connection.TheOneRingConnection
16 self._on_shutdown = shutdown_func
17 logging.info("Connection manager created")
19 def GetParameters(self, proto):
21 For org.freedesktop.telepathy.ConnectionManager
23 @returns the mandatory and optional parameters for creating a connection
25 if proto not in self._protos:
26 raise telepathy.NotImplemented('unknown protocol %s' % proto)
29 ConnectionClass = self._protos[proto]
30 mandatoryParameters = ConnectionClass.MANDATORY_PARAMETERS
31 optionalParameters = ConnectionClass.OPTIONAL_PARAMETERS
32 defaultParameters = ConnectionClass.PARAMETER_DEFAULTS
34 for parameterName, parameterType in mandatoryParameters.iteritems():
37 telepathy.CONN_MGR_PARAM_FLAG_REQUIRED,
43 for parameterName, parameterType in optionalParameters.iteritems():
44 if parameterName in defaultParameters:
47 telepathy.CONN_MGR_PARAM_FLAG_HAS_DEFAULT,
49 defaultParameters[parameterName],
52 param = (parameterName, 0, parameterName, '')
57 def disconnected(self, conn):
59 Overrides telepathy.server.ConnectionManager
61 result = telepathy.server.ConnectionManager.disconnected(self, conn)
62 gobject.timeout_add(5000, self.shutdown)
66 Terminates all connections. Must be called upon quit
68 for connection in self._connections:
69 connection.Disconnect()
70 logging.info("Connection manager quitting")
74 self._on_shutdown is not None and
75 len(self._connections) == 0