Class MultipartInputStream
- All Implemented Interfaces:
AutoCloseable, PollableInputStream, Proxy, AutoCloseable
Handles streams of multipart messages.
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(Cancellable) before reading. Responses
which are not wrapped will be treated like non-multipart responses.
Note that although MultipartInputStream is a InputStream,
you should not read directly from it, and the results are undefined
if you do.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classInner class implementing a builder pattern to construct a GObject with properties.static classNested classes/interfaces inherited from class FilterInputStream
FilterInputStream.FilterInputStream$Impl, FilterInputStream.FilterInputStreamClassNested classes/interfaces inherited from class InputStream
InputStream.InputStream$Impl, InputStream.InputStreamClassNested classes/interfaces inherited from class GObject
GObject.NotifyCallback, GObject.ObjectClassNested classes/interfaces inherited from interface PollableInputStream
PollableInputStream.PollableInputStream$Impl, PollableInputStream.PollableInputStreamInterface -
Constructor Summary
ConstructorsConstructorDescriptionCreate a new MultipartInputStream.MultipartInputStream(MemorySegment address) Create a MultipartInputStream instance for the provided memory address.MultipartInputStream(Message msg, InputStream baseStream) -
Method Summary
Modifier and TypeMethodDescriptionprotected MultipartInputStreamasParent()Return this instance as if it were its parent type.static MultipartInputStream.Builder<? extends MultipartInputStream.Builder> builder()AMultipartInputStream.Builderobject constructs aMultipartInputStreamwith the specified properties.@Nullable MessageHeadersObtains the headers for the part currently being processed.static MemoryLayoutThe memory layout of the native struct.static @Nullable TypegetType()Get the GType of the MultipartInputStream class.@Nullable InputStreamnextPart(@Nullable Cancellable cancellable) Obtains an input stream for the next part.voidnextPartAsync(int ioPriority, @Nullable Cancellable cancellable, @Nullable AsyncReadyCallback callback) Obtains aInputStreamfor the next request.@Nullable InputStreamnextPartFinish(AsyncResult result) Finishes an asynchronous request for the next part.Methods inherited from class FilterInputStream
getBaseStream, getCloseBaseStream, setCloseBaseStreamMethods inherited from class InputStream
clearPending, close, closeAsync, closeFinish, closeFn, hasPending, isClosed, read, readAll, readAllAsync, readAllFinish, readAsync, readBytes, readBytesAsync, readBytesFinish, readFinish, readFn, setPending, skip, skipAsync, skipFinishMethods inherited from class 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, 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, withPropertiesMethods inherited from class TypeInstance
callParent, callParent, cast, getPrivate, readGClass, writeGClassMethods inherited from class ProxyInstance
equals, handle, hashCodeMethods inherited from class Object
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface AutoCloseable
closeMethods inherited from interface PollableInputStream
canPoll, createSource, isReadable, readNonblocking
-
Constructor Details
-
MultipartInputStream
Create a MultipartInputStream instance for the provided memory address.- Parameters:
address- the memory address of the native object
-
MultipartInputStream
Creates a new
MultipartInputStreamthat wraps theInputStreamobtained by sending theMessage.Reads should not be done directly through this object, use the input streams returned by
nextPart(Cancellable)or its async counterpart instead.- Parameters:
msg- theSoupMessagethe response is related to.baseStream- theGInputStreamreturned by sending the request.
-
MultipartInputStream
public MultipartInputStream()Create a new MultipartInputStream.
-
-
Method Details
-
getType
Get the GType of the MultipartInputStream class.- Returns:
- the GType
-
getMemoryLayout
The memory layout of the native struct.- Returns:
- the memory layout
-
asParent
Return this instance as if it were its parent type. Comparable to the Javasuperkeyword, but ensures the parent typeclass is also used in native code.- Overrides:
asParentin classFilterInputStream- Returns:
- the instance as if it were its parent type
-
getHeaders
Obtains the headers for the part currently being processed.
Note that the
MessageHeadersthat are returned are owned by theMultipartInputStreamand will be replaced when a call is made tonextPart(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
MessageHeaderswill be returned.- Returns:
- a
SoupMessageHeaderscontaining the headers for the part currently being processed ornullif 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
MultipartInputStreamand 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.errorwill only be set if an error happens during a read,nullis a valid return value otherwise.- Parameters:
cancellable- aGCancellable- Returns:
- a new
GInputStream, ornullif there are no more parts - Throws:
GErrorException- seeGError
-
nextPartAsync
public void nextPartAsync(int ioPriority, @Nullable Cancellable cancellable, @Nullable AsyncReadyCallback callback) Obtains a
InputStreamfor the next request.See
nextPart(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
InputStreamfor reading the next part ornullif there are no more parts. - Throws:
GErrorException- seeGError
-
builder
AMultipartInputStream.Builderobject constructs aMultipartInputStreamwith the specified properties. Use the variousset...()methods to set properties, and finish construction withMultipartInputStream.Builder.build().- Returns:
- the builder object
-