Class MultipartInputStream
- All Implemented Interfaces:
Proxy
,AutoCloseable
,AutoCloseable
,PollableInputStream
This adds support for the multipart responses. For handling the
multiple parts the user needs to wrap the InputStream
obtained by
sending the request with a MultipartInputStream
and use
nextPart(org.gnome.gio.Cancellable)
before reading. Responses
which are not wrapped will be treated like non-multipart responses.
Note that although SoupMultipartInputStream
is a InputStream
,
you should not read directly from it, and the results are undefined
if you do.
-
Nested Class Summary
Modifier and TypeClassDescriptionstatic class
Inner class implementing a builder pattern to construct a GObject with properties.static class
Nested classes/interfaces inherited from class org.gnome.gio.FilterInputStream
FilterInputStream.FilterInputStreamClass, FilterInputStream.FilterInputStreamImpl
Nested classes/interfaces inherited from class org.gnome.gio.InputStream
InputStream.InputStreamClass, InputStream.InputStreamImpl
Nested classes/interfaces inherited from class org.gnome.gobject.GObject
GObject.NotifyCallback, GObject.ObjectClass
Nested classes/interfaces inherited from interface org.gnome.gio.PollableInputStream
PollableInputStream.PollableInputStreamImpl, PollableInputStream.PollableInputStreamInterface
-
Constructor Summary
ConstructorDescriptionMultipartInputStream
(MemorySegment address) Create a MultipartInputStream proxy instance for the provided memory address.MultipartInputStream
(Message msg, InputStream baseStream) -
Method Summary
Modifier and TypeMethodDescriptionprotected MultipartInputStream
asParent()
Returns this instance as if it were its parent type.static MultipartInputStream.Builder
<? extends MultipartInputStream.Builder> builder()
AMultipartInputStream.Builder
object constructs aMultipartInputStream
with the specified properties.Obtains the headers for the part currently being processed.static Type
getType()
Get the GType of the MultipartInputStream classnextPart
(@Nullable Cancellable cancellable) Obtains an input stream for the next part.void
nextPartAsync
(int ioPriority, @Nullable Cancellable cancellable, @Nullable AsyncReadyCallback callback) Obtains aInputStream
for the next request.nextPartFinish
(AsyncResult result) Finishes an asynchronous request for the next part.Methods inherited from class org.gnome.gio.FilterInputStream
getBaseStream, getCloseBaseStream, getMemoryLayout, setCloseBaseStream
Methods inherited from class org.gnome.gio.InputStream
clearPending, close, closeAsync, closeFinish, closeFn, hasPending, isClosed, read, readAll, readAllAsync, readAllFinish, readAsync, readBytes, readBytesAsync, readBytesFinish, readFinish, readFn, setPending, skip, skipAsync, skipFinish
Methods inherited from class org.gnome.gobject.GObject
addToggleRef, addWeakPointer, bindProperty, bindProperty, bindProperty, bindPropertyFull, bindPropertyFull, bindPropertyWithClosures, bindPropertyWithClosures, compatControl, connect, connect, connect, constructed, disconnect, dispatchPropertiesChanged, dispose, dupData, dupQdata, emit, emitNotify, finalize_, forceFloating, freezeNotify, get, getData, getProperty, getProperty, getProperty, getQdata, getv, interfaceFindProperty, interfaceInstallProperty, interfaceListProperties, isFloating, newInstance, newInstance, newInstance, newInstance, newv, notify_, notify_, notifyByPspec, onNotify, ref, refSink, removeToggleRef, removeWeakPointer, replaceData, replaceQdata, runDispose, set, setData, setDataFull, setProperty, setProperty, setProperty, setQdata, setQdataFull, setv, stealData, stealQdata, takeRef, thawNotify, unref, watchClosure, weakRef, weakUnref, withProperties
Methods inherited from class org.gnome.gobject.TypeInstance
callParent, callParent, getPrivate, readGClass, writeGClass
Methods inherited from class io.github.jwharm.javagi.base.ProxyInstance
equals, handle, hashCode
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface io.github.jwharm.javagi.gio.AutoCloseable
close
Methods inherited from interface org.gnome.gio.PollableInputStream
canPoll, createSource, isReadable, readNonblocking
-
Constructor Details
-
MultipartInputStream
Create a MultipartInputStream proxy instance for the provided memory address.- Parameters:
address
- the memory address of the native object
-
MultipartInputStream
public MultipartInputStream(Message msg, InputStream baseStream) throws UnsupportedPlatformException Creates a newSoupMultipartInputStream
that wraps theInputStream
obtained by sending theMessage
.Reads should not be done directly through this object, use the input streams returned by
nextPart(org.gnome.gio.Cancellable)
or its async counterpart instead.- Parameters:
msg
- theSoupMessage
the response is related to.baseStream
- theGInputStream
returned by sending the request.- Throws:
UnsupportedPlatformException
- when run on a platform other than linux
-
-
Method Details
-
getType
-
asParent
Returns this instance as if it were its parent type. This is mostly synonymous to the Javasuper
keyword, but will set the native typeclass function pointers to the parent type. When overriding a native virtual method in Java, "chaining up" withsuper.methodName()
doesn't work, because it invokes the overridden function pointer again. To chain up, callasParent().methodName()
. This will call the native function pointer of this virtual method in the typeclass of the parent type.- Overrides:
asParent
in classFilterInputStream
-
getHeaders
Obtains the headers for the part currently being processed.Note that the
MessageHeaders
that are returned are owned by theSoupMultipartInputStream
and will be replaced when a call is made tonextPart(org.gnome.gio.Cancellable)
or its async counterpart, so if keeping the headers is required, a copy must be made.Note that if a part had no headers at all an empty
MessageHeaders
will be returned.- Returns:
- a
SoupMessageHeaders
containing the headers for the part currently being processed ornull
if the headers failed to parse.
-
nextPart
Obtains an input stream for the next part.When dealing with a multipart response the input stream needs to be wrapped in a
SoupMultipartInputStream
and this function or its async counterpart need to be called to obtain the first part for reading.After calling this function,
getHeaders()
can be used to obtain the headers for the first part. A read of 0 bytes indicates the end of the part; a new call to this function should be done at that point, to obtain the next part.error
will only be set if an error happens during a read,null
is a valid return value otherwise.- Parameters:
cancellable
- aGCancellable
- Returns:
- a new
GInputStream
, ornull
if there are no more parts - Throws:
GErrorException
- seeGError
-
nextPartAsync
public void nextPartAsync(int ioPriority, @Nullable @Nullable Cancellable cancellable, @Nullable @Nullable AsyncReadyCallback callback) Obtains aInputStream
for the next request.See
nextPart(org.gnome.gio.Cancellable)
for details on the workflow.- Parameters:
ioPriority
- the I/O priority for the request.cancellable
- aGCancellable
.callback
- callback to call when request is satisfied.
-
nextPartFinish
Finishes an asynchronous request for the next part.- Parameters:
result
- aGAsyncResult
.- Returns:
- a newly created
InputStream
for reading the next part ornull
if there are no more parts. - Throws:
GErrorException
- seeGError
-
builder
AMultipartInputStream.Builder
object constructs aMultipartInputStream
with the specified properties. Use the variousset...()
methods to set properties, and finish construction withMultipartInputStream.Builder.build()
.
-