libpurple/protocols/jabber/bosh.c

branch
soc.2013.gobjectification
changeset 34529
68cf25486001
parent 33774
491716e51b9b
child 34570
ac513e5901eb
--- a/libpurple/protocols/jabber/bosh.c	Wed Jun 12 10:20:03 2013 +0530
+++ b/libpurple/protocols/jabber/bosh.c	Wed Jun 12 18:58:24 2013 +0530
@@ -55,7 +55,7 @@
 	JabberStream *js;
 	PurpleHTTPConnection *connections[NUM_HTTP_CONNECTIONS];
 
-	PurpleCircBuffer *pending;
+	PurpleCircularBuffer *pending;
 	PurpleBOSHConnectionConnectFunction connect_cb;
 	PurpleBOSHConnectionReceiveFunction receive_cb;
 
@@ -90,7 +90,7 @@
 	PurpleBOSHConnection *bosh;
 	PurpleSslConnection *psc;
 
-	PurpleCircBuffer *write_buf;
+	PurpleCircularBuffer *write_buf;
 	GString *read_buf;
 
 	gsize handled_len;
@@ -168,7 +168,7 @@
 	conn->fd = -1;
 	conn->state = HTTP_CONN_OFFLINE;
 
-	conn->write_buf = purple_circ_buffer_new(0 /* default grow size */);
+	conn->write_buf = purple_circular_buffer_new(0 /* default grow size */);
 
 	return conn;
 }
@@ -180,7 +180,7 @@
 		g_string_free(conn->read_buf, TRUE);
 
 	if (conn->write_buf)
-		purple_circ_buffer_destroy(conn->write_buf);
+		g_object_unref(G_OBJECT(conn->write_buf));
 	if (conn->readh)
 		purple_input_remove(conn->readh);
 	if (conn->writeh)
@@ -238,7 +238,7 @@
 	conn->rid = ((guint64)g_random_int() << 32) | g_random_int();
 	conn->rid &= 0xFFFFFFFFFFFFFLL;
 
-	conn->pending = purple_circ_buffer_new(0 /* default grow size */);
+	conn->pending = purple_circular_buffer_new(0 /* default grow size */);
 
 	conn->state = BOSH_CONN_OFFLINE;
 	if (purple_strcasestr(url, "https://") != NULL)
@@ -262,7 +262,7 @@
 	if (conn->send_timer)
 		purple_timeout_remove(conn->send_timer);
 
-	purple_circ_buffer_destroy(conn->pending);
+	g_object_unref(G_OBJECT(conn->pending));
 
 	for (i = 0; i < NUM_HTTP_CONNECTIONS; ++i) {
 		if (conn->connections[i])
@@ -349,11 +349,14 @@
 		 * the buffer.
 		 */
 		if (data)
-			purple_circ_buffer_append(conn->pending, data, strlen(data));
+			purple_circular_buffer_append(conn->pending, data, strlen(data));
 
-		if (purple_debug_is_verbose())
+		if (purple_debug_is_verbose()) {
+			gsize bufused = purple_circular_buffer_get_used(conn->pending);
 			purple_debug_misc("jabber", "bosh: %p has %" G_GSIZE_FORMAT " bytes in "
-			                  "the buffer.\n", conn, conn->pending->bufused);
+			                  "the buffer.\n", conn, bufused);
+		}
+
 		if (conn->send_timer == 0)
 			conn->send_timer = purple_timeout_add_seconds(BUFFER_SEND_IN_SECS,
 					send_timer_cb, conn);
@@ -408,9 +411,10 @@
 
 		packet = g_string_append_c(packet, '>');
 
-		while ((read_amt = purple_circ_buffer_get_max_read(conn->pending)) > 0) {
-			packet = g_string_append_len(packet, conn->pending->outptr, read_amt);
-			purple_circ_buffer_mark_read(conn->pending, read_amt);
+		while ((read_amt = purple_circular_buffer_get_max_read(conn->pending)) > 0) {
+			const gchar *output = purple_circular_buffer_get_output(conn->pending);
+			packet = g_string_append_len(packet, output, read_amt);
+			purple_circular_buffer_mark_read(conn->pending, read_amt);
 		}
 
 		if (data)
@@ -677,7 +681,7 @@
 		jabber_bosh_connection_send(conn->bosh, PACKET_NORMAL, NULL);
 	else if (conn->bosh->state == BOSH_CONN_ONLINE) {
 		purple_debug_info("jabber", "BOSH session already exists. Trying to reuse it.\n");
-		if (conn->bosh->requests == 0 || conn->bosh->pending->bufused > 0) {
+		if (conn->bosh->requests == 0 || purple_circular_buffer_get_used(conn->bosh->pending) > 0) {
 			/* Send the pending data */
 			jabber_bosh_connection_send(conn->bosh, PACKET_FLUSH, NULL);
 		}
@@ -831,7 +835,9 @@
 	}
 
 	if (conn->bosh->state == BOSH_CONN_ONLINE &&
-			(conn->bosh->requests == 0 || conn->bosh->pending->bufused > 0)) {
+			(conn->bosh->requests == 0 ||
+			purple_circular_buffer_get_used(conn->bosh->pending) > 0))
+	{
 		purple_debug_misc("jabber", "BOSH: Sending an empty request\n");
 		jabber_bosh_connection_send(conn->bosh, PACKET_NORMAL, NULL);
 	}
@@ -1000,8 +1006,9 @@
 http_connection_send_cb(gpointer data, gint source, PurpleInputCondition cond)
 {
 	PurpleHTTPConnection *conn = data;
+	const gchar *output = NULL;
 	int ret;
-	int writelen = purple_circ_buffer_get_max_read(conn->write_buf);
+	int writelen = purple_circular_buffer_get_max_read(conn->write_buf);
 
 	if (writelen == 0) {
 		purple_input_remove(conn->writeh);
@@ -1009,7 +1016,8 @@
 		return;
 	}
 
-	ret = http_connection_do_send(conn, conn->write_buf->outptr, writelen);
+	output = purple_circular_buffer_get_output(conn->write_buf);
+	ret = http_connection_do_send(conn, output, writelen);
 
 	if (ret < 0 && errno == EAGAIN)
 		return;
@@ -1028,7 +1036,7 @@
 		return;
 	}
 
-	purple_circ_buffer_mark_read(conn->write_buf, ret);
+	purple_circular_buffer_mark_read(conn->write_buf, ret);
 }
 
 static void
@@ -1088,7 +1096,7 @@
 		if (conn->writeh == 0)
 			conn->writeh = purple_input_add(conn->psc ? conn->psc->fd : conn->fd,
 					PURPLE_INPUT_WRITE, http_connection_send_cb, conn);
-		purple_circ_buffer_append(conn->write_buf, data + ret, len - ret);
+		purple_circular_buffer_append(conn->write_buf, data + ret, len - ret);
 	}
 }
 

mercurial