libpurple/queuedoutputstream.c

changeset 41795
95c0077fe6bb
parent 41727
d88b05eadbd7
child 41960
c8a4853205e3
--- a/libpurple/queuedoutputstream.c	Sat Oct 08 04:03:41 2022 -0500
+++ b/libpurple/queuedoutputstream.c	Sat Oct 08 04:54:55 2022 -0500
@@ -1,10 +1,6 @@
 /*
- *
- * purple
- *
- * Purple is the legal property of its developers, whose names are too numerous
- * to list here.  Please refer to the COPYRIGHT file distributed with this
- * source distribution.
+ * Purple - Internet Messaging Library
+ * Copyright (C) Pidgin Developers <devel@pidgin.im>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,8 +13,7 @@
  * GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02111-1301  USA
+ * along with this program; if not, see <https://www.gnu.org/licenses/>.
  */
 
 #include "queuedoutputstream.h"
@@ -42,7 +37,8 @@
 
 static void
 purple_queued_output_stream_push_bytes_async_cb(GObject *source,
-		GAsyncResult *res, gpointer user_data)
+                                                GAsyncResult *res,
+                                                gpointer user_data)
 {
 	GTask *task = G_TASK(user_data);
 	PurpleQueuedOutputStream *stream = g_task_get_source_object(task);
@@ -52,7 +48,7 @@
 	GError *error = NULL;
 
 	written = g_output_stream_write_bytes_finish(G_OUTPUT_STREAM(source),
-			res, &error);
+	                                             res, &error);
 
 	bytes = g_task_get_task_data(task);
 	size = g_bytes_get_size(bytes);
@@ -64,8 +60,7 @@
 	} else if (size > written) {
 		/* Partial write, prepare to send remaining data */
 		bytes = g_bytes_new_from_bytes(bytes, written, size - written);
-		g_task_set_task_data(task, bytes,
-				(GDestroyNotify)g_bytes_unref);
+		g_task_set_task_data(task, bytes, (GDestroyNotify)g_bytes_unref);
 	} else {
 		/* Full write, this task is finished */
 		g_task_return_boolean(task, TRUE);
@@ -93,29 +88,26 @@
 }
 
 static void
