| java.lang.Object | |
| ↳ | org.chromium.net.UploadDataProvider |
Abstract class allowing the embedder to provide an upload body to UrlRequest. It supports
both non-chunked (size known in advanced) and chunked (size not known in advance) uploads. Be
aware that not all servers support chunked uploads.
An upload is either always chunked, across multiple uploads if the data ends up being sent more than once, or never chunked.
| Public Constructors | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Public Methods | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
Called when this UploadDataProvider is no longer needed by a request, so that resources (like
a file) can be explicitly released.
| |||||||||||
If this is a non-chunked upload, returns the length of the upload.
| |||||||||||
Reads upload data into
byteBuffer. | |||||||||||
Rewinds upload data to the beginning.
| |||||||||||
|
[Expand]
Inherited Methods | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
|
| |||||||||||
|
| |||||||||||
|
| |||||||||||
Called when this UploadDataProvider is no longer needed by a request, so that resources (like a file) can be explicitly released.
| Throws | |
|---|---|
IOException |
if any IOException occurred during the process. This will cause the request to fail if it is not yet complete; otherwise it will be logged. |
If this is a non-chunked upload, returns the length of the upload. Must always return -1 if this is a chunked upload.
| Returns | |
|---|---|
long |
the length of the upload for non-chunked uploads, -1 otherwise. |
| Throws | |
|---|---|
IOException |
if any IOException occurred during the process. |
Reads upload data into byteBuffer. Upon completion, the buffer's position is updated
to the end of the bytes that were read. The buffer's limit is not changed. Each call of this
method must be followed be a single call, either synchronous or asynchronous, to uploadDataSink: onReadSucceeded(boolean) on success or onReadError(Exception) on failure. Neither read nor rewind will be called until one of
those methods or the other is called. Even if the associated UrlRequest is canceled,
one or the other must still be called before resources can be safely freed. Throwing an
exception will also result in resources being freed and the request being errored out.
| Parameters | |
|---|---|
uploadDataSink |
UploadDataSink: The object to notify when the read has completed, successfully or
otherwise. |
byteBuffer |
ByteBuffer: The buffer to copy the read bytes into. Do not change byteBuffer's limit. |
| Throws | |
|---|---|
IOException |
if any IOException occurred during the process. onFailed(UrlRequest, UrlResponseInfo, CronetException) will be called with the thrown exception set as the cause of
the
CallbackException.
|
Rewinds upload data to the beginning. Invoked when Cronet requires the upload data
provider to be in an equivalent state to as if read(UploadDataSink, ByteBuffer) was never called yet.
To signal that the operation has finished, implementations of this function must call
onRewindSucceeded() to indicate success, or
onRewindError(Exception) on failure. Even if the associated UrlRequest is
canceled, one or the other must still be called before resources can be safely freed.
Throwing an exception from the method is equivalent to calling onRewindError.
If rewinding is not supported (for instance, if reading from a one-off stream), this
should call onRewindError(Exception) immediately.
The implementer can safely assume that neither read(UploadDataSink, ByteBuffer) nor a concurrent
rewind(UploadDataSink) call will be issued until they notify the sink that rewinding has finished,
as described in the previous paragraph.
This method is used internally by Cronet if the body needs to be uploaded multiple times. This can occur in many different situations, for instance when following redirects, or when retrying requests after a timeout or a network disconnect. Note that while implementing rewinding is generally optional, requests which end up requiring it will fail unless rewinding is implemented.
| Parameters | |
|---|---|
uploadDataSink |
UploadDataSink: The object to notify when the rewind operation has completed,
successfully or otherwise. |
| Throws | |
|---|---|
IOException |
if any IOException occurred during the process. onFailed(UrlRequest, UrlResponseInfo, CronetException) will be called with the thrown exception set as the cause of
the CallbackException.
|