[telepathy-gabble/master] API to parse disco reply into a CapabilitySet

Will Thompson will.thompson at collabora.co.uk
Tue Sep 8 04:09:58 PDT 2009


---
 src/capabilities.c |   28 ++++++++++++++++++++++++++++
 src/capabilities.h |    2 ++
 2 files changed, 30 insertions(+), 0 deletions(-)

diff --git a/src/capabilities.c b/src/capabilities.c
index f4fff05..3a85c20 100644
--- a/src/capabilities.c
+++ b/src/capabilities.c
@@ -228,6 +228,34 @@ gabble_capability_set_new (void)
 }
 
 GabbleCapabilitySet *
+gabble_capability_set_new_from_stanza (LmMessageNode *query_result)
+{
+  GabbleCapabilitySet *ret;
+  LmMessageNode *child;
+  const gchar *var;
+
+  g_return_val_if_fail (query_result != NULL, NULL);
+
+  ret = gabble_capability_set_new ();
+
+  for (child = query_result->children; NULL != child; child = child->next)
+    {
+      if (0 != strcmp (child->name, "feature"))
+        continue;
+
+      var = lm_message_node_get_attribute (child, "var");
+
+      if (NULL == var)
+        continue;
+
+      /* TODO: only store namespaces we understand. */
+      gabble_capability_set_add (ret, var);
+    }
+
+  return ret;
+}
+
+GabbleCapabilitySet *
 gabble_capability_set_copy (const GabbleCapabilitySet *caps)
 {
   GabbleCapabilitySet *ret;
diff --git a/src/capabilities.h b/src/capabilities.h
index 37289eb..dd1ecd4 100644
--- a/src/capabilities.h
+++ b/src/capabilities.h
@@ -58,6 +58,8 @@ struct _Feature
 typedef GPtrArray GabbleCapabilitySet;
 
 GabbleCapabilitySet *gabble_capability_set_new (void);
+GabbleCapabilitySet *gabble_capability_set_new_from_stanza (
+    LmMessageNode *query_result);
 GabbleCapabilitySet *gabble_capability_set_copy (
     const GabbleCapabilitySet *caps);
 void gabble_capability_set_update (GabbleCapabilitySet *target,
-- 
1.5.6.5




More information about the telepathy-commits mailing list