PollableOutputStream
Added in version 2.28.
- class PollableOutputStream(*args, **kwargs)
Implementations: ConverterOutputStream
, MemoryOutputStream
, UnixOutputStream
GPollableOutputStream
is implemented by OutputStream
’s 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
stream
is actually pollable. Some classes may implementPollableOutputStream
but have only certain instances of that class be pollable. If this method returnsFalse
, then the behavior of otherPollableOutputStream
methods 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
Source
that triggers whenstream
can be written, orcancellable
is triggered or an error occurs. The callback on the source is of theGPollableSourceFunc
type.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()
returnsFalse
forstream
.Added in version 2.28.
- Parameters:
cancellable – a
Cancellable
, orNone
- is_writable() bool
Checks if
stream
can 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 returnsTrue
would still block. To guarantee non-blocking behavior, you should always usewrite_nonblocking()
, which will return aWOULD_BLOCK
error rather than blocking.The behaviour of this method is undefined if
can_poll()
returnsFalse
forstream
.Added in version 2.28.
- write_nonblocking(buffer: Sequence[int], cancellable: Cancellable | None = None) int
Attempts to write up to
count
bytes frombuffer
tostream
, as withwrite()
. Ifstream
is not currently writable, this will immediately returnWOULD_BLOCK
, and you can usecreate_source()
to create aSource
that will be triggered whenstream
is writable.Note that since this method never blocks, you cannot actually use
cancellable
to cancel it. However, it will return an error ifcancellable
has 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_BLOCK
is returned some underlying transports like D/TLS require that you re-send the samebuffer
andcount
in the next write call.The behaviour of this method is undefined if
can_poll()
returnsFalse
forstream
.- Parameters:
buffer – a buffer to write data from
cancellable – a
Cancellable
, orNone
- writev_nonblocking(vectors: Sequence[OutputVector], cancellable: Cancellable | None = None) tuple[PollableReturn, int]
Attempts to write the bytes contained in the
n_vectors
vectors
tostream
, as withwritev()
. Ifstream
is not currently writable, this will immediately return %``G_POLLABLE_RETURN_WOULD_BLOCK``, and you can usecreate_source()
to create aSource
that will be triggered whenstream
is writable.error
will not be set in that case.Note that since this method never blocks, you cannot actually use
cancellable
to cancel it. However, it will return an error ifcancellable
has 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_BLOCK
is returned some underlying transports like D/TLS require that you re-send the samevectors
andn_vectors
in the next write call.The behaviour of this method is undefined if
can_poll()
returnsFalse
forstream
.Added in version 2.60.
- Parameters:
vectors – the buffer containing the
OutputVector
to write.cancellable – a
Cancellable
, orNone
Virtual Methods
- class PollableOutputStream
- do_can_poll() bool
Checks if
stream
is actually pollable. Some classes may implementPollableOutputStream
but have only certain instances of that class be pollable. If this method returnsFalse
, then the behavior of otherPollableOutputStream
methods 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
Source
that triggers whenstream
can be written, orcancellable
is triggered or an error occurs. The callback on the source is of theGPollableSourceFunc
type.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()
returnsFalse
forstream
.Added in version 2.28.
- Parameters:
cancellable – a
Cancellable
, orNone
- do_is_writable() bool
Checks if
stream
can 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 returnsTrue
would still block. To guarantee non-blocking behavior, you should always usewrite_nonblocking()
, which will return aWOULD_BLOCK
error rather than blocking.The behaviour of this method is undefined if
can_poll()
returnsFalse
forstream
.Added in version 2.28.
- do_write_nonblocking(buffer: Sequence[int] | None = None) int
Attempts to write up to
count
bytes frombuffer
tostream
, as withwrite()
. Ifstream
is not currently writable, this will immediately returnWOULD_BLOCK
, and you can usecreate_source()
to create aSource
that will be triggered whenstream
is writable.Note that since this method never blocks, you cannot actually use
cancellable
to cancel it. However, it will return an error ifcancellable
has 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_BLOCK
is returned some underlying transports like D/TLS require that you re-send the samebuffer
andcount
in the next write call.The behaviour of this method is undefined if
can_poll()
returnsFalse
forstream
.- Parameters:
buffer – a buffer to write data from
- do_writev_nonblocking(vectors: Sequence[OutputVector]) tuple[PollableReturn, int]
Attempts to write the bytes contained in the
n_vectors
vectors
tostream
, as withwritev()
. Ifstream
is not currently writable, this will immediately return %``G_POLLABLE_RETURN_WOULD_BLOCK``, and you can usecreate_source()
to create aSource
that will be triggered whenstream
is writable.error
will not be set in that case.Note that since this method never blocks, you cannot actually use
cancellable
to cancel it. However, it will return an error ifcancellable
has 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_BLOCK
is returned some underlying transports like D/TLS require that you re-send the samevectors
andn_vectors
in the next write call.The behaviour of this method is undefined if
can_poll()
returnsFalse
forstream
.Added in version 2.60.
- Parameters:
vectors – the buffer containing the
OutputVector
to write.