11 _moduleLogger = logging.getLogger("connection_manager")
14 class TheOneRingConnectionManager(telepathy.server.ConnectionManager):
16 def __init__(self, shutdown_func=None):
17 telepathy.server.ConnectionManager.__init__(self, constants._telepathy_implementation_name_)
19 # self._protos is from super
20 self._protos[constants._telepathy_protocol_name_] = connection.TheOneRingConnection
21 self._on_shutdown = shutdown_func
22 _moduleLogger.info("Connection manager created")
24 @gtk_toolbox.log_exception(_moduleLogger)
25 def GetParameters(self, proto):
27 For org.freedesktop.telepathy.ConnectionManager
29 @returns the mandatory and optional parameters for creating a connection
31 if proto not in self._protos:
32 raise telepathy.errors.NotImplemented('unknown protocol %s' % proto)
35 ConnectionClass = self._protos[proto]
36 mandatoryParameters = ConnectionClass._mandatory_parameters
37 optionalParameters = ConnectionClass._optional_parameters
38 defaultParameters = ConnectionClass._parameter_defaults
40 for parameterName, parameterType in mandatoryParameters.iteritems():
41 flags = telepathy.CONN_MGR_PARAM_FLAG_REQUIRED
42 if parameterName == "password":
43 flags |= telepathy.CONN_MGR_PARAM_FLAG_SECRET
52 for parameterName, parameterType in optionalParameters.iteritems():
53 if parameterName in defaultParameters:
54 flags = telepathy.CONN_MGR_PARAM_FLAG_HAS_DEFAULT
55 if parameterName == "password":
56 flags |= telepathy.CONN_MGR_PARAM_FLAG_SECRET
57 default = defaultParameters[parameterName]
71 def disconnected(self, conn):
73 Overrides telepathy.server.ConnectionManager
75 result = telepathy.server.ConnectionManager.disconnected(self, conn)
76 gobject.timeout_add(5000, self.shutdown)
80 Terminates all connections. Must be called upon quit
82 for connection in self._connections:
83 connection.Disconnect()
84 _moduleLogger.info("Connection manager quitting")
88 self._on_shutdown is not None and
89 len(self._connections) == 0