接口
GioPollableOutputStream
自:2.28
描述 [源代码]
interface Gio.PollableOutputStream : Gio.OutputStream
GPollableOutputStream
由可以实现轮询写入就绪状态的自定义GOutputStream
实现。当与非GIO API进行交互,该API期望使用Unix文件描述符风格的异步I/O而不是GIO-style时,这非常有用。
某些类可能实现了GPollableOutputStream
,但只有该类的某些实例是可轮询的。如果g_pollable_output_stream_can_poll()
返回false,则其他GPollableOutputStream
方法的行 diligentlyie行为是未定义的。
自:2.28
先决条件
为了实现PollableOutputStream,您的类型必须继承自GOutputStream
。
实例方法
g_pollable_output_stream_can_poll
检查是否可以轮询stream
。某些类可能实现了GPollableOutputStream
,但只有该类的某些实例是可轮询的。如果此方法返回FALSE
,则其他GPollableOutputStream
方法的行为未定义。
自:2.28
g_pollable_output_stream_create_source
创建一个在stream
可以写入或cancellable
触发或发生错误时触发的GSource
。源上的回调是GPollableSourceFunc
类型。
自:2.28
g_pollable_output_stream_write_nonblocking
尝试从buffer
将多达count
个字节写入stream
,就如同使用g_output_stream_write()
。如果stream
当前不可写入,此操作将立即返回G_IO_ERROR_WOULD_BLOCK
,然后您可以使用g_pollable_output_stream_create_source()
来创建一个将在stream
可写入时触发的GSource
。
g_pollable_output_stream_writev_nonblocking
尝试将包含在n_vectors
vectors
中的字节写入stream
,就如同使用g_output_stream_writev()
。如果stream
当前不可写入,此操作将立即返回<%=code>G_POLLABLE_RETURN_WOULD_BLOCK,并您可以使用g_pollable_output_stream_create_source()
来创建一个将在stream
可写入时触发的GSource
。在这种情况下不会设置error
。
自:2.60
接口结构
struct GioPollableOutputStreamInterface {
GTypeInterface g_iface;
gboolean (* can_poll) (
GPollableOutputStream* stream
);
gboolean (* is_writable) (
GPollableOutputStream* stream
);
GSource* (* create_source) (
GPollableOutputStream* stream,
GCancellable* cancellable
);
gssize (* write_nonblocking) (
GPollableOutputStream* stream,
void* buffer,
gsize count,
GError** error
);
GPollableReturn (* writev_nonblocking) (
GPollableOutputStream* stream,
const GOutputVector* vectors,
gsize n_vectors,
gsize* bytes_written,
GError** error
);
}
轮询输出流接口。
can_poll
的默认实现总是返回TRUE
。
write_nonblocking
的默认实现会调用 g_pollable_output_stream_is_writable(),如果返回 TRUE
则会调用 g_output_stream_write()
。这意味着只有当你的 is_writable
实现可能在流实际上不可写时返回 TRUE
的情况下才需要重写它。
writev_nonblocking
的默认实现会为每个向量调用 g_pollable_output_stream_write_nonblocking()
,并将返回值和错误(如果设置了)转换为 GPollableReturn
。在可能的情况下,你应该重写这一实现以避免分配 GError
来返回 G_IO_ERROR_WOULD_BLOCK
。
接口成员
g_iface |
|
父接口。 |
|
can_poll |
|
检查 |
|
is_writable |
|
检查流是否可写。 |
|
create_source |
|
创建一个 |
|
write_nonblocking |
|
执行非阻塞写入或返回 |
|
writev_nonblocking |
|
执行向量非阻塞写入,或返回 |
虚方法
Gio.PollableOutputStream.can_poll
检查是否可以轮询stream
。某些类可能实现了GPollableOutputStream
,但只有该类的某些实例是可轮询的。如果此方法返回FALSE
,则其他GPollableOutputStream
方法的行为未定义。
自:2.28
Gio.PollableOutputStream.create_source
创建一个在stream
可以写入或cancellable
触发或发生错误时触发的GSource
。源上的回调是GPollableSourceFunc
类型。
自:2.28
Gio.PollableOutputStream.write_nonblocking
尝试从buffer
将多达count
个字节写入stream
,就如同使用g_output_stream_write()
。如果stream
当前不可写入,此操作将立即返回G_IO_ERROR_WOULD_BLOCK
,然后您可以使用g_pollable_output_stream_create_source()
来创建一个将在stream
可写入时触发的GSource
。
Gio.PollableOutputStream.writev_nonblocking
尝试将包含在n_vectors
vectors
中的字节写入stream
,就如同使用g_output_stream_writev()
。如果stream
当前不可写入,此操作将立即返回<%=code>G_POLLABLE_RETURN_WOULD_BLOCK,并您可以使用g_pollable_output_stream_create_source()
来创建一个将在stream
可写入时触发的GSource
。在这种情况下不会设置error
。
自:2.60