static void g_unix_output_stream_write_async (GOutputStream *stream, const void *buffer, gsize count, int io_priority, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { GSource *source; GUnixOutputStream *unix_stream; WriteAsyncData *data; unix_stream = G_UNIX_OUTPUT_STREAM (stream); data = g_new0 (WriteAsyncData, 1); data->count = count; data->buffer = buffer; data->callback = callback; data->user_data = user_data; data->cancellable = cancellable; data->stream = unix_stream; source = _g_fd_source_new (unix_stream->priv->fd, POLLOUT, cancellable); g_source_set_callback (source, (GSourceFunc)write_async_cb, data, g_free); g_source_attach (source, NULL); g_source_unref (source); }
static void g_unix_input_stream_read_async (GInputStream *stream, void *buffer, gsize count, int io_priority, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { GSource *source; GUnixInputStream *unix_stream; ReadAsyncData *data; unix_stream = G_UNIX_INPUT_STREAM (stream); data = g_new0 (ReadAsyncData, 1); data->count = count; data->buffer = buffer; data->callback = callback; data->user_data = user_data; data->cancellable = cancellable; data->stream = unix_stream; source = _g_fd_source_new (unix_stream->priv->fd, G_IO_IN, cancellable); g_source_set_name (source, "GUnixInputStream"); g_source_set_callback (source, (GSourceFunc)read_async_cb, data, g_free); g_source_attach (source, g_main_context_get_thread_default ()); g_source_unref (source); }
static GSource * g_unix_input_stream_pollable_create_source (GPollableInputStream *stream, GCancellable *cancellable) { GUnixInputStream *unix_stream = G_UNIX_INPUT_STREAM (stream); GSource *inner_source, *pollable_source; pollable_source = g_pollable_source_new (G_OBJECT (stream)); inner_source = _g_fd_source_new (unix_stream->priv->fd, G_IO_IN, cancellable); g_source_set_dummy_callback (inner_source); g_source_add_child_source (pollable_source, inner_source); g_source_unref (inner_source); return pollable_source; }