[Telepathy-commits] [telepathy-salut/master] Remove GibberIqHelperRequestStanza: directly use GibberXmppStanza
Alban Crequy
alban.crequy at collabora.co.uk
Mon Nov 10 08:09:51 PST 2008
The GibberXmppStanza can be g_object_ref()ed and _unref()ed
This revert changes 5cedaf35 and a1bc2756.
---
lib/gibber/gibber-iq-helper.c | 52 ++++++++++--------------------------
lib/gibber/gibber-iq-helper.h | 10 +-----
src/salut-si-bytestream-manager.c | 6 +---
src/salut-tubes-channel.c | 6 ++--
src/salut-tubes-channel.h | 2 +-
src/salut-tubes-manager.c | 6 +---
src/tube-stream.c | 12 +++++---
src/tube-stream.h | 2 +-
tests/check-gibber-iq-helper.c | 14 +++------
9 files changed, 39 insertions(+), 71 deletions(-)
diff --git a/lib/gibber/gibber-iq-helper.c b/lib/gibber/gibber-iq-helper.c
index 9f0a8f1..6c6436c 100644
--- a/lib/gibber/gibber-iq-helper.c
+++ b/lib/gibber/gibber-iq-helper.c
@@ -50,13 +50,6 @@ struct _GibberIqHelperPrivate
#define GIBBER_IQ_HELPER_GET_PRIVATE(obj) \
((GibberIqHelperPrivate *) ((GibberIqHelper *)obj)->priv)
-struct _GibberIqHelperRequestStanza
-{
- gchar *from;
- gchar *to;
- gchar *id;
-};
-
static void
reply_handler_object_destroy_notify_cb (gpointer _data, GObject *object);
@@ -351,35 +344,15 @@ gibber_iq_helper_send_with_reply (GibberIqHelper *self,
}
static GibberXmppStanza *
-new_reply (GibberIqHelperRequestStanza *iq,
+new_reply (GibberXmppStanza *iq,
GibberStanzaSubType sub_type)
{
GibberXmppStanza *reply;
-
- g_return_val_if_fail (sub_type == GIBBER_STANZA_SUB_TYPE_RESULT ||
- sub_type == GIBBER_STANZA_SUB_TYPE_ERROR, NULL);
-
- reply = gibber_xmpp_stanza_build (GIBBER_STANZA_TYPE_IQ,
- sub_type,
- iq->to, iq->from,
- GIBBER_NODE_ATTRIBUTE, "id", iq->id,
- GIBBER_STANZA_END);
-
- g_free (iq->from);
- g_free (iq->to);
- g_free (iq->id);
- g_slice_free (GibberIqHelperRequestStanza, iq);
-
- return reply;
-}
-
-GibberIqHelperRequestStanza *
-gibber_iq_helper_get_request_stanza (GibberXmppStanza *iq)
-{
- GibberIqHelperRequestStanza *req;
const gchar *id;
const gchar *iq_from, *iq_to;
+ g_return_val_if_fail (sub_type == GIBBER_STANZA_SUB_TYPE_RESULT ||
+ sub_type == GIBBER_STANZA_SUB_TYPE_ERROR, NULL);
g_return_val_if_fail (strcmp (iq->node->name, "iq") == 0, NULL);
id = gibber_xmpp_node_get_attribute (iq->node, "id");
@@ -388,21 +361,23 @@ gibber_iq_helper_get_request_stanza (GibberXmppStanza *iq)
iq_from = gibber_xmpp_node_get_attribute (iq->node, "from");
iq_to = gibber_xmpp_node_get_attribute (iq->node, "to");
- req = g_slice_new0 (GibberIqHelperRequestStanza);
- req->to = g_strdup (iq_to);
- req->from = g_strdup (iq_from);
- req->id = g_strdup (id);
- return req;
+ reply = gibber_xmpp_stanza_build (GIBBER_STANZA_TYPE_IQ,
+ sub_type,
+ iq_to, iq_from,
+ GIBBER_NODE_ATTRIBUTE, "id", id,
+ GIBBER_STANZA_END);
+
+ return reply;
}
GibberXmppStanza *
-gibber_iq_helper_new_result_reply (GibberIqHelperRequestStanza *iq)
+gibber_iq_helper_new_result_reply (GibberXmppStanza *iq)
{
return new_reply (iq, GIBBER_STANZA_SUB_TYPE_RESULT);
}
GibberXmppStanza *
-gibber_iq_helper_new_error_reply (GibberIqHelperRequestStanza *iq,
+gibber_iq_helper_new_error_reply (GibberXmppStanza *iq,
GibberXmppError error,
const gchar *errmsg)
{
@@ -410,5 +385,8 @@ gibber_iq_helper_new_error_reply (GibberIqHelperRequestStanza *iq,
stanza = new_reply (iq, GIBBER_STANZA_SUB_TYPE_ERROR);
gibber_xmpp_error_to_node (error, stanza->node, errmsg);
+
+ /* TODO: Would be cool to copy <iq> children as in Gabble */
+
return stanza;
}
diff --git a/lib/gibber/gibber-iq-helper.h b/lib/gibber/gibber-iq-helper.h
index 2c66cb6..dc3648c 100644
--- a/lib/gibber/gibber-iq-helper.h
+++ b/lib/gibber/gibber-iq-helper.h
@@ -31,8 +31,6 @@ G_BEGIN_DECLS
typedef struct _GibberIqHelper GibberIqHelper;
typedef struct _GibberIqHelperClass GibberIqHelperClass;
-typedef struct _GibberIqHelperRequestStanza GibberIqHelperRequestStanza;
-
struct _GibberIqHelperClass
{
GObjectClass parent_class;
@@ -77,15 +75,11 @@ gibber_iq_helper_send_with_reply (GibberIqHelper *helper,
GibberXmppStanza *iq, GibberIqHelperStanzaReplyFunc reply_func,
GObject *object, gpointer user_data, GError **error);
-GibberIqHelperRequestStanza *
-gibber_iq_helper_get_request_stanza (GibberXmppStanza *iq);
-
GibberXmppStanza *
-gibber_iq_helper_new_result_reply (GibberIqHelperRequestStanza *iq);
+gibber_iq_helper_new_result_reply (GibberXmppStanza *iq);
GibberXmppStanza *
-gibber_iq_helper_new_error_reply (GibberIqHelperRequestStanza *iq,
- GibberXmppError error,
+gibber_iq_helper_new_error_reply (GibberXmppStanza *iq, GibberXmppError error,
const gchar *errmsg);
G_END_DECLS
diff --git a/src/salut-si-bytestream-manager.c b/src/salut-si-bytestream-manager.c
index ed284a9..5ac4571 100644
--- a/src/salut-si-bytestream-manager.c
+++ b/src/salut-si-bytestream-manager.c
@@ -316,8 +316,7 @@ si_request_cb (SalutXmppConnectionManager *xcm,
{
GibberXmppStanza *reply;
- reply = gibber_iq_helper_new_error_reply (
- gibber_iq_helper_get_request_stanza (stanza), XMPP_ERROR_BAD_REQUEST,
+ reply = gibber_iq_helper_new_error_reply (stanza, XMPP_ERROR_BAD_REQUEST,
"failed to parse SI request");
gibber_xmpp_connection_send (connection, reply, NULL);
@@ -345,8 +344,7 @@ si_request_cb (SalutXmppConnectionManager *xcm,
GibberXmppStanza *reply;
DEBUG ("SI request doesn't contain any supported stream method.");
- reply = gibber_iq_helper_new_error_reply (
- gibber_iq_helper_get_request_stanza (stanza),
+ reply = gibber_iq_helper_new_error_reply (stanza,
XMPP_ERROR_SI_NO_VALID_STREAMS, NULL);
gibber_xmpp_connection_send (connection, reply, NULL);
diff --git a/src/salut-tubes-channel.c b/src/salut-tubes-channel.c
index 34025dc..c4741ff 100644
--- a/src/salut-tubes-channel.c
+++ b/src/salut-tubes-channel.c
@@ -177,7 +177,7 @@ static gboolean extract_tube_information (SalutTubesChannel *self,
static SalutTubeIface * create_new_tube (SalutTubesChannel *self,
TpTubeType type, TpHandle initiator, const gchar *service,
GHashTable *parameters, guint tube_id, guint portnum,
- GibberIqHelperRequestStanza *iq_req);
+ GibberXmppStanza *iq_req);
static void
salut_tubes_channel_init (SalutTubesChannel *self)
@@ -933,7 +933,7 @@ salut_tubes_channel_message_received (SalutTubesChannel *self,
GHashTable *parameters,
guint tube_id,
guint portnum,
- GibberIqHelperRequestStanza *iq_req)
+ GibberXmppStanza *iq_req)
{
SalutTubesChannelPrivate *priv = SALUT_TUBES_CHANNEL_GET_PRIVATE (self);
@@ -1153,7 +1153,7 @@ create_new_tube (SalutTubesChannel *self,
GHashTable *parameters,
guint tube_id,
guint portnum,
- GibberIqHelperRequestStanza *iq_req)
+ GibberXmppStanza *iq_req)
{
SalutTubesChannelPrivate *priv = SALUT_TUBES_CHANNEL_GET_PRIVATE (self);
SalutTubeIface *tube;
diff --git a/src/salut-tubes-channel.h b/src/salut-tubes-channel.h
index 87e22f1..c5db63b 100644
--- a/src/salut-tubes-channel.h
+++ b/src/salut-tubes-channel.h
@@ -76,7 +76,7 @@ void salut_tubes_channel_muc_message_received (SalutTubesChannel *channel,
void salut_tubes_channel_message_received (SalutTubesChannel *self,
const gchar *service, TpTubeType tube_type, TpHandle initiator_handle,
GHashTable *parameters, guint tube_id, guint portnum,
- GibberIqHelperRequestStanza *iq_req);
+ GibberXmppStanza *iq_req);
void salut_tubes_channel_message_close_received (SalutTubesChannel *self,
TpHandle initiator_handle, guint tube_id);
diff --git a/src/salut-tubes-manager.c b/src/salut-tubes-manager.c
index c0b2e40..77d1b08 100644
--- a/src/salut-tubes-manager.c
+++ b/src/salut-tubes-manager.c
@@ -323,8 +323,7 @@ iq_tube_request_cb (SalutXmppConnectionManager *xcm,
{
GibberXmppStanza *reply;
- reply = gibber_iq_helper_new_error_reply (
- gibber_iq_helper_get_request_stanza (stanza), XMPP_ERROR_BAD_REQUEST,
+ reply = gibber_iq_helper_new_error_reply (stanza, XMPP_ERROR_BAD_REQUEST,
error->message);
gibber_xmpp_connection_send (conn, reply, NULL);
@@ -355,8 +354,7 @@ iq_tube_request_cb (SalutXmppConnectionManager *xcm,
}
salut_tubes_channel_message_received (chan, service, tube_type,
- initiator_handle, parameters, tube_id, portnum,
- gibber_iq_helper_get_request_stanza (stanza));
+ initiator_handle, parameters, tube_id, portnum, stanza);
}
}
diff --git a/src/tube-stream.c b/src/tube-stream.c
index 846a330..62dd637 100644
--- a/src/tube-stream.c
+++ b/src/tube-stream.c
@@ -122,7 +122,7 @@ struct _SalutTubeStreamPrivate
guint id;
guint port;
GibberXmppConnection *xmpp_connection;
- GibberIqHelperRequestStanza *iq_req;
+ GibberXmppStanza *iq_req;
/* Bytestreams for MUC tubes (using stream initiation) or 1-1 tubes (using
* direct TCP connections). One tube can have several bytestreams. The
@@ -1081,6 +1081,8 @@ salut_tube_stream_set_property (GObject *object,
break;
case PROP_IQ_REQ:
priv->iq_req = g_value_get_pointer (value);
+ if (priv->iq_req != NULL)
+ g_object_ref (priv->iq_req);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
@@ -1322,8 +1324,8 @@ salut_tube_stream_class_init (SalutTubeStreamClass *salut_tube_stream_class)
param_spec = g_param_spec_pointer (
"iq-req",
- "A GibberIqHelper reference on the request stanza",
- "A GibberIqHelper reference on the request stanza used to reply to "
+ "A reference on the request stanza",
+ "A reference on the request stanza used to reply to "
"the iq request later",
G_PARAM_CONSTRUCT_ONLY |
G_PARAM_READWRITE |
@@ -1405,7 +1407,7 @@ salut_tube_stream_new (SalutConnection *conn,
GHashTable *parameters,
guint id,
guint portnum,
- GibberIqHelperRequestStanza *iq_req)
+ GibberXmppStanza *iq_req)
{
return g_object_new (SALUT_TYPE_TUBE_STREAM,
"connection", conn,
@@ -1485,6 +1487,8 @@ salut_tube_stream_accept (SalutTubeIface *tube,
reply = gibber_iq_helper_new_result_reply (priv->iq_req);
gibber_xmpp_connection_send (priv->xmpp_connection, reply, NULL);
+ g_object_unref (priv->iq_req);
+ priv->iq_req = NULL;
g_object_unref (reply);
}
}
diff --git a/src/tube-stream.h b/src/tube-stream.h
index 343cf55..771e6f0 100644
--- a/src/tube-stream.h
+++ b/src/tube-stream.h
@@ -64,7 +64,7 @@ SalutTubeStream *salut_tube_stream_new (SalutConnection *conn,
SalutXmppConnectionManager *xmpp_connection_manager, TpHandle handle,
TpHandleType handle_type, TpHandle self_handle, TpHandle initiator,
const gchar *service, GHashTable *parameters, guint id, guint portnum,
- GibberIqHelperRequestStanza *iq_req);
+ GibberXmppStanza *iq_req);
gboolean salut_tube_stream_check_params (TpSocketAddressType address_type,
const GValue *address, TpSocketAccessControl access_control,
diff --git a/tests/check-gibber-iq-helper.c b/tests/check-gibber-iq-helper.c
index 188c76e..edd664c 100644
--- a/tests/check-gibber-iq-helper.c
+++ b/tests/check-gibber-iq-helper.c
@@ -254,8 +254,7 @@ START_TEST (test_new_result_reply)
NULL, NULL, NULL);
fail_unless (result);
- reply = gibber_iq_helper_new_result_reply
- (gibber_iq_helper_get_request_stanza (stanza));
+ reply = gibber_iq_helper_new_result_reply (stanza);
fail_unless (reply != NULL);
fail_unless (strcmp (reply->node->name, "iq") == 0);
fail_unless (strcmp (gibber_xmpp_node_get_attribute (reply->node, "type"),
@@ -294,9 +293,8 @@ START_TEST (test_new_error_reply)
NULL, NULL, NULL);
fail_unless (result);
- reply = gibber_iq_helper_new_error_reply
- (gibber_iq_helper_get_request_stanza (stanza),
- XMPP_ERROR_BAD_REQUEST, "test");
+ reply = gibber_iq_helper_new_error_reply (stanza,
+ XMPP_ERROR_BAD_REQUEST, "test");
fail_unless (reply != NULL);
fail_unless (strcmp (reply->node->name, "iq") == 0);
fail_unless (strcmp (gibber_xmpp_node_get_attribute (reply->node, "type"),
@@ -354,8 +352,7 @@ START_TEST (test_send_with_object_living)
object, NULL, NULL);
fail_unless (result);
- reply = gibber_iq_helper_new_result_reply
- (gibber_iq_helper_get_request_stanza (stanza));
+ reply = gibber_iq_helper_new_result_reply (stanza);
fail_unless (reply != NULL);
result = gibber_xmpp_connection_send (xmpp_connection, reply, NULL);
fail_unless (result);
@@ -397,8 +394,7 @@ START_TEST (test_send_with_object_destroyed)
g_object_unref (object);
- reply = gibber_iq_helper_new_result_reply
- (gibber_iq_helper_get_request_stanza (stanza));
+ reply = gibber_iq_helper_new_result_reply (stanza);
fail_unless (reply != NULL);
result = gibber_xmpp_connection_send (xmpp_connection, reply, NULL);
fail_unless (result);
--
1.5.6.5
More information about the Telepathy-commits
mailing list