UploadDataProvider

public abstract class UploadDataProvider implements Closeable


Class abstrak yang memungkinkan penyematan menyediakan isi upload ke UrlRequest. API ini mendukung upload non-chunked (ukuran diketahui sebelumnya) dan chunked (ukuran tidak diketahui sebelumnya). Perlu diketahui bahwa tidak semua server mendukung upload yang di-chunk.

Upload selalu di-chunk, di beberapa upload jika data akhirnya dikirim lebih dari sekali, atau tidak pernah di-chunk.

Ringkasan

Konstruktor publik

Metode publik

void

Dipanggil saat UploadDataProvider ini tidak lagi diperlukan oleh permintaan, sehingga resource (seperti file) dapat dilepaskan secara eksplisit.

abstract long

Jika ini adalah upload yang tidak di-chunk, akan menampilkan panjang upload.

abstract void
read(UploadDataSink uploadDataSink, ByteBuffer byteBuffer)

Membaca data upload ke byteBuffer.

abstract void
rewind(UploadDataSink uploadDataSink)

Memundurkan data upload ke awal.

Konstruktor publik

UploadDataProvider

public UploadDataProvider()

Metode publik

tutup

public void close()

Dipanggil saat UploadDataProvider ini tidak lagi diperlukan oleh permintaan, sehingga resource (seperti file) dapat dilepaskan secara eksplisit.

Menampilkan
java.io.IOException

jika ada IOException yang terjadi selama proses. Hal ini akan menyebabkan permintaan gagal jika belum selesai; jika tidak, permintaan akan dicatat.

getLength

public abstract long getLength()

Jika ini adalah upload yang tidak di-chunk, akan menampilkan panjang upload. Harus selalu menampilkan -1 jika ini adalah upload yang di-chunk.

Hasil
long

durasi upload untuk upload yang tidak di-chunk, -1 jika tidak.

Menampilkan
java.io.IOException

jika ada IOException yang terjadi selama proses.

baca

public abstract void read(UploadDataSink uploadDataSink, ByteBuffer byteBuffer)

Membaca data upload ke byteBuffer. Setelah selesai, posisi buffer diperbarui ke akhir byte yang dibaca. Batas buffer tidak diubah. Setiap panggilan metode ini harus diikuti oleh satu panggilan, baik sinkron maupun asinkron, ke uploadDataSink: onReadSucceeded jika berhasil atau onReadError jika gagal. Baca atau putar ulang tidak akan dipanggil hingga salah satu metode tersebut atau metode lainnya dipanggil. Meskipun UrlRequest terkait dibatalkan, salah satunya tetap harus dipanggil sebelum resource dapat dibebaskan dengan aman. Memunculkan pengecualian juga akan menyebabkan resource dibebaskan dan permintaan mengalami error.

Catatan: Untuk upload yang tidak di-chunk, onReadSucceeded hanya boleh dipanggil jika pembacaan berhasil dan setidaknya satu byte telah dibaca ke dalam byteBuffer. Untuk upload yang di-chunk (Ukuran data tidak diketahui), onReadSucceeded dapat dipanggil untuk chunk terakhir dengan buffer byte kosong.

Parameter
UploadDataSink uploadDataSink

Objek yang akan diberi tahu saat pembacaan selesai.

ByteBuffer byteBuffer

Buffer untuk menyalin byte yang dibaca. Jangan mengubah batas byteBuffer.

Menampilkan
java.io.IOException

jika ada IOException yang terjadi selama proses. onFailed akan dipanggil dengan pengecualian yang dilempar ditetapkan sebagai penyebab CallbackException.

mundur

public abstract void rewind(UploadDataSink uploadDataSink)

Memundurkan data upload ke awal. Dipanggil saat Cronet memerlukan penyedia data upload dalam status yang setara dengan jika read belum pernah dipanggil.

Untuk memberi sinyal bahwa operasi telah selesai, penerapan fungsi ini harus memanggil onRewindSucceeded untuk menunjukkan keberhasilan, atau onRewindError jika gagal. Meskipun UrlRequest terkait dibatalkan, salah satunya tetap harus dipanggil sebelum resource dapat dibebaskan dengan aman. Menampilkan pengecualian dari metode sama dengan memanggil onRewindError. Jika mundur tidak didukung (misalnya, jika membaca dari streaming sekali putar), onRewindError harus segera dipanggil.

Pelaksana dapat dengan aman mengasumsikan bahwa read maupun panggilan rewind serentak tidak akan dikeluarkan hingga mereka memberi tahu sink bahwa pemutaran ulang telah selesai, seperti yang dijelaskan dalam paragraf sebelumnya.

Metode ini digunakan secara internal oleh Cronet jika isi perlu diupload beberapa kali. Hal ini dapat terjadi dalam berbagai situasi, misalnya saat mengikuti pengalihan, atau saat mencoba ulang permintaan setelah waktu tunggu habis atau jaringan terputus. Perhatikan bahwa meskipun penerapan mundur secara umum bersifat opsional, permintaan yang akhirnya memerlukannya akan gagal kecuali jika mundur diterapkan.

Parameter
UploadDataSink uploadDataSink

Objek yang akan diberi tahu saat operasi mundur selesai, berhasil atau tidak.

Menampilkan
java.io.IOException

jika ada IOException yang terjadi selama proses. onFailed akan dipanggil dengan pengecualian yang dilempar ditetapkan sebagai penyebab CallbackException.