[telepathy-gabble/master] use Wocky's stanza register
Guillaume Desmottes
guillaume.desmottes at collabora.co.uk
Fri Sep 25 02:29:48 PDT 2009
---
src/connection.c | 15 ---------------
src/wocky-pubsub.c | 46 ++++++++++++++++++++++++++++++++--------------
src/wocky-pubsub.h | 5 -----
3 files changed, 32 insertions(+), 34 deletions(-)
diff --git a/src/connection.c b/src/connection.c
index da9278d..d8a1e97 100644
--- a/src/connection.c
+++ b/src/connection.c
@@ -161,7 +161,6 @@ struct _GabbleConnectionPrivate
LmMessageHandler *iq_disco_cb;
LmMessageHandler *iq_unknown_cb;
- LmMessageHandler *pubsub_msg_cb;
LmMessageHandler *olpc_msg_cb;
LmMessageHandler *olpc_presence_cb;
@@ -958,7 +957,6 @@ gabble_connection_dispose (GObject *object)
g_assert (priv->iq_disco_cb == NULL);
g_assert (priv->iq_unknown_cb == NULL);
- g_assert (priv->pubsub_msg_cb == NULL);
g_assert (priv->olpc_msg_cb == NULL);
g_assert (priv->olpc_presence_cb == NULL);
@@ -1629,7 +1627,6 @@ connect_callbacks (TpBaseConnection *base)
g_assert (priv->iq_disco_cb == NULL);
g_assert (priv->iq_unknown_cb == NULL);
- g_assert (priv->pubsub_msg_cb == NULL);
g_assert (priv->olpc_msg_cb == NULL);
g_assert (priv->olpc_presence_cb == NULL);
@@ -1645,12 +1642,6 @@ connect_callbacks (TpBaseConnection *base)
LM_MESSAGE_TYPE_IQ,
LM_HANDLER_PRIORITY_LAST);
- priv->pubsub_msg_cb = lm_message_handler_new (pubsub_msg_event_cb,
- conn, NULL);
- lm_connection_register_message_handler (conn->lmconn, priv->pubsub_msg_cb,
- LM_MESSAGE_TYPE_MESSAGE,
- LM_HANDLER_PRIORITY_FIRST);
-
priv->olpc_msg_cb = lm_message_handler_new (conn_olpc_msg_cb,
conn, NULL);
lm_connection_register_message_handler (conn->lmconn, priv->olpc_msg_cb,
@@ -1672,7 +1663,6 @@ disconnect_callbacks (TpBaseConnection *base)
g_assert (priv->iq_disco_cb != NULL);
g_assert (priv->iq_unknown_cb != NULL);
- g_assert (priv->pubsub_msg_cb != NULL);
g_assert (priv->olpc_msg_cb != NULL);
g_assert (priv->olpc_presence_cb != NULL);
@@ -1686,11 +1676,6 @@ disconnect_callbacks (TpBaseConnection *base)
lm_message_handler_unref (priv->iq_unknown_cb);
priv->iq_unknown_cb = NULL;
- lm_connection_unregister_message_handler (conn->lmconn, priv->pubsub_msg_cb,
- LM_MESSAGE_TYPE_MESSAGE);
- lm_message_handler_unref (priv->pubsub_msg_cb);
- priv->pubsub_msg_cb = NULL;
-
lm_connection_unregister_message_handler (conn->lmconn, priv->olpc_msg_cb,
LM_MESSAGE_TYPE_MESSAGE);
lm_message_handler_unref (priv->olpc_msg_cb);
diff --git a/src/wocky-pubsub.c b/src/wocky-pubsub.c
index 428d662..705410f 100644
--- a/src/wocky-pubsub.c
+++ b/src/wocky-pubsub.c
@@ -22,7 +22,7 @@
#include <string.h>
-#include <loudmouth/loudmouth.h>
+#include <wocky/wocky-porter.h>
#include <telepathy-glib/enums.h>
#include "conn-aliasing.h"
@@ -79,6 +79,9 @@ typedef struct _WockyPubsubPrivate WockyPubsubPrivate;
struct _WockyPubsubPrivate
{
WockySession *session;
+ WockyPorter *porter;
+
+ guint handler_id;
/* list of owned (PubsubEventHandler *) */
GSList *handlers;
@@ -128,6 +131,7 @@ wocky_pubsub_get_property (GObject *object,
}
}
+
static void
wocky_pubsub_dispose (GObject *object)
{
@@ -139,6 +143,15 @@ wocky_pubsub_dispose (GObject *object)
priv->dispose_has_run = TRUE;
+ if (priv->handler_id != 0)
+ {
+ wocky_porter_unregister_handler (priv->porter, priv->handler_id);
+ priv->handler_id = 0;
+ }
+
+ if (priv->porter != NULL)
+ g_object_unref (priv->porter);
+
if (G_OBJECT_CLASS (wocky_pubsub_parent_class)->dispose)
G_OBJECT_CLASS (wocky_pubsub_parent_class)->dispose (object);
}
@@ -269,17 +282,15 @@ pubsub_make_publish_msg (
/**
* pubsub_msg_event_cb
*
- * Called by loudmouth when we get an incoming <message>. This handler handles
+ * Called by Wocky when we get an incoming <message>. This handler handles
* pubsub events.
*/
-LmHandlerResult
-pubsub_msg_event_cb (LmMessageHandler *handler,
- LmConnection *connection,
+static gboolean
+pubsub_msg_event_cb (WockyPorter *porter,
WockyXmppStanza *message,
gpointer user_data)
{
- GabbleConnection *conn = GABBLE_CONNECTION (user_data);
- WockyPubsub *self = conn->pubsub;
+ WockyPubsub *self = WOCKY_PUBSUB (user_data);
WockyXmppNode *node;
const gchar *event_ns, *from;
@@ -291,35 +302,35 @@ pubsub_msg_event_cb (LmMessageHandler *handler,
}
else
{
- return LM_HANDLER_RESULT_ALLOW_MORE_HANDLERS;
+ return FALSE;
}
if (event_ns == NULL || !g_str_has_prefix (event_ns, NS_PUBSUB))
{
- return LM_HANDLER_RESULT_ALLOW_MORE_HANDLERS;
+ return FALSE;
}
from = wocky_xmpp_node_get_attribute (message->node, "from");
if (from == NULL)
{
- return LM_HANDLER_RESULT_REMOVE_MESSAGE;
+ return TRUE;
}
node = wocky_xmpp_node_get_child (node, "items");
if (node == NULL)
{
- return LM_HANDLER_RESULT_REMOVE_MESSAGE;
+ return TRUE;
}
node = wocky_xmpp_node_get_child (node, "item");
if (node == NULL)
{
- return LM_HANDLER_RESULT_REMOVE_MESSAGE;
+ return TRUE;
}
gabble_pubsub_event_handler (self, message, from, node);
- return LM_HANDLER_RESULT_REMOVE_MESSAGE;
+ return TRUE;
}
WockyPubsub *
@@ -338,7 +349,14 @@ wocky_pubsub_start (WockyPubsub *self,
g_assert (priv->session == NULL);
priv->session = session;
- /* TODO: register handler */
+ priv->porter = wocky_session_get_porter (priv->session);
+ g_object_ref (priv->porter);
+
+ /* Register message handler */
+ priv->handler_id = wocky_porter_register_handler (priv->porter,
+ WOCKY_STANZA_TYPE_MESSAGE, WOCKY_STANZA_SUB_TYPE_NONE, NULL,
+ WOCKY_PORTER_HANDLER_PRIORITY_MAX,
+ pubsub_msg_event_cb, self, WOCKY_STANZA_END);
}
guint
diff --git a/src/wocky-pubsub.h b/src/wocky-pubsub.h
index 9e30453..9791910 100644
--- a/src/wocky-pubsub.h
+++ b/src/wocky-pubsub.h
@@ -83,11 +83,6 @@ WockyXmppStanza * pubsub_make_publish_msg (const gchar *to,
const gchar *item_name,
WockyXmppNode **node);
-LmHandlerResult pubsub_msg_event_cb (LmMessageHandler *handler,
- LmConnection *connection,
- WockyXmppStanza *message,
- gpointer user_data);
-
G_END_DECLS
#endif /* __WOCKY_PUBSUB_H__ */
--
1.5.6.5
More information about the telepathy-commits
mailing list