PollableInputStream
Added in version 2.28.
- class PollableInputStream(*args, **kwargs)
Implementations: ConverterInputStream
, MemoryInputStream
, UnixInputStream
GPollableInputStream
is implemented by InputStream
’s that
can be polled for readiness to read. 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 GPollableInputStream
but have only certain
instances of that class be pollable. If can_poll
returns false, then the behavior of other GPollableInputStream
methods is
undefined.
Methods
- class PollableInputStream
- can_poll() bool
Checks if
stream
is actually pollable. Some classes may implementPollableInputStream
but have only certain instances of that class be pollable. If this method returnsFalse
, then the behavior of otherPollableInputStream
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 read, orcancellable
is triggered or an error occurs. The callback on the source is of theGPollableSourceFunc
type.As with
is_readable()
, it is possible that the stream may not actually be readable even after the source triggers, so you should useread_nonblocking()
rather thanread()
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_readable() bool
Checks if
stream
can be read.Note that some stream types may not be able to implement this 100% reliably, and it is possible that a call to
read()
after this returnsTrue
would still block. To guarantee non-blocking behavior, you should always useread_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.
- read_nonblocking(cancellable: Cancellable | None = None) tuple[int, bytes]
Attempts to read up to
count
bytes fromstream
intobuffer
, as withread()
. Ifstream
is not currently readable, this will immediately returnWOULD_BLOCK
, and you can usecreate_source()
to create aSource
that will be triggered whenstream
is readable.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.The behaviour of this method is undefined if
can_poll()
returnsFalse
forstream
.- Parameters:
cancellable – a
Cancellable
, orNone
Virtual Methods
- class PollableInputStream
- do_can_poll() bool
Checks if
stream
is actually pollable. Some classes may implementPollableInputStream
but have only certain instances of that class be pollable. If this method returnsFalse
, then the behavior of otherPollableInputStream
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 read, orcancellable
is triggered or an error occurs. The callback on the source is of theGPollableSourceFunc
type.As with
is_readable()
, it is possible that the stream may not actually be readable even after the source triggers, so you should useread_nonblocking()
rather thanread()
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_readable() bool
Checks if
stream
can be read.Note that some stream types may not be able to implement this 100% reliably, and it is possible that a call to
read()
after this returnsTrue
would still block. To guarantee non-blocking behavior, you should always useread_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_read_nonblocking() tuple[int, bytes]
Attempts to read up to
count
bytes fromstream
intobuffer
, as withread()
. Ifstream
is not currently readable, this will immediately returnWOULD_BLOCK
, and you can usecreate_source()
to create aSource
that will be triggered whenstream
is readable.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.The behaviour of this method is undefined if
can_poll()
returnsFalse
forstream
.