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 @returns the mandatory and optional parameters for creating a connection
23 if proto not in self._protos:
24 raise telepathy.NotImplemented('unknown protocol %s' % proto)
27 ConnectionClass = self._protos[proto]
28 mandatoryParameters = ConnectionClass.MANDATORY_PARAMETERS
29 optionalParameters = ConnectionClass.OPTIONAL_PARAMETERS
30 defaultParameters = ConnectionClass.PARAMETER_DEFAULTS
32 for parameterName, parameterType in mandatoryParameters.iteritems():
35 telepathy.CONN_MGR_PARAM_FLAG_REQUIRED,
41 for parameterName, parameterType in optionalParameters.iteritems():
42 if parameterName in defaultParameters:
45 telepathy.CONN_MGR_PARAM_FLAG_HAS_DEFAULT,
47 defaultParameters[parameterName],
50 param = (parameterName, 0, parameterName, '')
55 def disconnected(self, conn):
56 result = telepathy.server.ConnectionManager.disconnected(self, conn)
57 gobject.timeout_add(5000, self.shutdown)
61 Terminates all connections. Must be called upon quit
63 for connection in self._connections:
64 connection.Disconnect()
65 logging.info("Connection manager quitting")
69 self._on_shutdown is not None and
70 len(self._connections) == 0