接口
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