UploadDataProvider

abstract class UploadDataProvider : Closeable


エンベッダーが UrlRequest にアップロード本文を提供できるようにする抽象クラス。チャンク化されていないアップロード(サイズが事前にわかっている)とチャンク化されたアップロード(サイズが事前にわからない)の両方をサポートしています。すべてのサーバーがチャンク アップロードをサポートしているわけではありません。

アップロードは、データが複数回送信される場合は複数のアップロードにわたって常にチャンク化されるか、チャンク化されないかのいずれかです。

概要

パブリック コンストラクタ

パブリック関数

Unit

この UploadDataProvider がリクエストで不要になったときに呼び出され、リソース(ファイルなど)を明示的に解放できるようにします。

abstract Long

チャンク化されていないアップロードの場合、アップロードの長さを返します。

abstract Unit
read(uploadDataSink: UploadDataSink!, byteBuffer: ByteBuffer!)

アップロード データを byteBuffer に読み取ります。

abstract Unit
rewind(uploadDataSink: UploadDataSink!)

アップロード データを先頭に戻します。

パブリック コンストラクタ

UploadDataProvider

UploadDataProvider()

パブリック関数

閉じる

fun close(): Unit

この UploadDataProvider がリクエストで不要になったときに呼び出され、リソース(ファイルなど)を明示的に解放できるようにします。

例外
java.io.IOException

プロセス中に IOException が発生した場合は、リクエストがまだ完了していない場合は、リクエストが失敗します。完了している場合は、ログに記録されます。

getLength

abstract fun getLength(): Long

チャンク化されていないアップロードの場合、アップロードの長さを返します。チャンク アップロードの場合は、常に -1 を返す必要があります。

戻り値
Long

チャンク化されていないアップロードのアップロードの長さ。それ以外の場合は -1。

例外
java.io.IOException

プロセス中に IOException が発生した場合。

read

abstract fun read(uploadDataSink: UploadDataSink!, byteBuffer: ByteBuffer!): Unit

アップロード データを byteBuffer に読み取ります。完了すると、バッファの位置が読み取られたバイトの末尾に更新されます。バッファの上限は変更されません。このメソッドの各呼び出しの後に、 uploadDataSink: 成功の場合は onReadSucceeded、失敗の場合は onReadError への同期または非同期の単一呼び出しが続いている必要があります。これらのメソッドのいずれかが呼び出されるまで、読み取りも巻き戻しも呼び出されません。関連付けられた UrlRequest がキャンセルされた場合でも、リソースを安全に解放する前に、どちらか一方を呼び出す必要があります。例外をスローすると、リソースが解放され、リクエストがエラーになります。

注: チャンク化されていないアップロードの場合、読み取りが成功し、少なくとも 1 バイトが byteBuffer に読み取られた場合にのみ onReadSucceeded を呼び出す必要があります。チャンク アップロード(データのサイズが不明)の場合、空のバイトバッファを使用して最後のチャンクに対して onReadSucceeded を呼び出すことができます。

パラメータ
uploadDataSink: UploadDataSink!

読み取りが完了したときに通知するオブジェクト。

byteBuffer: ByteBuffer!

読み取ったバイトをコピーするバッファ。byteBuffer の上限は変更しないでください。

例外
java.io.IOException

プロセス中に IOException が発生した場合は、onFailed は、スローされた例外が CallbackException の原因として設定された状態で呼び出されます。

巻き戻し

abstract fun rewind(uploadDataSink: UploadDataSink!): Unit

アップロード データを先頭に戻します。Cronet がアップロード データ プロバイダを read がまだ呼び出されていない状態と同等の状態にする必要がある場合に呼び出されます。

オペレーションが完了したことを通知するには、この関数の実装で onRewindSucceeded を呼び出して成功を示すか、失敗時に onRewindError を呼び出す必要があります。関連付けられた UrlRequest がキャンセルされた場合でも、リソースを安全に解放する前に、どちらか一方を呼び出す必要があります。メソッドから例外をスローすることは、onRewindError を呼び出すことと同じです。巻き戻しがサポートされていない場合(1 回限りのストリームから読み取っている場合など)は、すぐに onRewindError を呼び出す必要があります。

実装者は、前の段落で説明したように、巻き戻しが完了したことをシンクに通知するまで、read も同時実行の rewind 呼び出しも発行されないと安全に想定できます。

このメソッドは、本文を複数回アップロードする必要がある場合に Cronet によって内部的に使用されます。これは、リダイレクトをたどる場合や、タイムアウトやネットワークの切断後にリクエストを再試行する場合など、さまざまな状況で発生する可能性があります。巻き戻しの実装は通常は任意ですが、巻き戻しが必要になるリクエストでは、巻き戻しが実装されていないと失敗します。

パラメータ
uploadDataSink: UploadDataSink!

巻き戻しオペレーションが成功または失敗したときに通知するオブジェクト。

例外
java.io.IOException

プロセス中に IOException が発生した場合は、onFailed は、スローされた例外が CallbackException の原因として設定された状態で呼び出されます。