--- a/dodo/dodoinputstream.c Mon Nov 27 23:52:48 2023 -0600
+++ b/dodo/dodoinputstream.c Tue Nov 28 00:08:10 2023 -0600
@@ -27,16 +27,15 @@
static guint signals[N_SIGNALS];
-struct _DodoInputStream {
GMarkupParseContext *context;
+} DodoInputStreamPrivate; -G_DEFINE_TYPE(DodoInputStream, dodo_input_stream, DODO_TYPE_STREAM)
+G_DEFINE_TYPE_WITH_PRIVATE(DodoInputStream, dodo_input_stream, /******************************************************************************
@@ -53,12 +52,15 @@
GAsyncResult *result, gpointer data)
DodoInputStream *stream = data;
+ DodoInputStreamPrivate *priv = NULL; - bytes = g_input_stream_read_bytes_finish(stream->input, result, &error);
+ priv = dodo_input_stream_get_instance_private(stream); + bytes = g_input_stream_read_bytes_finish(priv->input, result, &error); g_message("failed to read: %s",
error != NULL ? error->message : "unknown error");
@@ -70,7 +72,7 @@
raw = g_bytes_get_data(bytes, &length);
- if(!g_markup_parse_context_parse(stream->context, raw, length, &error)) {
+ if(!g_markup_parse_context_parse(priv->context, raw, length, &error)) { g_warning("we hit an error: %s", error->message);
@@ -79,12 +81,12 @@
/* Make another asynchronous read call. */
- if(length > 0 && stream->running == TRUE) {
+ if(length > 0 && priv->running == TRUE) { GCancellable *cancellable = NULL;
cancellable = dodo_stream_get_cancellable(DODO_STREAM(stream));
- g_input_stream_read_bytes_async(stream->input,
+ g_input_stream_read_bytes_async(priv->input, DODO_INPUT_STREAM_BUFFER_LEN,
G_PRIORITY_DEFAULT, cancellable,
dodo_input_stream_read_bytes_async_cb,
@@ -206,11 +208,14 @@
*****************************************************************************/
dodo_input_stream_init(DodoInputStream *stream) {
- stream->running = FALSE;
+ DodoInputStreamPrivate *priv = NULL; - stream->context = g_markup_parse_context_new(&parser, 0,
+ priv = dodo_input_stream_get_instance_private(stream); + priv->context = g_markup_parse_context_new(&parser, 0, @@ -246,13 +251,16 @@
dodo_input_stream_start(DodoInputStream *stream, GInputStream *input,
+ DodoInputStreamPrivate *priv = NULL; GCancellable *cancellable = NULL;
g_return_val_if_fail(DODO_IS_INPUT_STREAM(stream), FALSE);
g_return_val_if_fail(G_IS_INPUT_STREAM(input), FALSE);
g_return_val_if_fail(error == NULL || *error == NULL, FALSE);
+ priv = dodo_input_stream_get_instance_private(stream); g_set_error_literal(error, DODO_DOMAIN, 0,
"input stream has already been started");
@@ -262,14 +270,14 @@
cancellable = dodo_stream_get_cancellable(DODO_STREAM(stream));
/* Setup the read handler. */
- stream->input = g_object_ref(input);
- g_input_stream_read_bytes_async(stream->input,
+ priv->input = g_object_ref(input); + g_input_stream_read_bytes_async(priv->input, DODO_INPUT_STREAM_BUFFER_LEN,
G_PRIORITY_DEFAULT, cancellable,
dodo_input_stream_read_bytes_async_cb,
- stream->running = TRUE;
--- a/dodo/dodoinputstream.h Mon Nov 27 23:52:48 2023 -0600
+++ b/dodo/dodoinputstream.h Tue Nov 28 00:08:10 2023 -0600
@@ -23,12 +23,21 @@
+#include <dodo/dodomessage.h> #include <dodo/dodostream.h>
#define DODO_TYPE_INPUT_STREAM (dodo_input_stream_get_type())
-G_DECLARE_FINAL_TYPE(DodoInputStream, dodo_input_stream, DODO, INPUT_STREAM, DodoStream)
+G_DECLARE_DERIVABLE_TYPE(DodoInputStream, dodo_input_stream, DODO, INPUT_STREAM, DodoStream) +struct _DodoInputStreamClass { + DodoStreamClass parent;