[glib] Remove default implementation of async filter steam ops
- From: Alexander Larsson <alexl src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [glib] Remove default implementation of async filter steam ops
- Date: Mon, 7 Dec 2009 21:14:59 +0000 (UTC)
commit 4fbbe190b7cbfd271bbb18428bc103ebffa41112
Author: Alexander Larsson <alexl redhat com>
Date: Mon Dec 7 22:00:51 2009 +0100
Remove default implementation of async filter steam ops
Not only is the default implementation broken (it causes infinite recursion
as seen in bug #603982), but its also worthless. If we just fall back on the
default stream operations we automatically get async version based on
the sync filter stream operations, which is what we want.
gio/gfilterinputstream.c | 185 +--------------------------------------------
gio/gfilteroutputstream.c | 173 ------------------------------------------
2 files changed, 2 insertions(+), 356 deletions(-)
---
diff --git a/gio/gfilterinputstream.c b/gio/gfilterinputstream.c
index aa27465..53e305a 100644
--- a/gio/gfilterinputstream.c
+++ b/gio/gfilterinputstream.c
@@ -65,33 +65,6 @@ static gssize g_filter_input_stream_skip (GInputStream *stream
static gboolean g_filter_input_stream_close (GInputStream *stream,
GCancellable *cancellable,
GError **error);
-static void g_filter_input_stream_read_async (GInputStream *stream,
- void *buffer,
- gsize count,
- int io_priority,
- GCancellable *cancellable,
- GAsyncReadyCallback callback,
- gpointer user_data);
-static gssize g_filter_input_stream_read_finish (GInputStream *stream,
- GAsyncResult *result,
- GError **error);
-static void g_filter_input_stream_skip_async (GInputStream *stream,
- gsize count,
- int io_priority,
- GCancellable *cancellabl,
- GAsyncReadyCallback callback,
- gpointer datae);
-static gssize g_filter_input_stream_skip_finish (GInputStream *stream,
- GAsyncResult *result,
- GError **error);
-static void g_filter_input_stream_close_async (GInputStream *stream,
- int io_priority,
- GCancellable *cancellabl,
- GAsyncReadyCallback callback,
- gpointer data);
-static gboolean g_filter_input_stream_close_finish (GInputStream *stream,
- GAsyncResult *result,
- GError **error);
G_DEFINE_TYPE (GFilterInputStream, g_filter_input_stream, G_TYPE_INPUT_STREAM)
@@ -101,6 +74,8 @@ G_DEFINE_TYPE (GFilterInputStream, g_filter_input_stream, G_TYPE_INPUT_STREAM)
typedef struct
{
gboolean close_base;
+ GAsyncReadyCallback outstanding_callback;
+ gpointer outstanding_user_data;
} GFilterInputStreamPrivate;
static void
@@ -119,13 +94,6 @@ g_filter_input_stream_class_init (GFilterInputStreamClass *klass)
istream_class->skip = g_filter_input_stream_skip;
istream_class->close_fn = g_filter_input_stream_close;
- istream_class->read_async = g_filter_input_stream_read_async;
- istream_class->read_finish = g_filter_input_stream_read_finish;
- istream_class->skip_async = g_filter_input_stream_skip_async;
- istream_class->skip_finish = g_filter_input_stream_skip_finish;
- istream_class->close_async = g_filter_input_stream_close_async;
- istream_class->close_finish = g_filter_input_stream_close_finish;
-
g_type_class_add_private (klass, sizeof (GFilterInputStreamPrivate));
g_object_class_install_property (object_class,
@@ -346,154 +314,5 @@ g_filter_input_stream_close (GInputStream *stream,
return res;
}
-static void
-g_filter_input_stream_read_async (GInputStream *stream,
- void *buffer,
- gsize count,
- int io_priority,
- GCancellable *cancellable,
- GAsyncReadyCallback callback,
- gpointer user_data)
-{
- GFilterInputStream *filter_stream;
- GInputStream *base_stream;
-
- filter_stream = G_FILTER_INPUT_STREAM (stream);
- base_stream = filter_stream->base_stream;
-
- g_input_stream_read_async (base_stream,
- buffer,
- count,
- io_priority,
- cancellable,
- callback,
- user_data);
-}
-
-static gssize
-g_filter_input_stream_read_finish (GInputStream *stream,
- GAsyncResult *result,
- GError **error)
-{
- GFilterInputStream *filter_stream;
- GInputStream *base_stream;
- gssize nread;
-
- filter_stream = G_FILTER_INPUT_STREAM (stream);
- base_stream = filter_stream->base_stream;
-
- nread = g_input_stream_read_finish (base_stream,
- result,
- error);
-
- return nread;
-}
-
-static void
-g_filter_input_stream_skip_async (GInputStream *stream,
- gsize count,
- int io_priority,
- GCancellable *cancellable,
- GAsyncReadyCallback callback,
- gpointer user_data)
-{
- GFilterInputStream *filter_stream;
- GInputStream *base_stream;
-
- filter_stream = G_FILTER_INPUT_STREAM (stream);
- base_stream = filter_stream->base_stream;
-
- g_input_stream_skip_async (base_stream,
- count,
- io_priority,
- cancellable,
- callback,
- user_data);
-
-}
-
-static gssize
-g_filter_input_stream_skip_finish (GInputStream *stream,
- GAsyncResult *result,
- GError **error)
-{
- GFilterInputStream *filter_stream;
- GInputStream *base_stream;
- gssize nskipped;
-
- filter_stream = G_FILTER_INPUT_STREAM (stream);
- base_stream = filter_stream->base_stream;
-
- nskipped = g_input_stream_skip_finish (base_stream,
- result,
- error);
-
- return nskipped;
-}
-
-static void
-g_filter_input_stream_close_ready (GObject *object,
- GAsyncResult *result,
- gpointer user_data)
-{
- GSimpleAsyncResult *simple = user_data;
- GError *error = NULL;
-
- g_input_stream_close_finish (G_INPUT_STREAM (object), result, &error);
-
- if (error)
- {
- g_simple_async_result_set_from_error (simple, error);
- g_error_free (error);
- }
-
- g_simple_async_result_complete (simple);
- g_object_unref (simple);
-}
-
-static void
-g_filter_input_stream_close_async (GInputStream *stream,
- int io_priority,
- GCancellable *cancellable,
- GAsyncReadyCallback callback,
- gpointer user_data)
-{
- GSimpleAsyncResult *simple;
-
- simple = g_simple_async_result_new (G_OBJECT (stream),
- callback, user_data,
- g_filter_input_stream_close_async);
-
- if (GET_PRIVATE (stream)->close_base)
- {
- GFilterInputStream *filter_stream = G_FILTER_INPUT_STREAM (stream);
-
- g_input_stream_close_async (filter_stream->base_stream,
- io_priority, cancellable,
- g_filter_input_stream_close_ready,
- g_object_ref (simple));
- }
- else
- /* do nothing */
- g_simple_async_result_complete_in_idle (simple);
-
- g_object_unref (simple);
-}
-
-static gboolean
-g_filter_input_stream_close_finish (GInputStream *stream,
- GAsyncResult *result,
- GError **error)
-{
- GSimpleAsyncResult *simple;
-
- g_return_val_if_fail (g_simple_async_result_is_valid (
- result, G_OBJECT (stream), g_filter_input_stream_close_async), FALSE);
-
- simple = G_SIMPLE_ASYNC_RESULT (result);
-
- return !g_simple_async_result_propagate_error (simple, error);
-}
-
#define __G_FILTER_INPUT_STREAM_C__
#include "gioaliasdef.c"
diff --git a/gio/gfilteroutputstream.c b/gio/gfilteroutputstream.c
index 32fc6f7..606f669 100644
--- a/gio/gfilteroutputstream.c
+++ b/gio/gfilteroutputstream.c
@@ -64,34 +64,6 @@ static gboolean g_filter_output_stream_flush (GOutputStream *stream,
static gboolean g_filter_output_stream_close (GOutputStream *stream,
GCancellable *cancellable,
GError **error);
-static void g_filter_output_stream_write_async (GOutputStream *stream,
- const void *buffer,
- gsize count,
- int io_priority,
- GCancellable *cancellable,
- GAsyncReadyCallback callback,
- gpointer data);
-static gssize g_filter_output_stream_write_finish (GOutputStream *stream,
- GAsyncResult *result,
- GError **error);
-static void g_filter_output_stream_flush_async (GOutputStream *stream,
- int io_priority,
- GCancellable *cancellable,
- GAsyncReadyCallback callback,
- gpointer data);
-static gboolean g_filter_output_stream_flush_finish (GOutputStream *stream,
- GAsyncResult *result,
- GError **error);
-static void g_filter_output_stream_close_async (GOutputStream *stream,
- int io_priority,
- GCancellable *cancellable,
- GAsyncReadyCallback callback,
- gpointer data);
-static gboolean g_filter_output_stream_close_finish (GOutputStream *stream,
- GAsyncResult *result,
- GError **error);
-
-
G_DEFINE_TYPE (GFilterOutputStream, g_filter_output_stream, G_TYPE_OUTPUT_STREAM)
@@ -118,12 +90,6 @@ g_filter_output_stream_class_init (GFilterOutputStreamClass *klass)
ostream_class->write_fn = g_filter_output_stream_write;
ostream_class->flush = g_filter_output_stream_flush;
ostream_class->close_fn = g_filter_output_stream_close;
- ostream_class->write_async = g_filter_output_stream_write_async;
- ostream_class->write_finish = g_filter_output_stream_write_finish;
- ostream_class->flush_async = g_filter_output_stream_flush_async;
- ostream_class->flush_finish = g_filter_output_stream_flush_finish;
- ostream_class->close_async = g_filter_output_stream_close_async;
- ostream_class->close_finish = g_filter_output_stream_close_finish;
g_type_class_add_private (klass, sizeof (GFilterOutputStreamPrivate));
@@ -342,144 +308,5 @@ g_filter_output_stream_close (GOutputStream *stream,
return res;
}
-static void
-g_filter_output_stream_write_async (GOutputStream *stream,
- const void *buffer,
- gsize count,
- int io_priority,
- GCancellable *cancellable,
- GAsyncReadyCallback callback,
- gpointer data)
-{
- GFilterOutputStream *filter_stream;
-
- filter_stream = G_FILTER_OUTPUT_STREAM (stream);
-
- g_output_stream_write_async (filter_stream->base_stream,
- buffer,
- count,
- io_priority,
- cancellable,
- callback,
- data);
-
-}
-
-static gssize
-g_filter_output_stream_write_finish (GOutputStream *stream,
- GAsyncResult *result,
- GError **error)
-{
- GFilterOutputStream *filter_stream;
- gssize nwritten;
-
- filter_stream = G_FILTER_OUTPUT_STREAM (stream);
-
- nwritten = g_output_stream_write_finish (filter_stream->base_stream,
- result,
- error);
-
- return nwritten;
-}
-
-static void
-g_filter_output_stream_flush_async (GOutputStream *stream,
- int io_priority,
- GCancellable *cancellable,
- GAsyncReadyCallback callback,
- gpointer data)
-{
- GFilterOutputStream *filter_stream;
-
- filter_stream = G_FILTER_OUTPUT_STREAM (stream);
-
- g_output_stream_flush_async (filter_stream->base_stream,
- io_priority,
- cancellable,
- callback,
- data);
-}
-
-static gboolean
-g_filter_output_stream_flush_finish (GOutputStream *stream,
- GAsyncResult *result,
- GError **error)
-{
- GFilterOutputStream *filter_stream;
- gboolean res;
-
- filter_stream = G_FILTER_OUTPUT_STREAM (stream);
-
- res = g_output_stream_flush_finish (filter_stream->base_stream,
- result,
- error);
-
- return res;
-}
-
-static void
-g_filter_output_stream_close_ready (GObject *object,
- GAsyncResult *result,
- gpointer user_data)
-{
- GSimpleAsyncResult *simple = user_data;
- GError *error = NULL;
-
- g_output_stream_close_finish (G_OUTPUT_STREAM (object), result, &error);
-
- if (error)
- {
- g_simple_async_result_set_from_error (simple, error);
- g_error_free (error);
- }
-
- g_simple_async_result_complete (simple);
- g_object_unref (simple);
-}
-
-static void
-g_filter_output_stream_close_async (GOutputStream *stream,
- int io_priority,
- GCancellable *cancellable,
- GAsyncReadyCallback callback,
- gpointer user_data)
-{
- GSimpleAsyncResult *simple;
-
- simple = g_simple_async_result_new (G_OBJECT (stream),
- callback, user_data,
- g_filter_output_stream_close_async);
-
- if (GET_PRIVATE (stream)->close_base)
- {
- GFilterOutputStream *filter_stream = G_FILTER_OUTPUT_STREAM (stream);
-
- g_output_stream_close_async (filter_stream->base_stream,
- io_priority, cancellable,
- g_filter_output_stream_close_ready,
- g_object_ref (simple));
- }
- else
- /* do nothing */
- g_simple_async_result_complete_in_idle (simple);
-
- g_object_unref (simple);
-}
-
-static gboolean
-g_filter_output_stream_close_finish (GOutputStream *stream,
- GAsyncResult *result,
- GError **error)
-{
- GSimpleAsyncResult *simple;
-
- g_return_val_if_fail (g_simple_async_result_is_valid (
- result, G_OBJECT (stream), g_filter_output_stream_close_async), FALSE);
-
- simple = G_SIMPLE_ASYNC_RESULT (result);
-
- return !g_simple_async_result_propagate_error (simple, error);
-}
-
#define __G_FILTER_OUTPUT_STREAM_C__
#include "gioaliasdef.c"
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]