Interface PollableOutputStream
- All Superinterfaces:
Proxy
- All Known Implementing Classes:
ConverterOutputStream,MemoryOutputStream,PollableOutputStream.PollableOutputStream$Impl
GPollableOutputStream is implemented by OutputStreams 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 canPoll()
returns false, then the behavior of other GPollableOutputStream methods is
undefined.
- Since:
- 2.28
-
Nested Class Summary
Nested ClassesModifier and TypeInterfaceDescriptionstatic classThe PollableOutputStream$Impl type represents a native instance of the PollableOutputStream interface.static classThe interface for pollable output streams. -
Method Summary
Modifier and TypeMethodDescriptiondefault booleancanPoll()Checks if this PollableOutputStream is actually pollable.default SourcecreateSource(@Nullable Cancellable cancellable) Creates aGSourcethat triggers when this PollableOutputStream can be written, orcancellableis triggered or an error occurs.static @Nullable TypegetType()Get the GType of the PollableOutputStream classdefault booleanChecks if this PollableOutputStream can be written.default longwriteNonblocking(@org.jspecify.annotations.Nullable byte @Nullable [] buffer, @Nullable Cancellable cancellable) Attempts to write up tocountbytes frombuffertostream,as with g_output_stream_write().default PollableReturnwritevNonblocking(@Nullable OutputVector @Nullable [] vectors, @Nullable Out<Long> bytesWritten, @Nullable Cancellable cancellable) Attempts to write the bytes contained in thenVectorsvectorstostream,as with g_output_stream_writev().
-
Method Details
-
getType
-
canPoll
default boolean canPoll()Checks if this PollableOutputStream is actually pollable. Some classes may implementGPollableOutputStreambut have only certain instances of that class be pollable. If this method returnsfalse, then the behavior of otherGPollableOutputStreammethods 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 PollableOutputStream is pollable,falseif not.- Since:
- 2.28
-
createSource
Creates aGSourcethat triggers when this PollableOutputStream can be written, orcancellableis triggered or an error occurs. The callback on the source is of theGPollableSourceFunctype.As with g_pollable_output_stream_is_writable(), it is possible that the stream may not actually be writable even after the source triggers, so you should use g_pollable_output_stream_write_nonblocking() rather than g_output_stream_write() from the callback.
The behaviour of this method is undefined if g_pollable_output_stream_can_poll() returns
falseforstream.- Parameters:
cancellable- aGCancellable, ornull- Returns:
- a new
GSource - Since:
- 2.28
-
isWritable
default boolean isWritable()Checks if this PollableOutputStream 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 g_output_stream_write() after this returns
truewould still block. To guarantee non-blocking behavior, you should always use g_pollable_output_stream_write_nonblocking(), which will return aIOErrorEnum.WOULD_BLOCKerror rather than blocking.The behaviour of this method is undefined if g_pollable_output_stream_can_poll() returns
falseforstream.- Returns:
trueif this PollableOutputStream is writable,falseif not. If an error has occurred onstream,this will result in g_pollable_output_stream_is_writable() returningtrue, and the next attempt to write will return the error.- Since:
- 2.28
-
writeNonblocking
default long writeNonblocking(@org.jspecify.annotations.Nullable byte @Nullable [] buffer, @Nullable Cancellable cancellable) throws GErrorException Attempts to write up tocountbytes frombuffertostream,as with g_output_stream_write(). If this PollableOutputStream is not currently writable, this will immediately returnIOErrorEnum.WOULD_BLOCK, and you can use g_pollable_output_stream_create_source() to create aGSourcethat will be triggered when this PollableOutputStream is writable.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.Also note that if
IOErrorEnum.WOULD_BLOCKis returned some underlying transports like D/TLS require that you re-send the samebufferandcountin the next write call.The behaviour of this method is undefined if g_pollable_output_stream_can_poll() returns
falseforstream.- Parameters:
buffer- a buffer to write data fromcancellable- aGCancellable, ornull- Returns:
- the number of bytes written, or -1 on error (including
IOErrorEnum.WOULD_BLOCK). - Throws:
GErrorException- seeGError
-
writevNonblocking
default PollableReturn writevNonblocking(@Nullable OutputVector @Nullable [] vectors, @Nullable Out<Long> bytesWritten, @Nullable Cancellable cancellable) throws GErrorException Attempts to write the bytes contained in thenVectorsvectorstostream,as with g_output_stream_writev(). If this PollableOutputStream is not currently writable, this will immediately return %GPOLLABLERETURNWOULDBLOCK,and you can use g_pollable_output_stream_create_source() to create aGSourcethat will be triggered when this PollableOutputStream is writable.errorwill not be set in that case.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.Also note that if
PollableReturn.WOULD_BLOCKis returned some underlying transports like D/TLS require that you re-send the samevectorsandnVectorsin the next write call.The behaviour of this method is undefined if g_pollable_output_stream_can_poll() returns
falseforstream.- Parameters:
vectors- the buffer containing theGOutputVectorsto write.bytesWritten- location to store the number of bytes that were written to the streamcancellable- aGCancellable, ornull- Returns:
- %
GPOLLABLERETURNOKon success,PollableReturn.WOULD_BLOCKif the stream is not currently writable (anderroris not set), orPollableReturn.FAILEDif there was an error in which caseerrorwill be set. - Throws:
GErrorException- seeGError- Since:
- 2.60
-