[telepathy-python/master] Implement RequestableChannelClasses property.

Jonny Lamb jonny.lamb at collabora.co.uk
Thu Jul 16 01:49:36 PDT 2009


Signed-off-by: Jonny Lamb <jonny.lamb at collabora.co.uk>
---
 src/server/channelmanager.py |   16 +++++++++++++++-
 src/server/conn.py           |    6 ++++--
 2 files changed, 19 insertions(+), 3 deletions(-)

diff --git a/src/server/channelmanager.py b/src/server/channelmanager.py
index 901246e..750fe7c 100644
--- a/src/server/channelmanager.py
+++ b/src/server/channelmanager.py
@@ -29,6 +29,8 @@ class ChannelManager(object):
 
         self._requestable_channel_classes = dict()
         self._channels = dict()
+        self._fixed_properties = dict()
+        self._available_properties = dict()
 
     def close(self):
         for channel_type in self._requestable_channel_classes:
@@ -74,6 +76,18 @@ class ChannelManager(object):
 
         return channel
 
-    def _implement_channel_class(self, type, make_channel):
+    def _implement_channel_class(self, type, make_channel, fixed, available):
         self._requestable_channel_classes[type] = make_channel
         self._channels.setdefault(type, {})
+
+        self._fixed_properties[type] = fixed
+        self._available_properties[type] = available
+
+    def get_requestable_channel_classes(self):
+        retval = []
+
+        for channel_type in self._requestable_channel_classes:
+            retval.append((self._fixed_properties[channel_type],
+                self._available_properties[channel_type]))
+
+        return retval
diff --git a/src/server/conn.py b/src/server/conn.py
index db37d73..3790a59 100644
--- a/src/server/conn.py
+++ b/src/server/conn.py
@@ -387,8 +387,10 @@ class ConnectionInterfaceRequests(
 
         self._implement_property_get(CONNECTION_INTERFACE_REQUESTS,
             {'Channels': lambda: dbus.Array(self._get_channels(),
-                signature='(oa{sv})')})
-        # TODO: Implement RequestableChannelClasses
+                signature='(oa{sv})'),
+            'RequestableChannelClasses': lambda: dbus.Array( \
+                self._channel_manager.get_requestable_channel_classes(),
+                signature='(a{sv}as)')})
 
     def _get_channels(self):
         return [(c._object_path, c.get_props()) for c in self._channels]
-- 
1.5.6.5




More information about the telepathy-commits mailing list