[Telepathy-commits] [telepathy-salut/master] Add salut_self_set_caps() that publish XEP-0115's {node, hash, ver} on Avahi
Alban Crequy
alban.crequy at collabora.co.uk
Thu Feb 26 11:20:04 PST 2009
---
src/salut-avahi-self.c | 28 ++++++++++++++++++++++++++++
src/salut-self.c | 20 ++++++++++++++++++++
src/salut-self.h | 7 +++++++
3 files changed, 55 insertions(+), 0 deletions(-)
diff --git a/src/salut-avahi-self.c b/src/salut-avahi-self.c
index 4c6637d..282ca5d 100644
--- a/src/salut-avahi-self.c
+++ b/src/salut-avahi-self.c
@@ -249,6 +249,33 @@ salut_avahi_self_set_presence (SalutSelf *_self,
}
static gboolean
+salut_avahi_self_set_caps (SalutSelf *_self,
+ GError **error)
+{
+ SalutAvahiSelf *self = SALUT_AVAHI_SELF (_self);
+ SalutAvahiSelfPrivate *priv = SALUT_AVAHI_SELF_GET_PRIVATE (self);
+
+ ga_entry_group_service_freeze (priv->presence);
+
+ if (_self->node == NULL)
+ ga_entry_group_service_remove_key (priv->presence, "node", NULL);
+ else
+ ga_entry_group_service_set (priv->presence, "node", _self->node, NULL);
+
+ if (_self->hash == NULL)
+ ga_entry_group_service_remove_key (priv->presence, "hash", NULL);
+ else
+ ga_entry_group_service_set (priv->presence, "hash", _self->hash, NULL);
+
+ if (_self->ver == NULL)
+ ga_entry_group_service_remove_key (priv->presence, "ver", NULL);
+ else
+ ga_entry_group_service_set (priv->presence, "ver", _self->ver, NULL);
+
+ return ga_entry_group_service_thaw (priv->presence, error);
+}
+
+static gboolean
salut_avahi_self_set_alias (SalutSelf *_self,
GError **error)
{
@@ -440,6 +467,7 @@ salut_avahi_self_class_init (
self_class->announce = salut_avahi_self_announce;
self_class->set_presence = salut_avahi_self_set_presence;
+ self_class->set_caps = salut_avahi_self_set_caps;
self_class->set_alias = salut_avahi_self_set_alias;
self_class->remove_avatar = salut_avahi_self_remove_avatar;
self_class->set_avatar = salut_avahi_self_set_avatar;
diff --git a/src/salut-self.c b/src/salut-self.c
index 0a816bc..6eb3a5f 100644
--- a/src/salut-self.c
+++ b/src/salut-self.c
@@ -500,6 +500,9 @@ salut_self_finalize (GObject *object)
g_free (self->olpc_color);
g_free (self->olpc_cur_act);
#endif
+ g_free(self->node);
+ g_free(self->hash);
+ g_free(self->ver);
G_OBJECT_CLASS (salut_self_parent_class)->finalize (object);
}
@@ -527,6 +530,23 @@ salut_self_set_presence (SalutSelf *self, SalutPresenceId status,
return SALUT_SELF_GET_CLASS (self)->set_presence (self, error);
}
+gboolean
+salut_self_set_caps (SalutSelf *self,
+ const gchar *node,
+ const gchar *hash,
+ const gchar *ver,
+ GError **error)
+{
+ g_free (self->node);
+ self->node = g_strdup (node);
+ g_free (self->hash);
+ self->hash = g_strdup (hash);
+ g_free (self->ver);
+ self->ver = g_strdup (ver);
+
+ return SALUT_SELF_GET_CLASS (self)->set_caps (self, error);
+}
+
const gchar *
salut_self_get_alias (SalutSelf *self)
{
diff --git a/src/salut-self.h b/src/salut-self.h
index 06c7919..244827c 100644
--- a/src/salut-self.h
+++ b/src/salut-self.h
@@ -45,6 +45,7 @@ struct _SalutSelfClass {
/* public abstract methods */
gboolean (*announce) (SalutSelf *self, gint port, GError **error);
gboolean (*set_presence) (SalutSelf *self, GError **error);
+ gboolean (*set_caps) (SalutSelf *self, GError **error);
gboolean (*set_alias) (SalutSelf *self, GError **error);
gboolean (*set_avatar) (SalutSelf *self, guint8 *data, gsize size,
GError **error);
@@ -74,6 +75,9 @@ struct _SalutSelf {
TpHandle olpc_cur_act_room;
gchar *olpc_color;
#endif
+ gchar *node;
+ gchar *hash;
+ gchar *ver;
/* private */
SalutConnection *connection;
@@ -107,6 +111,9 @@ gboolean salut_self_announce (SalutSelf *self, gint port, GError **error);
gboolean salut_self_set_presence (SalutSelf *self,
SalutPresenceId status, const gchar *message, GError **error);
+gboolean salut_self_set_caps (SalutSelf *self, const gchar *node,
+ const gchar *hash, const gchar *ver, GError **error);
+
gboolean salut_self_set_avatar (SalutSelf *self, guint8 *data,
gsize size, GError **error);
--
1.5.6.5
More information about the telepathy-commits
mailing list