summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLouis-Francis Ratté-Boulianne <louis-francis.ratte-boulianne@collabora.co.uk>2010-10-22 12:15:11 -0400
committerLouis-Francis Ratté-Boulianne <louis-francis.ratte-boulianne@collabora.co.uk>2010-11-24 16:14:59 -0500
commit26c02f969a46b5fb7300e51c801b33e8920bfb24 (patch)
tree98f98a08d35286f29faf9780a48644de31e50b5a
parent8e725c8713cac8aa7abe26e98299b3220eab9c0d (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.py23
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