-purple_queued_output_stream_start_push_bytes_async(GTask *task)
-{
+purple_queued_output_stream_start_push_bytes_async(GTask *task) {
 	PurpleQueuedOutputStream *stream = g_task_get_source_object(task);
-	GOutputStream *base_stream;
+	GOutputStream *base_stream = NULL;
+	GFilterOutputStream *filtered = NULL;
 
-	base_stream = g_filter_output_stream_get_base_stream(
-			G_FILTER_OUTPUT_STREAM(stream));
+	filtered = G_FILTER_OUTPUT_STREAM(stream);
+	base_stream = g_filter_output_stream_get_base_stream(filtered);
 
-	g_output_stream_write_bytes_async(base_stream,
-			g_task_get_task_data(task),
-			g_task_get_priority(task),
-			g_task_get_cancellable(task),
-			purple_queued_output_stream_push_bytes_async_cb,
-			task);
+	g_output_stream_write_bytes_async(base_stream, g_task_get_task_data(task),
+	                                  g_task_get_priority(task),
+	                                  g_task_get_cancellable(task),
+	                                  purple_queued_output_stream_push_bytes_async_cb,
+	                                  task);
 }
 
 /******************************************************************************
  * GObject Implementation
  *****************************************************************************/
-
 static void
-purple_queued_output_stream_dispose(GObject *object)
-{
+purple_queued_output_stream_dispose(GObject *object) {
 	PurpleQueuedOutputStream *stream = PURPLE_QUEUED_OUTPUT_STREAM(object);
 
 	g_clear_pointer(&stream->queue, g_async_queue_unref);
@@ -124,16 +116,14 @@
 }
 
 static void
-purple_queued_output_stream_class_init(PurpleQueuedOutputStreamClass *klass)
-{
+purple_queued_output_stream_class_init(PurpleQueuedOutputStreamClass *klass) {
 	GObjectClass *obj_class = G_OBJECT_CLASS(klass);
 
 	obj_class->dispose = purple_queued_output_stream_dispose;
 }
 
 static void
-purple_queued_output_stream_init(PurpleQueuedOutputStream *stream)
-{
+purple_queued_output_stream_init(PurpleQueuedOutputStream *stream) {
 	stream->queue = g_async_queue_new_full((GDestroyNotify)g_bytes_unref);
 	stream->pending_queued = FALSE;
 }
@@ -141,25 +131,22 @@
 /******************************************************************************
  * Public API
  *****************************************************************************/
-
 PurpleQueuedOutputStream *
-purple_queued_output_stream_new(GOutputStream *base_stream)
-{
-	PurpleQueuedOutputStream *stream;
-
+purple_queued_output_stream_new(GOutputStream *base_stream) {
 	g_return_val_if_fail(G_IS_OUTPUT_STREAM(base_stream), NULL);
 
-	stream = g_object_new(PURPLE_TYPE_QUEUED_OUTPUT_STREAM,
-			"base-stream", base_stream,
-			NULL);
-
-	return stream;
+	return g_object_new(
+		PURPLE_TYPE_QUEUED_OUTPUT_STREAM,
+		"base-stream", base_stream,
+		NULL);
 }
 
 void
 purple_queued_output_stream_push_bytes_async(PurpleQueuedOutputStream *stream,
-		GBytes *bytes, int io_priority, GCancellable *cancellable,
-		GAsyncReadyCallback callback, gpointer user_data)
+                                             GBytes *bytes, int io_priority,
+                                             GCancellable *cancellable,
+                                             GAsyncReadyCallback callback,
+                                             gpointer user_data)
 {
 	GTask *task;
 	gboolean set_pending;
@@ -170,20 +157,19 @@
 
 	task = g_task_new(stream, cancellable, callback, user_data);
 	g_task_set_task_data(task, g_bytes_ref(bytes),
-			(GDestroyNotify)g_bytes_unref);
-	g_task_set_source_tag(task,
-			purple_queued_output_stream_push_bytes_async);
+	                     (GDestroyNotify)g_bytes_unref);
+	g_task_set_source_tag(task, purple_queued_output_stream_push_bytes_async);
 	g_task_set_priority(task, io_priority);
 
-	set_pending = g_output_stream_set_pending(
-			G_OUTPUT_STREAM(stream), &error);
+	set_pending = g_output_stream_set_pending(G_OUTPUT_STREAM(stream), &error);
 
 	/* Since we're allowing queuing requests without blocking,
 	 * it's not an error to be pending while processing queued operations.
 	 */
-	if (!set_pending && (!g_error_matches(error,
-			G_IO_ERROR, G_IO_ERROR_PENDING) ||
-			!stream->pending_queued)) {
+	if(!set_pending &&
+	   (!g_error_matches(error, G_IO_ERROR, G_IO_ERROR_PENDING) ||
+	    !stream->pending_queued))
+	{
 		g_task_return_error(task, error);
 		g_object_unref(task);
 		return;
@@ -192,7 +178,7 @@
 	g_clear_error(&error);
 	stream->pending_queued = TRUE;
 
-	if (set_pending) {
+	if(set_pending) {
 		/* Start processing if there were no pending operations */
 		purple_queued_output_stream_start_push_bytes_async(task);
 	} else {
@@ -203,26 +189,27 @@
 
 gboolean
 purple_queued_output_stream_push_bytes_finish(PurpleQueuedOutputStream *stream,
-		GAsyncResult *result, GError **error)
+                                              GAsyncResult *result,
+                                              GError **error)
 {
 	g_return_val_if_fail(PURPLE_IS_QUEUED_OUTPUT_STREAM(stream), FALSE);
 	g_return_val_if_fail(g_task_is_valid(result, stream), FALSE);
 	g_return_val_if_fail(g_async_result_is_tagged(result,
-			purple_queued_output_stream_push_bytes_async), FALSE);
+	                                              purple_queued_output_stream_push_bytes_async),
+	                     FALSE);
 
 	return g_task_propagate_boolean(G_TASK(result), error);
 }
 
 void
-purple_queued_output_stream_clear_queue(PurpleQueuedOutputStream *stream)
-{
+purple_queued_output_stream_clear_queue(PurpleQueuedOutputStream *stream) {
 	GTask *task;
 
 	g_return_if_fail(PURPLE_IS_QUEUED_OUTPUT_STREAM(stream));
 
-	while ((task = g_async_queue_try_pop(stream->queue)) != NULL) {
+	while((task = g_async_queue_try_pop(stream->queue)) != NULL) {
 		g_task_return_new_error(task, G_IO_ERROR, G_IO_ERROR_CANCELLED,
-				"PurpleQueuedOutputStream queue cleared");
+		                        "PurpleQueuedOutputStream queue cleared");
 		g_object_unref(task);
 	}
 }

mercurial