7 import util.go_utils as gobject_utils
8 import util.misc as misc_utils
12 _moduleLogger = logging.getLogger(__name__)
15 class TheOneRingConnectionManager(tp.ConnectionManager):
19 def __init__(self, shutdown_func=None):
20 tp.ConnectionManager.__init__(self, constants._telepathy_implementation_name_)
22 # self._protos is from super
23 self._protos[constants._telepathy_protocol_name_] = connection.TheOneRingConnection
24 self._on_shutdown = shutdown_func
25 self._quitImmediately = False
26 _moduleLogger.info("Connection manager created")
28 @misc_utils.log_exception(_moduleLogger)
29 def GetParameters(self, proto):
31 For org.freedesktop.telepathy.ConnectionManager
33 @returns the mandatory and optional parameters for creating a connection
35 if proto not in self._protos:
36 raise telepathy.errors.NotImplemented('unknown protocol %s' % proto)
39 ConnectionClass = self._protos[proto]
40 mandatoryParameters = ConnectionClass._mandatory_parameters
41 optionalParameters = ConnectionClass._optional_parameters
42 defaultParameters = ConnectionClass._parameter_defaults
43 secretParameters = ConnectionClass._secret_parameters
45 for parameterName, parameterType in mandatoryParameters.iteritems():
46 flags = telepathy.CONN_MGR_PARAM_FLAG_REQUIRED
47 if parameterName in secretParameters:
48 flags |= telepathy.CONN_MGR_PARAM_FLAG_SECRET
49 param = (parameterName, flags, parameterType, "")
52 for parameterName, parameterType in optionalParameters.iteritems():
55 if parameterName in secretParameters:
56 flags |= telepathy.CONN_MGR_PARAM_FLAG_SECRET
57 if parameterName in defaultParameters:
58 flags |= telepathy.CONN_MGR_PARAM_FLAG_HAS_DEFAULT
59 default = defaultParameters[parameterName]
60 param = (parameterName, flags, parameterType, default)
65 def disconnect_completed(self):
66 if self._quitImmediately:
69 gobject_utils.timeout_add_seconds(self.IDLE_TIMEOUT, self._shutdown)
73 Terminates all connections. Must be called upon quit
75 for conn in self._connections:
77 _moduleLogger.info("Connection manager quitting")
80 self._quitImmediately = True
83 @misc_utils.log_exception(_moduleLogger)
86 self._on_shutdown is not None and
87 len(self._connections) == 0