Interface PollableInputStream
- All Superinterfaces:
Proxy
- All Known Implementing Classes:
ConverterInputStream
,MemoryInputStream
,MultipartInputStream
,PollableInputStream.PollableInputStreamImpl
,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 canPoll()
returns false, then the behavior of other GPollableInputStream
methods is
undefined.
-
Nested Class Summary
Modifier and TypeInterfaceDescriptionstatic class
The PollableInputStreamImpl type represents a native instance of the PollableInputStream interface.static class
The interface for pollable input streams. -
Method Summary
Modifier and TypeMethodDescriptiondefault boolean
canPoll()
Checks if this PollableInputStream is actually pollable.default Source
createSource
(@Nullable Cancellable cancellable) Creates aGSource
that triggers when this PollableInputStream can be read, orcancellable
is triggered or an error occurs.static Type
getType()
Get the GType of the PollableInputStream classdefault boolean
Checks if this PollableInputStream can be read.default long
readNonblocking
(Out<byte[]> buffer, @Nullable Cancellable cancellable) Attempts to read up tocount
bytes from this PollableInputStream intobuffer
, as with g_input_stream_read().
-
Method Details
-
getType
-
canPoll
default boolean canPoll()Checks if this PollableInputStream is actually pollable. Some classes may implementGPollableInputStream
but have only certain instances of that class be pollable. If this method returnsfalse
, then the behavior of otherGPollableInputStream
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.
- Returns:
true
if this PollableInputStream is pollable,false
if not.
-
createSource
Creates aGSource
that triggers when this PollableInputStream can be read, orcancellable
is triggered or an error occurs. The callback on the source is of theGPollableSourceFunc
type.As with g_pollable_input_stream_is_readable(), it is possible that the stream may not actually be readable even after the source triggers, so you should use g_pollable_input_stream_read_nonblocking() rather than g_input_stream_read() from the callback.
The behaviour of this method is undefined if g_pollable_input_stream_can_poll() returns
false
for this PollableInputStream.- Parameters:
cancellable
- aGCancellable
, ornull
- Returns:
- a new
GSource
-
isReadable
default boolean isReadable()Checks if this PollableInputStream 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 g_input_stream_read() after this returns
true
would still block. To guarantee non-blocking behavior, you should always use g_pollable_input_stream_read_nonblocking(), which will return aIOErrorEnum.WOULD_BLOCK
error rather than blocking.The behaviour of this method is undefined if g_pollable_input_stream_can_poll() returns
false
for this PollableInputStream.- Returns:
true
if this PollableInputStream is readable,false
if not. If an error has occurred on this PollableInputStream, this will result in g_pollable_input_stream_is_readable() returningtrue
, and the next attempt to read will return the error.
-
readNonblocking
default long readNonblocking(Out<byte[]> buffer, @Nullable @Nullable Cancellable cancellable) throws GErrorException Attempts to read up tocount
bytes from this PollableInputStream intobuffer
, as with g_input_stream_read(). If this PollableInputStream is not currently readable, this will immediately returnIOErrorEnum.WOULD_BLOCK
, and you can use g_pollable_input_stream_create_source() to create aGSource
that will be triggered when this PollableInputStream 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 g_pollable_input_stream_can_poll() returns
false
for this PollableInputStream.- Parameters:
buffer
- a buffer to read data into (which should be at leastcount
bytes long).cancellable
- aGCancellable
, ornull
- Returns:
- the number of bytes read, or -1 on error (including
IOErrorEnum.WOULD_BLOCK
). - Throws:
GErrorException
- seeGError
-