Interface PollableInputStream
- All Superinterfaces:
Proxy
- All Known Implementing Classes:
ConverterInputStream,MemoryInputStream,MultipartInputStream,PollableInputStream.PollableInputStream$Impl
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 canPoll()
returns false, then the behavior of other GPollableInputStream methods is
undefined.
- Since:
- 2.28
-
Nested Class Summary
Nested ClassesModifier and TypeInterfaceDescriptionstatic classThe PollableInputStream$Impl type represents a native instance of the PollableInputStream interface.static classThe interface for pollable input streams. -
Method Summary
Modifier and TypeMethodDescriptiondefault booleancanPoll()Checks if this PollableInputStream is actually pollable.default SourcecreateSource(@Nullable Cancellable cancellable) Creates aGSourcethat triggers when this PollableInputStream can be read, orcancellableis triggered or an error occurs.static @Nullable TypegetType()Get the GType of the PollableInputStream classdefault booleanChecks if this PollableInputStream can be read.default longreadNonblocking(@Nullable Out<byte[]> buffer, @Nullable Cancellable cancellable) Attempts to read up tocountbytes 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 implementGPollableInputStreambut have only certain instances of that class be pollable. If this method returnsfalse, then the behavior of otherGPollableInputStreammethods 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:
trueif this PollableInputStream is pollable,falseif not.- Since:
- 2.28
-
createSource
Creates aGSourcethat triggers when this PollableInputStream can be read, orcancellableis triggered or an error occurs. The callback on the source is of theGPollableSourceFunctype.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
falseforstream.- Parameters:
cancellable- aGCancellable, ornull- Returns:
- a new
GSource - Since:
- 2.28
-
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
truewould still block. To guarantee non-blocking behavior, you should always use g_pollable_input_stream_read_nonblocking(), which will return aIOErrorEnum.WOULD_BLOCKerror rather than blocking.The behaviour of this method is undefined if g_pollable_input_stream_can_poll() returns
falseforstream.- Returns:
trueif this PollableInputStream is readable,falseif not. If an error has occurred onstream,this will result in g_pollable_input_stream_is_readable() returningtrue, and the next attempt to read will return the error.- Since:
- 2.28
-
readNonblocking
default long readNonblocking(@Nullable Out<byte[]> buffer, @Nullable Cancellable cancellable) throws GErrorException Attempts to read up tocountbytes 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 aGSourcethat will be triggered when this PollableInputStream is 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 g_pollable_input_stream_can_poll() returns
falseforstream.- Parameters:
buffer- a buffer to read data into (which should be at leastcountbytes long).cancellable- aGCancellable, ornull- Returns:
- the number of bytes read, or -1 on error (including
IOErrorEnum.WOULD_BLOCK). - Throws:
GErrorException- seeGError
-