libpurple/queuedoutputstream.h

Fri, 29 Mar 2019 03:20:55 -0400

author
Elliott Sales de Andrade <qulogic@pidgin.im>
date
Fri, 29 Mar 2019 03:20:55 -0400
changeset 39540
8a5927c69f02
parent 39169
35d3f5c5ffad
child 39659
e4dfb99b0cef
permissions
-rw-r--r--

Use more standard GObject setup for queuedoutputstream.

37665
3eab84b9b88f libpurple: Add PurpleQueuedOutputStream for fire and forget output
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
1 /*
3eab84b9b88f libpurple: Add PurpleQueuedOutputStream for fire and forget output
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
2 *
3eab84b9b88f libpurple: Add PurpleQueuedOutputStream for fire and forget output
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
3 * purple
3eab84b9b88f libpurple: Add PurpleQueuedOutputStream for fire and forget output
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
4 *
3eab84b9b88f libpurple: Add PurpleQueuedOutputStream for fire and forget output
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
5 * Purple is the legal property of its developers, whose names are too numerous
3eab84b9b88f libpurple: Add PurpleQueuedOutputStream for fire and forget output
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
6 * to list here. Please refer to the COPYRIGHT file distributed with this
3eab84b9b88f libpurple: Add PurpleQueuedOutputStream for fire and forget output
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
7 * source distribution.
3eab84b9b88f libpurple: Add PurpleQueuedOutputStream for fire and forget output
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
8 *
3eab84b9b88f libpurple: Add PurpleQueuedOutputStream for fire and forget output
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
9 * This program is free software; you can redistribute it and/or modify
3eab84b9b88f libpurple: Add PurpleQueuedOutputStream for fire and forget output
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
10 * it under the terms of the GNU General Public License as published by
3eab84b9b88f libpurple: Add PurpleQueuedOutputStream for fire and forget output
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
11 * the Free Software Foundation; either version 2 of the License, or
3eab84b9b88f libpurple: Add PurpleQueuedOutputStream for fire and forget output
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
12 * (at your option) any later version.
3eab84b9b88f libpurple: Add PurpleQueuedOutputStream for fire and forget output
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
13 *
3eab84b9b88f libpurple: Add PurpleQueuedOutputStream for fire and forget output
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
14 * This program is distributed in the hope that it will be useful,
3eab84b9b88f libpurple: Add PurpleQueuedOutputStream for fire and forget output
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
3eab84b9b88f libpurple: Add PurpleQueuedOutputStream for fire and forget output
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3eab84b9b88f libpurple: Add PurpleQueuedOutputStream for fire and forget output
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
17 * GNU General Public License for more details.
3eab84b9b88f libpurple: Add PurpleQueuedOutputStream for fire and forget output
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
18 *
3eab84b9b88f libpurple: Add PurpleQueuedOutputStream for fire and forget output
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
19 * You should have received a copy of the GNU General Public License
3eab84b9b88f libpurple: Add PurpleQueuedOutputStream for fire and forget output
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
20 * along with this program; if not, write to the Free Software
3eab84b9b88f libpurple: Add PurpleQueuedOutputStream for fire and forget output
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
21 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
3eab84b9b88f libpurple: Add PurpleQueuedOutputStream for fire and forget output
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
22 */
3eab84b9b88f libpurple: Add PurpleQueuedOutputStream for fire and forget output
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
23
3eab84b9b88f libpurple: Add PurpleQueuedOutputStream for fire and forget output
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
24 #ifndef _PURPLE_QUEUED_OUTPUT_STREAM_H
3eab84b9b88f libpurple: Add PurpleQueuedOutputStream for fire and forget output
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
25 #define _PURPLE_QUEUED_OUTPUT_STREAM_H
3eab84b9b88f libpurple: Add PurpleQueuedOutputStream for fire and forget output
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
26 /**
38552
85c4c3296419 libpurple: Fix section documentation headings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37665
diff changeset
27 * SECTION:queuedoutputstream
85c4c3296419 libpurple: Fix section documentation headings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37665
diff changeset
28 * @section_id: libpurple-queuedoutputstream
37665
3eab84b9b88f libpurple: Add PurpleQueuedOutputStream for fire and forget output
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
29 * @short_description: GOutputStream for queuing data to output
3eab84b9b88f libpurple: Add PurpleQueuedOutputStream for fire and forget output
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
30 * @title: GOutputStream class
3eab84b9b88f libpurple: Add PurpleQueuedOutputStream for fire and forget output
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
31 *
38555
32274f138667 queuedoutputstream: Fix docstring referencing GQueuedOutputStream
Mike Ruprecht <cmaiku@gmail.com>
parents: 38554
diff changeset
32 * A #PurpleQueuedOutputStream is a #GOutputStream which allows data to be
32274f138667 queuedoutputstream: Fix docstring referencing GQueuedOutputStream
Mike Ruprecht <cmaiku@gmail.com>
parents: 38554
diff changeset
33 * queued for outputting. It differs from a #GBufferedOutputStream in that
32274f138667 queuedoutputstream: Fix docstring referencing GQueuedOutputStream
Mike Ruprecht <cmaiku@gmail.com>
parents: 38554
diff changeset
34 * it allows for data to be queued while other operations are in progress.
37665
3eab84b9b88f libpurple: Add PurpleQueuedOutputStream for fire and forget output
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
35 */
3eab84b9b88f libpurple: Add PurpleQueuedOutputStream for fire and forget output
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
36
3eab84b9b88f libpurple: Add PurpleQueuedOutputStream for fire and forget output
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
37 #include <gio/gio.h>
3eab84b9b88f libpurple: Add PurpleQueuedOutputStream for fire and forget output
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
38
3eab84b9b88f libpurple: Add PurpleQueuedOutputStream for fire and forget output
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
39 G_BEGIN_DECLS
3eab84b9b88f libpurple: Add PurpleQueuedOutputStream for fire and forget output
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
40
39540
8a5927c69f02 Use more standard GObject setup for queuedoutputstream.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39169
diff changeset
41 #define PURPLE_TYPE_QUEUED_OUTPUT_STREAM purple_queued_output_stream_get_type()
37665
3eab84b9b88f libpurple: Add PurpleQueuedOutputStream for fire and forget output
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
42
39540
8a5927c69f02 Use more standard GObject setup for queuedoutputstream.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39169
diff changeset
43 G_DECLARE_FINAL_TYPE(PurpleQueuedOutputStream,
8a5927c69f02 Use more standard GObject setup for queuedoutputstream.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39169
diff changeset
44 purple_queued_output_stream, PURPLE,
8a5927c69f02 Use more standard GObject setup for queuedoutputstream.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39169
diff changeset
45 QUEUED_OUTPUT_STREAM, GFilterOutputStream)
37665
3eab84b9b88f libpurple: Add PurpleQueuedOutputStream for fire and forget output
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
46
3eab84b9b88f libpurple: Add PurpleQueuedOutputStream for fire and forget output
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
47 /*
3eab84b9b88f libpurple: Add PurpleQueuedOutputStream for fire and forget output
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
48 * purple_queued_output_stream_new
3eab84b9b88f libpurple: Add PurpleQueuedOutputStream for fire and forget output
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
49 * @base_stream: Base output stream to wrap with the queued stream
3eab84b9b88f libpurple: Add PurpleQueuedOutputStream for fire and forget output
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
50 *
3eab84b9b88f libpurple: Add PurpleQueuedOutputStream for fire and forget output
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
51 * Creates a new queued output stream for a base stream.
3eab84b9b88f libpurple: Add PurpleQueuedOutputStream for fire and forget output
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
52 */
3eab84b9b88f libpurple: Add PurpleQueuedOutputStream for fire and forget output
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
53 PurpleQueuedOutputStream *purple_queued_output_stream_new(
3eab84b9b88f libpurple: Add PurpleQueuedOutputStream for fire and forget output
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
54 GOutputStream *base_stream);
3eab84b9b88f libpurple: Add PurpleQueuedOutputStream for fire and forget output
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
55
3eab84b9b88f libpurple: Add PurpleQueuedOutputStream for fire and forget output
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
56 /*
39165
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38564
diff changeset
57 * purple_queued_output_stream_push_bytes_async
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38564
diff changeset
58 * @stream: #PurpleQueuedOutputStream to push bytes to
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38564
diff changeset
59 * @bytes: Bytes to queue
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38564
diff changeset
60 * @priority: IO priority of the request
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38564
diff changeset
61 * @cancellable: (allow-none): Optional #GCancellable object, NULL to ignore
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38564
diff changeset
62 * @callback: (scope async): Callback to call when the request is finished
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38564
diff changeset
63 * @user_data: (closure): Data to pass to the callback function
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38564
diff changeset
64 *
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38564
diff changeset
65 * Asynchronously queues and then writes data to the output stream.
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38564
diff changeset
66 * Once the data has been written, or an error occurs, the callback
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38564
diff changeset
67 * will be called.
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38564
diff changeset
68 *
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38564
diff changeset
69 * Be careful such that if there's a fatal stream error, all remaining queued
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38564
diff changeset
70 * operations will likely return this error. Use
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38564
diff changeset
71 * #purple_queued_output_stream_clear_queue() to clear the queue on such
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38564
diff changeset
72 * an error to only report it a single time.
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38564
diff changeset
73 */
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38564
diff changeset
74 void purple_queued_output_stream_push_bytes_async(
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38564
diff changeset
75 PurpleQueuedOutputStream *stream, GBytes *bytes,
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38564
diff changeset
76 int io_priority, GCancellable *cancellable,
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38564
diff changeset
77 GAsyncReadyCallback callback, gpointer user_data);
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38564
diff changeset
78
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38564
diff changeset
79 /*
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38564
diff changeset
80 * purple_queued_output_stream_push_bytes_finish
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38564
diff changeset
81 * @stream: #PurpleQueuedOutputStream bytes were pushed to
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38564
diff changeset
82 * @result: The #GAsyncResult of this operation
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38564
diff changeset
83 * @error: A GError location to store the error, or NULL to ignore
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38564
diff changeset
84 *
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38564
diff changeset
85 * Finishes pushing bytes asynchronously.
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38564
diff changeset
86 *
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38564
diff changeset
87 * Returns: %TRUE on success, %FALSE if there was an error
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38564
diff changeset
88 */
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38564
diff changeset
89 gboolean purple_queued_output_stream_push_bytes_finish(
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38564
diff changeset
90 PurpleQueuedOutputStream *stream,
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38564
diff changeset
91 GAsyncResult *result, GError **error);
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38564
diff changeset
92
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38564
diff changeset
93 /*
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38564
diff changeset
94 * purple_queued_output_stream_clear_queue
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38564
diff changeset
95 * @stream: #PurpleQueuedOutputStream to clear
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38564
diff changeset
96 *
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38564
diff changeset
97 * Clears the queue of any pending bytes. However, any bytes that are
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38564
diff changeset
98 * in the process of being sent will finish their operation.
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38564
diff changeset
99 *
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38564
diff changeset
100 * This function is useful for clearing the queue in case of an IO error.
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38564
diff changeset
101 * Call this in the async callback in order to clear the queue and avoid
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38564
diff changeset
102 * having all #purple_queue_output_stream_push_bytes_async() calls on
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38564
diff changeset
103 * this queue return errors if there's a fatal stream error.
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38564
diff changeset
104 */
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38564
diff changeset
105 void purple_queued_output_stream_clear_queue(PurpleQueuedOutputStream *stream);
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38564
diff changeset
106
37665
3eab84b9b88f libpurple: Add PurpleQueuedOutputStream for fire and forget output
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
107 G_END_DECLS
3eab84b9b88f libpurple: Add PurpleQueuedOutputStream for fire and forget output
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
108
3eab84b9b88f libpurple: Add PurpleQueuedOutputStream for fire and forget output
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
109 #endif /* _PURPLE_QUEUED_OUTPUT_STREAM_H */

mercurial