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():
38 flags = telepathy.CONN_MGR_PARAM_FLAG_REQUIRED
39 if parameterName == "password":
40 flags |= telepathy.CONN_MGR_PARAM_FLAG_SECRET
49 for parameterName, parameterType in optionalParameters.iteritems():
50 if parameterName in defaultParameters:
51 flags = telepathy.CONN_MGR_PARAM_FLAG_HAS_DEFAULT
52 if parameterName == "password":
53 flags |= telepathy.CONN_MGR_PARAM_FLAG_SECRET
54 default = defaultParameters[parameterName]
68 def disconnected(self, conn):
70 Overrides telepathy.server.ConnectionManager
72 result = telepathy.server.ConnectionManager.disconnected(self, conn)
73 gobject.timeout_add(5000, self.shutdown)
77 Terminates all connections. Must be called upon quit
79 for connection in self._connections:
80 connection.Disconnect()
81 _moduleLogger.info("Connection manager quitting")
85 self._on_shutdown is not None and
86 len(self._connections) == 0