13781343738de4abddf56982325a77bd70a98cd26Alexander Larsson/* GIO - GLib Input, Output and Streaming Library 2f2a2d6c9ac2d98b565005d446fde01aac47f7d88Michael Natterer * 33781343738de4abddf56982325a77bd70a98cd26Alexander Larsson * Copyright (C) 2006-2007 Red Hat, Inc. 43781343738de4abddf56982325a77bd70a98cd26Alexander Larsson * 53781343738de4abddf56982325a77bd70a98cd26Alexander Larsson * This library is free software; you can redistribute it and/or 63781343738de4abddf56982325a77bd70a98cd26Alexander Larsson * modify it under the terms of the GNU Lesser General Public 73781343738de4abddf56982325a77bd70a98cd26Alexander Larsson * License as published by the Free Software Foundation; either 83781343738de4abddf56982325a77bd70a98cd26Alexander Larsson * version 2 of the License, or (at your option) any later version. 93781343738de4abddf56982325a77bd70a98cd26Alexander Larsson * 103781343738de4abddf56982325a77bd70a98cd26Alexander Larsson * This library is distributed in the hope that it will be useful, 113781343738de4abddf56982325a77bd70a98cd26Alexander Larsson * but WITHOUT ANY WARRANTY; without even the implied warranty of 123781343738de4abddf56982325a77bd70a98cd26Alexander Larsson * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 133781343738de4abddf56982325a77bd70a98cd26Alexander Larsson * Lesser General Public License for more details. 143781343738de4abddf56982325a77bd70a98cd26Alexander Larsson * 153781343738de4abddf56982325a77bd70a98cd26Alexander Larsson * You should have received a copy of the GNU Lesser General 163781343738de4abddf56982325a77bd70a98cd26Alexander Larsson * Public License along with this library; if not, write to the 173781343738de4abddf56982325a77bd70a98cd26Alexander Larsson * Free Software Foundation, Inc., 59 Temple Place, Suite 330, 183781343738de4abddf56982325a77bd70a98cd26Alexander Larsson * Boston, MA 02111-1307, USA. 193781343738de4abddf56982325a77bd70a98cd26Alexander Larsson * 203781343738de4abddf56982325a77bd70a98cd26Alexander Larsson * Author: Alexander Larsson <alexl@redhat.com> 213781343738de4abddf56982325a77bd70a98cd26Alexander Larsson */ 223781343738de4abddf56982325a77bd70a98cd26Alexander Larsson 23ced29277267476bbe4ba5e35f79a8d6a130cb989Alexander Larsson#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) 24ced29277267476bbe4ba5e35f79a8d6a130cb989Alexander Larsson#error "Only <gio/gio.h> can be included directly." 25ced29277267476bbe4ba5e35f79a8d6a130cb989Alexander Larsson#endif 26ced29277267476bbe4ba5e35f79a8d6a130cb989Alexander Larsson 273781343738de4abddf56982325a77bd70a98cd26Alexander Larsson#ifndef __G_INPUT_STREAM_H__ 283781343738de4abddf56982325a77bd70a98cd26Alexander Larsson#define __G_INPUT_STREAM_H__ 293781343738de4abddf56982325a77bd70a98cd26Alexander Larsson 303d93bf6968884d75dd2706ef85e2014305eb92f2Cody Russell#include <gio/giotypes.h> 313781343738de4abddf56982325a77bd70a98cd26Alexander Larsson 323781343738de4abddf56982325a77bd70a98cd26Alexander LarssonG_BEGIN_DECLS 333781343738de4abddf56982325a77bd70a98cd26Alexander Larsson 343781343738de4abddf56982325a77bd70a98cd26Alexander Larsson#define G_TYPE_INPUT_STREAM (g_input_stream_get_type ()) 353781343738de4abddf56982325a77bd70a98cd26Alexander Larsson#define G_INPUT_STREAM(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_INPUT_STREAM, GInputStream)) 363781343738de4abddf56982325a77bd70a98cd26Alexander Larsson#define G_INPUT_STREAM_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_INPUT_STREAM, GInputStreamClass)) 373781343738de4abddf56982325a77bd70a98cd26Alexander Larsson#define G_IS_INPUT_STREAM(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_INPUT_STREAM)) 383781343738de4abddf56982325a77bd70a98cd26Alexander Larsson#define G_IS_INPUT_STREAM_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_INPUT_STREAM)) 393781343738de4abddf56982325a77bd70a98cd26Alexander Larsson#define G_INPUT_STREAM_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_INPUT_STREAM, GInputStreamClass)) 403781343738de4abddf56982325a77bd70a98cd26Alexander Larsson 415247f12f3649726471080440de0d37b78c1cec33Andrew Walton/** 425247f12f3649726471080440de0d37b78c1cec33Andrew Walton * GInputStream: 43f2a2d6c9ac2d98b565005d446fde01aac47f7d88Michael Natterer * 445247f12f3649726471080440de0d37b78c1cec33Andrew Walton * Base class for streaming input operations. 455247f12f3649726471080440de0d37b78c1cec33Andrew Walton **/ 463781343738de4abddf56982325a77bd70a98cd26Alexander Larssontypedef struct _GInputStreamClass GInputStreamClass; 473781343738de4abddf56982325a77bd70a98cd26Alexander Larssontypedef struct _GInputStreamPrivate GInputStreamPrivate; 483781343738de4abddf56982325a77bd70a98cd26Alexander Larsson 493781343738de4abddf56982325a77bd70a98cd26Alexander Larssonstruct _GInputStream 503781343738de4abddf56982325a77bd70a98cd26Alexander Larsson{ 51ab7ff4c6a04a9c29e4f1e8cb3fd1f39610c58c37Alexander Larsson GObject parent_instance; 523781343738de4abddf56982325a77bd70a98cd26Alexander Larsson 533781343738de4abddf56982325a77bd70a98cd26Alexander Larsson /*< private >*/ 543781343738de4abddf56982325a77bd70a98cd26Alexander Larsson GInputStreamPrivate *priv; 553781343738de4abddf56982325a77bd70a98cd26Alexander Larsson}; 563781343738de4abddf56982325a77bd70a98cd26Alexander Larsson 573781343738de4abddf56982325a77bd70a98cd26Alexander Larssonstruct _GInputStreamClass 583781343738de4abddf56982325a77bd70a98cd26Alexander Larsson{ 593781343738de4abddf56982325a77bd70a98cd26Alexander Larsson GObjectClass parent_class; 603781343738de4abddf56982325a77bd70a98cd26Alexander Larsson 613781343738de4abddf56982325a77bd70a98cd26Alexander Larsson /* Sync ops: */ 62f2a2d6c9ac2d98b565005d446fde01aac47f7d88Michael Natterer 63f2a2d6c9ac2d98b565005d446fde01aac47f7d88Michael Natterer gssize (* read_fn) (GInputStream *stream, 64f2a2d6c9ac2d98b565005d446fde01aac47f7d88Michael Natterer void *buffer, 65f2a2d6c9ac2d98b565005d446fde01aac47f7d88Michael Natterer gsize count, 66f2a2d6c9ac2d98b565005d446fde01aac47f7d88Michael Natterer GCancellable *cancellable, 67f2a2d6c9ac2d98b565005d446fde01aac47f7d88Michael Natterer GError **error); 68f2a2d6c9ac2d98b565005d446fde01aac47f7d88Michael Natterer gssize (* skip) (GInputStream *stream, 69f2a2d6c9ac2d98b565005d446fde01aac47f7d88Michael Natterer gsize count, 70f2a2d6c9ac2d98b565005d446fde01aac47f7d88Michael Natterer GCancellable *cancellable, 71f2a2d6c9ac2d98b565005d446fde01aac47f7d88Michael Natterer GError **error); 72f2a2d6c9ac2d98b565005d446fde01aac47f7d88Michael Natterer gboolean (* close_fn) (GInputStream *stream, 73f2a2d6c9ac2d98b565005d446fde01aac47f7d88Michael Natterer GCancellable *cancellable, 74f2a2d6c9ac2d98b565005d446fde01aac47f7d88Michael Natterer GError **error); 753781343738de4abddf56982325a77bd70a98cd26Alexander Larsson 763781343738de4abddf56982325a77bd70a98cd26Alexander Larsson /* Async ops: (optional in derived classes) */ 77f2a2d6c9ac2d98b565005d446fde01aac47f7d88Michael Natterer void (* read_async) (GInputStream *stream, 78f2a2d6c9ac2d98b565005d446fde01aac47f7d88Michael Natterer void *buffer, 79f2a2d6c9ac2d98b565005d446fde01aac47f7d88Michael Natterer gsize count, 80f2a2d6c9ac2d98b565005d446fde01aac47f7d88Michael Natterer int io_priority, 81f2a2d6c9ac2d98b565005d446fde01aac47f7d88Michael Natterer GCancellable *cancellable, 82f2a2d6c9ac2d98b565005d446fde01aac47f7d88Michael Natterer GAsyncReadyCallback callback, 83f2a2d6c9ac2d98b565005d446fde01aac47f7d88Michael Natterer gpointer user_data); 84f2a2d6c9ac2d98b565005d446fde01aac47f7d88Michael Natterer gssize (* read_finish) (GInputStream *stream, 85f2a2d6c9ac2d98b565005d446fde01aac47f7d88Michael Natterer GAsyncResult *result, 86f2a2d6c9ac2d98b565005d446fde01aac47f7d88Michael Natterer GError **error); 87f2a2d6c9ac2d98b565005d446fde01aac47f7d88Michael Natterer void (* skip_async) (GInputStream *stream, 88f2a2d6c9ac2d98b565005d446fde01aac47f7d88Michael Natterer gsize count, 89f2a2d6c9ac2d98b565005d446fde01aac47f7d88Michael Natterer int io_priority, 90f2a2d6c9ac2d98b565005d446fde01aac47f7d88Michael Natterer GCancellable *cancellable, 91f2a2d6c9ac2d98b565005d446fde01aac47f7d88Michael Natterer GAsyncReadyCallback callback, 92f2a2d6c9ac2d98b565005d446fde01aac47f7d88Michael Natterer gpointer user_data); 93f2a2d6c9ac2d98b565005d446fde01aac47f7d88Michael Natterer gssize (* skip_finish) (GInputStream *stream, 94f2a2d6c9ac2d98b565005d446fde01aac47f7d88Michael Natterer GAsyncResult *result, 95f2a2d6c9ac2d98b565005d446fde01aac47f7d88Michael Natterer GError **error); 96f2a2d6c9ac2d98b565005d446fde01aac47f7d88Michael Natterer void (* close_async) (GInputStream *stream, 97f2a2d6c9ac2d98b565005d446fde01aac47f7d88Michael Natterer int io_priority, 98f2a2d6c9ac2d98b565005d446fde01aac47f7d88Michael Natterer GCancellable *cancellable, 99f2a2d6c9ac2d98b565005d446fde01aac47f7d88Michael Natterer GAsyncReadyCallback callback, 100f2a2d6c9ac2d98b565005d446fde01aac47f7d88Michael Natterer gpointer user_data); 101f2a2d6c9ac2d98b565005d446fde01aac47f7d88Michael Natterer gboolean (* close_finish) (GInputStream *stream, 102f2a2d6c9ac2d98b565005d446fde01aac47f7d88Michael Natterer GAsyncResult *result, 103f2a2d6c9ac2d98b565005d446fde01aac47f7d88Michael Natterer GError **error); 1043781343738de4abddf56982325a77bd70a98cd26Alexander Larsson 1055247f12f3649726471080440de0d37b78c1cec33Andrew Walton /*< private >*/ 1063781343738de4abddf56982325a77bd70a98cd26Alexander Larsson /* Padding for future expansion */ 1073781343738de4abddf56982325a77bd70a98cd26Alexander Larsson void (*_g_reserved1) (void); 1083781343738de4abddf56982325a77bd70a98cd26Alexander Larsson void (*_g_reserved2) (void); 1093781343738de4abddf56982325a77bd70a98cd26Alexander Larsson void (*_g_reserved3) (void); 1103781343738de4abddf56982325a77bd70a98cd26Alexander Larsson void (*_g_reserved4) (void); 1113781343738de4abddf56982325a77bd70a98cd26Alexander Larsson void (*_g_reserved5) (void); 1123781343738de4abddf56982325a77bd70a98cd26Alexander Larsson}; 1133781343738de4abddf56982325a77bd70a98cd26Alexander Larsson 114f2a2d6c9ac2d98b565005d446fde01aac47f7d88Michael NattererGType g_input_stream_get_type (void) G_GNUC_CONST; 1153781343738de4abddf56982325a77bd70a98cd26Alexander Larsson 116117de38f04de4f546215957b95d3c5b3f104fa42Dan Winshipgssize g_input_stream_read (GInputStream *stream, 117117de38f04de4f546215957b95d3c5b3f104fa42Dan Winship void *buffer, 118117de38f04de4f546215957b95d3c5b3f104fa42Dan Winship gsize count, 119117de38f04de4f546215957b95d3c5b3f104fa42Dan Winship GCancellable *cancellable, 120117de38f04de4f546215957b95d3c5b3f104fa42Dan Winship GError **error); 121117de38f04de4f546215957b95d3c5b3f104fa42Dan Winshipgboolean g_input_stream_read_all (GInputStream *stream, 122117de38f04de4f546215957b95d3c5b3f104fa42Dan Winship void *buffer, 123117de38f04de4f546215957b95d3c5b3f104fa42Dan Winship gsize count, 124117de38f04de4f546215957b95d3c5b3f104fa42Dan Winship gsize *bytes_read, 125117de38f04de4f546215957b95d3c5b3f104fa42Dan Winship GCancellable *cancellable, 126117de38f04de4f546215957b95d3c5b3f104fa42Dan Winship GError **error); 127117de38f04de4f546215957b95d3c5b3f104fa42Dan Winshipgssize g_input_stream_skip (GInputStream *stream, 128117de38f04de4f546215957b95d3c5b3f104fa42Dan Winship gsize count, 129117de38f04de4f546215957b95d3c5b3f104fa42Dan Winship GCancellable *cancellable, 130117de38f04de4f546215957b95d3c5b3f104fa42Dan Winship GError **error); 131117de38f04de4f546215957b95d3c5b3f104fa42Dan Winshipgboolean g_input_stream_close (GInputStream *stream, 132117de38f04de4f546215957b95d3c5b3f104fa42Dan Winship GCancellable *cancellable, 133117de38f04de4f546215957b95d3c5b3f104fa42Dan Winship GError **error); 134117de38f04de4f546215957b95d3c5b3f104fa42Dan Winshipvoid g_input_stream_read_async (GInputStream *stream, 135117de38f04de4f546215957b95d3c5b3f104fa42Dan Winship void *buffer, 136117de38f04de4f546215957b95d3c5b3f104fa42Dan Winship gsize count, 137117de38f04de4f546215957b95d3c5b3f104fa42Dan Winship int io_priority, 138117de38f04de4f546215957b95d3c5b3f104fa42Dan Winship GCancellable *cancellable, 139117de38f04de4f546215957b95d3c5b3f104fa42Dan Winship GAsyncReadyCallback callback, 140117de38f04de4f546215957b95d3c5b3f104fa42Dan Winship gpointer user_data); 141117de38f04de4f546215957b95d3c5b3f104fa42Dan Winshipgssize g_input_stream_read_finish (GInputStream *stream, 142117de38f04de4f546215957b95d3c5b3f104fa42Dan Winship GAsyncResult *result, 143117de38f04de4f546215957b95d3c5b3f104fa42Dan Winship GError **error); 144117de38f04de4f546215957b95d3c5b3f104fa42Dan Winshipvoid g_input_stream_skip_async (GInputStream *stream, 145117de38f04de4f546215957b95d3c5b3f104fa42Dan Winship gsize count, 146117de38f04de4f546215957b95d3c5b3f104fa42Dan Winship int io_priority, 147117de38f04de4f546215957b95d3c5b3f104fa42Dan Winship GCancellable *cancellable, 148117de38f04de4f546215957b95d3c5b3f104fa42Dan Winship GAsyncReadyCallback callback, 149117de38f04de4f546215957b95d3c5b3f104fa42Dan Winship gpointer user_data); 150117de38f04de4f546215957b95d3c5b3f104fa42Dan Winshipgssize g_input_stream_skip_finish (GInputStream *stream, 151117de38f04de4f546215957b95d3c5b3f104fa42Dan Winship GAsyncResult *result, 152117de38f04de4f546215957b95d3c5b3f104fa42Dan Winship GError **error); 153117de38f04de4f546215957b95d3c5b3f104fa42Dan Winshipvoid g_input_stream_close_async (GInputStream *stream, 154117de38f04de4f546215957b95d3c5b3f104fa42Dan Winship int io_priority, 155117de38f04de4f546215957b95d3c5b3f104fa42Dan Winship GCancellable *cancellable, 156117de38f04de4f546215957b95d3c5b3f104fa42Dan Winship GAsyncReadyCallback callback, 157117de38f04de4f546215957b95d3c5b3f104fa42Dan Winship gpointer user_data); 158117de38f04de4f546215957b95d3c5b3f104fa42Dan Winshipgboolean g_input_stream_close_finish (GInputStream *stream, 159117de38f04de4f546215957b95d3c5b3f104fa42Dan Winship GAsyncResult *result, 160117de38f04de4f546215957b95d3c5b3f104fa42Dan Winship GError **error); 1613781343738de4abddf56982325a77bd70a98cd26Alexander Larsson 1623781343738de4abddf56982325a77bd70a98cd26Alexander Larsson/* For implementations: */ 1633781343738de4abddf56982325a77bd70a98cd26Alexander Larsson 164117de38f04de4f546215957b95d3c5b3f104fa42Dan Winshipgboolean g_input_stream_is_closed (GInputStream *stream); 165117de38f04de4f546215957b95d3c5b3f104fa42Dan Winshipgboolean g_input_stream_has_pending (GInputStream *stream); 166117de38f04de4f546215957b95d3c5b3f104fa42Dan Winshipgboolean g_input_stream_set_pending (GInputStream *stream, 167117de38f04de4f546215957b95d3c5b3f104fa42Dan Winship GError **error); 168117de38f04de4f546215957b95d3c5b3f104fa42Dan Winshipvoid g_input_stream_clear_pending (GInputStream *stream); 1693781343738de4abddf56982325a77bd70a98cd26Alexander Larsson 1703781343738de4abddf56982325a77bd70a98cd26Alexander LarssonG_END_DECLS 1713781343738de4abddf56982325a77bd70a98cd26Alexander Larsson 1723781343738de4abddf56982325a77bd70a98cd26Alexander Larsson#endif /* __G_INPUT_STREAM_H__ */ 173