diff options
author | Louis-Francis Ratté-Boulianne <louis-francis.ratte-boulianne@collabora.co.uk> | 2010-10-22 12:15:11 -0400 |
---|---|---|
committer | Louis-Francis Ratté-Boulianne <louis-francis.ratte-boulianne@collabora.co.uk> | 2010-11-24 16:14:59 -0500 |
commit | 26c02f969a46b5fb7300e51c801b33e8920bfb24 (patch) | |
tree | 98f98a08d35286f29faf9780a48644de31e50b5a | |
parent | 8e725c8713cac8aa7abe26e98299b3220eab9c0d (diff) |
Add a default implementation of ContactCapabilities interface
The GetContactCapabilities methods should be about the same for all connection managers. The CM only needs to populate the _contact_caps dictionary.
-rw-r--r-- | src/server/conn.py | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/src/server/conn.py b/src/server/conn.py index a857a57..5496864 100644 --- a/src/server/conn.py +++ b/src/server/conn.py @@ -386,6 +386,29 @@ class ConnectionInterfaceCapabilities(_ConnectionInterfaceCapabilities): # return all my capabilities return [(ctype, caps[1]) for ctype, caps in my_caps.iteritems()] +from telepathy._generated.Connection_Interface_Contact_Capabilities \ + import ConnectionInterfaceContactCapabilities \ + as _ConnectionInterfaceContactCapabilities + +class ConnectionInterfaceContactCapabilities(_ConnectionInterfaceContactCapabilities): + def __init__(self): + _ConnectionInterfaceContactCapabilities.__init__(self) + # { contact handle : list(Requestable Channel Class} + # RCC signature is a(a{sv}as) + self._contact_caps = {} + + def GetContactCapabilities(self, handles): + if 0 in handles: + raise InvalidHandle('Contact handle list contains zero') + + ret = dbus.Dictionary({}, signature='ua(a{sv}as)') + for handle in handles: + self.check_handle(HANDLE_TYPE_CONTACT, handle) + caps = self._contact_caps.get(handle, []) + ret[handle] = dbus.Array(caps, signature='(a{sv}as)') + + return ret + from telepathy._generated.Connection_Interface_Requests \ import ConnectionInterfaceRequests \ as _ConnectionInterfaceRequests |