PollableInputStream#
Added in version 2.28.
- class PollableInputStream(*args, **kwargs)#
Implementations: ConverterInputStream, MemoryInputStream, UnixInputStream
GPollableInputStream is implemented by InputStreams 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
streamis actually pollable. Some classes may implementPollableInputStreambut have only certain instances of that class be pollable. If this method returnsFalse, then the behavior of otherPollableInputStreammethods 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 read, orcancellableis triggered or an error occurs. The callback on the source is of theGPollableSourceFunctype.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()returnsFalseforstream.Added in version 2.28.
- Parameters:
cancellable – a
Cancellable, orNone
- is_readable() bool#
Checks if
streamcan 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 returnsTruewould still block. To guarantee non-blocking behavior, you should always useread_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.
- read_nonblocking(cancellable: Cancellable | None = None) tuple[int, list[int]]#
Attempts to read up to
countbytes fromstreamintobuffer, as withread(). Ifstreamis not currently readable, this will immediately returnWOULD_BLOCK, and you can usecreate_source()to create aSourcethat will be triggered whenstreamis readable.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.The behaviour of this method is undefined if
can_poll()returnsFalseforstream.- Parameters:
cancellable – a
Cancellable, orNone
Virtual Methods#
- class PollableInputStream
- do_can_poll() bool#
Checks if
streamis actually pollable. Some classes may implementPollableInputStreambut have only certain instances of that class be pollable. If this method returnsFalse, then the behavior of otherPollableInputStreammethods 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 read, orcancellableis triggered or an error occurs. The callback on the source is of theGPollableSourceFunctype.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()returnsFalseforstream.Added in version 2.28.
- Parameters:
cancellable – a
Cancellable, orNone
- do_is_readable() bool#
Checks if
streamcan 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 returnsTruewould still block. To guarantee non-blocking behavior, you should always useread_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_read_nonblocking() tuple[int, list[int] | None]#
Attempts to read up to
countbytes fromstreamintobuffer, as withread(). Ifstreamis not currently readable, this will immediately returnWOULD_BLOCK, and you can usecreate_source()to create aSourcethat will be triggered whenstreamis readable.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.The behaviour of this method is undefined if
can_poll()returnsFalseforstream.