PollableOutputStream#
Added in version 2.28.
- class PollableOutputStream(*args, **kwargs)#
Implementations: ConverterOutputStream, MemoryOutputStream, UnixOutputStream
GPollableOutputStream is implemented by OutputStreams that
can be polled for readiness to write. This can be used when
interfacing with a non-GIO API that expects
UNIX-file-descriptor-style asynchronous I/O rather than GIO-style.
Some classes may implement GPollableOutputStream but have only certain
instances of that class be pollable. If can_poll
returns false, then the behavior of other GPollableOutputStream methods is
undefined.
Methods#
- class PollableOutputStream
- can_poll() bool#
Checks if
streamis actually pollable. Some classes may implementPollableOutputStreambut have only certain instances of that class be pollable. If this method returnsFalse, then the behavior of otherPollableOutputStreammethods is undefined.For any given stream, the value returned by this method is constant; a stream cannot switch from pollable to non-pollable or vice versa.
Added in version 2.28.
- create_source(cancellable: Cancellable | None = None) Source#
Creates a
Sourcethat triggers whenstreamcan be written, orcancellableis triggered or an error occurs. The callback on the source is of theGPollableSourceFunctype.As with
is_writable(), it is possible that the stream may not actually be writable even after the source triggers, so you should usewrite_nonblocking()rather thanwrite()from the callback.The behaviour of this method is undefined if
can_poll()returnsFalseforstream.Added in version 2.28.
- Parameters:
cancellable – a
Cancellable, orNone
- is_writable() bool#
Checks if
streamcan be written.Note that some stream types may not be able to implement this 100% reliably, and it is possible that a call to
write()after this returnsTruewould still block. To guarantee non-blocking behavior, you should always usewrite_nonblocking(), which will return aWOULD_BLOCKerror rather than blocking.The behaviour of this method is undefined if
can_poll()returnsFalseforstream.Added in version 2.28.
- write_nonblocking(buffer: list[int], cancellable: Cancellable | None = None) int#
Attempts to write up to
countbytes frombuffertostream, as withwrite(). Ifstreamis not currently writable, this will immediately returnWOULD_BLOCK, and you can usecreate_source()to create aSourcethat will be triggered whenstreamis writable.Note that since this method never blocks, you cannot actually use
cancellableto cancel it. However, it will return an error ifcancellablehas already been cancelled when you call, which may happen if you call this method after a source triggers due to having been cancelled.Also note that if
WOULD_BLOCKis returned some underlying transports like D/TLS require that you re-send the samebufferandcountin the next write call.The behaviour of this method is undefined if
can_poll()returnsFalseforstream.- Parameters:
buffer – a buffer to write data from
cancellable – a
Cancellable, orNone
- writev_nonblocking(vectors: list[OutputVector], cancellable: Cancellable | None = None) tuple[PollableReturn, int]#
Attempts to write the bytes contained in the
n_vectorsvectorstostream, as withwritev(). Ifstreamis not currently writable, this will immediately return %``G_POLLABLE_RETURN_WOULD_BLOCK``, and you can usecreate_source()to create aSourcethat will be triggered whenstreamis writable.errorwill not be set in that case.Note that since this method never blocks, you cannot actually use
cancellableto cancel it. However, it will return an error ifcancellablehas already been cancelled when you call, which may happen if you call this method after a source triggers due to having been cancelled.Also note that if
WOULD_BLOCKis returned some underlying transports like D/TLS require that you re-send the samevectorsandn_vectorsin the next write call.The behaviour of this method is undefined if
can_poll()returnsFalseforstream.Added in version 2.60.
- Parameters:
vectors – the buffer containing the
OutputVectorto write.cancellable – a
Cancellable, orNone
Virtual Methods#
- class PollableOutputStream
- do_can_poll() bool#
Checks if
streamis actually pollable. Some classes may implementPollableOutputStreambut have only certain instances of that class be pollable. If this method returnsFalse, then the behavior of otherPollableOutputStreammethods is undefined.For any given stream, the value returned by this method is constant; a stream cannot switch from pollable to non-pollable or vice versa.
Added in version 2.28.
- do_create_source(cancellable: Cancellable | None = None) Source#
Creates a
Sourcethat triggers whenstreamcan be written, orcancellableis triggered or an error occurs. The callback on the source is of theGPollableSourceFunctype.As with
is_writable(), it is possible that the stream may not actually be writable even after the source triggers, so you should usewrite_nonblocking()rather thanwrite()from the callback.The behaviour of this method is undefined if
can_poll()returnsFalseforstream.Added in version 2.28.
- Parameters:
cancellable – a
Cancellable, orNone
- do_is_writable() bool#
Checks if
streamcan be written.Note that some stream types may not be able to implement this 100% reliably, and it is possible that a call to
write()after this returnsTruewould still block. To guarantee non-blocking behavior, you should always usewrite_nonblocking(), which will return aWOULD_BLOCKerror rather than blocking.The behaviour of this method is undefined if
can_poll()returnsFalseforstream.Added in version 2.28.
- do_write_nonblocking(buffer: list[int] | None = None) int#
Attempts to write up to
countbytes frombuffertostream, as withwrite(). Ifstreamis not currently writable, this will immediately returnWOULD_BLOCK, and you can usecreate_source()to create aSourcethat will be triggered whenstreamis writable.Note that since this method never blocks, you cannot actually use
cancellableto cancel it. However, it will return an error ifcancellablehas already been cancelled when you call, which may happen if you call this method after a source triggers due to having been cancelled.Also note that if
WOULD_BLOCKis returned some underlying transports like D/TLS require that you re-send the samebufferandcountin the next write call.The behaviour of this method is undefined if
can_poll()returnsFalseforstream.- Parameters:
buffer – a buffer to write data from
- do_writev_nonblocking(vectors: list[OutputVector]) tuple[PollableReturn, int]#
Attempts to write the bytes contained in the
n_vectorsvectorstostream, as withwritev(). Ifstreamis not currently writable, this will immediately return %``G_POLLABLE_RETURN_WOULD_BLOCK``, and you can usecreate_source()to create aSourcethat will be triggered whenstreamis writable.errorwill not be set in that case.Note that since this method never blocks, you cannot actually use
cancellableto cancel it. However, it will return an error ifcancellablehas already been cancelled when you call, which may happen if you call this method after a source triggers due to having been cancelled.Also note that if
WOULD_BLOCKis returned some underlying transports like D/TLS require that you re-send the samevectorsandn_vectorsin the next write call.The behaviour of this method is undefined if
can_poll()returnsFalseforstream.Added in version 2.60.
- Parameters:
vectors – the buffer containing the
OutputVectorto write.