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)继承的方法
[]

属性

Gio.IOStream:closed

流是否已关闭。

从 2.22 开始

Gio.IOStream:input-stream

要从中读取的 GInputStream

从 2.22 开始

Gio.IOStream:output-stream

要写入的 GOutputStream

从 2.22 开始

[]

信号

GObject(1)继承的信号

类结构

[]

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 开始