[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