GioIOStream

从 2.22 开始

描述 [src]

abstract class Gio.IOStream : GObject.Object
{
  /* No available fields */
}

GIOStream 表示具有读写流的对象。通常,这两个流充当独立的输入和输出流,但它们共享一些公共资源和状态。例如,对于可寻址流,这两个流都可以使用相同 的位置。

GIOStream 对象的示例有 GSocketConnection(它表示双向网络连接);以及 GFileIOStream(它表示以读写 模式打开的文件句柄)。

要执行实际的读取和写入,您需要使用 g_io_stream_get_input_stream()g_io_stream_get_output_stream() 获取子流。

GIOStream 对象拥有输入和输出流,而不是反过来,因此保持子流存在不会使 GIOStream 对象存在。如果 GIOStream 对象被释放,它将被关闭,从而关闭子流,因此即使子流保持存在,它们仍会始终对所有 操作返回 G_IO_ERROR_CLOSED

要关闭流,请使用 g_io_stream_close(),它将关闭通用流对象以及各个子流。您还可以关闭各个子流本身。在大多数情况下,这只会将子流标记为已关闭,因此其进一步的 I/O 操作会失败,但 GIOStream 中的通用状态仍可能是打开的。然而,某些流可能支持“半关闭”的状态,其中流的一个方向实际上已 关闭。

GIOStream 或其子流上的另一个操作仍在进行时,无法启动对 GIOStream 的操作。具体来说,应用程序可以同时从 GInputStream 读取并写入 GOutputStream(在单独的线程中或作为同一线程中的异步操作),但应用程序无法在 GIOStreamGInputStreamGOutputStream 操作进行时启动任何 GIOStream 操作,并且应用程序无法在 GIOStream 操作进行时启动任何 GInputStreamGOutputStream 操作。 

这是与给定的 GMainContext(操作开始时的线程默认上下文)关联的个别流操作产品的产物,而非整个流与单个 GMainContext 关联。

GIO 可能从其他(工作进程)线程对 GIOStreams 运行操作,这可能会在包装流(如 GBufferedInputStreamGTlsConnection)的行为中暴露给应用程序代码。通过此类包装 API,应用程序代码仅可在包装流闲置时对基础(包装)流运行操作。请注意此类操作语义可能未明确定义,这可能是由于包装流使基础流处于的状态(尽管保证它们不会崩溃)。

可用版本:2.22

父类

函数

g_io_stream_splice_finish

结束异步 io 流拼接操作。

版本:2.28

实例方法

g_io_stream_clear_pending

清除 stream 上的等待标志。

从 2.22 开始

g_io_stream_close

关闭流,释放与之相关的资源。这也将关闭单独的输入和输出流(如果它们尚未关闭)。

从 2.22 开始

g_io_stream_close_async

请求异步关闭流,释放与之相关的资源。操作完成后,将调用 callback。然后可以调用 g_io_stream_close_finish() 以获取操作的结果。

从 2.22 开始

g_io_stream_close_finish

关闭流。

从 2.22 开始

g_io_stream_get_input_stream

获取此对象的输入流。用于执行读取操作。

从 2.22 开始

g_io_stream_get_output_stream

获取此对象的输出流。用于执行写入操作。

从 2.22 开始

g_io_stream_has_pending

检查流是否具有等待的操作。

从 2.22 开始

g_io_stream_is_closed

检查流是否关闭。

从 2.22 开始

g_io_stream_set_pending

stream 设置为具有等待的操作。如果等待标志已设置或 stream 已关闭,则它将返回 FALSE 并设置 error

从 2.22 开始

g_io_stream_splice_async

异步将 stream1 的输出流拼接至 stream2 的输入流,并将 stream2 的输出流拼接至 stream1 的输入流。

版本:2.28

GObject(43)继承的方法

请参阅 GObject 以获取方法的完整列表。

属性

Gio.IOStream:closed

流是否已关闭。

从 2.22 开始

Gio.IOStream:input-stream

要从中读取的 GInputStream

从 2.22 开始

Gio.IOStream:output-stream

要写入的 GOutputStream

从 2.22 开始

信号

GObject(1)继承的信号
GObject::notify

在通过 g_object_set_property()、g_object_set() 等方法为对象的某个属性设置值时,将发出信号 notify。

类结构

struct GioIOStreamClass {
  GObjectClass parent_class;
  GInputStream* (* get_input_stream) (
    GIOStream* stream
  );
  GOutputStream* (* get_output_stream) (
    GIOStream* stream
  );
  gboolean (* close_fn) (
    GIOStream* stream,
    GCancellable* cancellable,
    GError** error
  );
  void (* close_async) (
    GIOStream* stream,
    int io_priority,
    GCancellable* cancellable,
    GAsyncReadyCallback callback,
    gpointer user_data
  );
  gboolean (* close_finish) (
    GIOStream* stream,
    GAsyncResult* result,
    GError** error
  );
  void (* _g_reserved1) (
void
  );
  void (* _g_reserved2) (
void
  );
  void (* _g_reserved3) (
void
  );
  void (* _g_reserved4) (
void
  );
  void (* _g_reserved5) (
void
  );
  void (* _g_reserved6) (
void
  );
  void (* _g_reserved7) (
void
  );
  void (* _g_reserved8) (
void
  );
  void (* _g_reserved9) (
void
  );
  void (* _g_reserved10) (
void
  );
  
}

暂无描述。

类成员
parent_class: GObjectClass

暂无描述。

get_input_stream: GInputStream* (* get_input_stream) ( GIOStream* stream )

暂无描述。

get_output_stream: GOutputStream* (* get_output_stream) ( GIOStream* stream )

暂无描述。

close_fn: gboolean (* close_fn) ( GIOStream* stream, GCancellable* cancellable, GError** error )

暂无描述。

close_async:void (* close_async) (GIOStream* stream, int io_priority, GCancellable* cancellable, GAsyncReadyCallback callback, gpointer user_data )

暂无描述。

close_finish:gboolean (* close_finish) (GIOStream* stream, GAsyncResult* result, GError** error )

暂无描述。

_g_reserved1:void (* _g_reserved1) (void )

暂无描述。

_g_reserved2:void (* _g_reserved2) (void )

暂无描述。

_g_reserved3:void (* _g_reserved3) (void )

暂无描述。

_g_reserved4:void (* _g_reserved4) (void )

暂无描述。

_g_reserved5:void (* _g_reserved5) (void )

暂无描述。

_g_reserved6:void (* _g_reserved6) (void )

暂无描述。

_g_reserved7:void (* _g_reserved7) (void )

暂无描述。

_g_reserved8:void (* _g_reserved8) (void )

暂无描述。

_g_reserved9:void (* _g_reserved9) (void )

暂无描述。

_g_reserved10:void (* _g_reserved10) (void )

暂无描述。

Virtual 方法

Gio.IOStreamClass.close_async

请求异步关闭流,释放与之相关的资源。操作完成后,将调用 callback。然后可以调用 g_io_stream_close_finish() 以获取操作的结果。

从 2.22 开始

Gio.IOStreamClass.close_finish

关闭流。

从 2.22 开始

Gio.IOStreamClass.close_fn
暂无描述。

Gio.IOStreamClass.get_input_stream

获取此对象的输入流。用于执行读取操作。

从 2.22 开始

Gio.IOStreamClass.get_output_stream

获取此对象的输出流。用于执行写入操作。

从 2.22 开始