BidirectionalStream

public abstract class BidirectionalStream


Class untuk pengiriman dan penerimaan data dua arah melalui koneksi HTTP/2 atau QUIC. Dibuat oleh Builder.

Catatan: Ada batasan pengurutan pada metode BidirectionalStream; lihat setiap metode untuk mengetahui deskripsi batasan.

Ringkasan

Jenis bertingkat

public abstract class BidirectionalStream.Builder

Builder untuk BidirectionalStream.

public abstract class BidirectionalStream.Callback

Class callback yang digunakan untuk menerima callback dari BidirectionalStream.

Konstruktor publik

Metode publik

abstract void

Membatalkan streaming.

abstract void

Melakukan flush pada operasi tulis yang tertunda.

abstract boolean

Menampilkan true jika streaming berhasil dimulai dan kini selesai (berhasil, dibatalkan, atau gagal).

abstract void
read(ByteBuffer buffer)

Membaca data dari streaming ke dalam buffer yang disediakan.

abstract void

Memulai streaming, semua callback akan masuk ke argumen callback yang diteruskan ke konstruktor BidirectionalStream.Builder.

abstract void
write(ByteBuffer buffer, boolean endOfStream)

Menambahkan data yang akan ditulis ke streaming.

Konstruktor publik

BidirectionalStream

public BidirectionalStream()

Metode publik

batal

public abstract void cancel()

Membatalkan streaming. Dapat dipanggil kapan saja setelah start. onCanceled() akan dipanggil saat pembatalan selesai dan tidak ada metode callback lebih lanjut yang akan dipanggil. Jika streaming telah selesai atau belum dimulai, memanggil cancel() tidak akan berpengaruh dan onCanceled() tidak akan dipanggil. Jika Executor yang diteruskan selama konstruksi BidirectionalStream menjalankan tugas pada satu thread, dan cancel() dipanggil pada thread tersebut, tidak ada metode listener (selain onCanceled()) yang akan dipanggil setelah cancel() dipanggil. Jika tidak, paling banyak satu metode callback dapat dipanggil setelah cancel() selesai.

melakukan flush

public abstract void flush()

Melakukan flush pada operasi tulis yang tertunda. Metode ini tidak boleh dipanggil sebelum onStreamReady(). Untuk write() yang sebelumnya tertunda, onWriteCompleted() yang sesuai akan dipanggil saat buffer dikirim.

isDone

public abstract boolean isDone()

Menampilkan true jika streaming berhasil dimulai dan kini selesai (berhasil, dibatalkan, atau gagal).

Hasil
boolean

true jika streaming berhasil dimulai dan kini selesai (selesai, dibatalkan, atau gagal), jika tidak, menampilkan false untuk menunjukkan bahwa streaming belum dimulai atau sedang berlangsung.

baca

public abstract void read(ByteBuffer buffer)

Membaca data dari streaming ke dalam buffer yang disediakan. Hanya dapat dipanggil paling banyak satu kali sebagai respons terhadap setiap pemanggilan metode onStreamReady()/ onResponseHeadersReceived() dan onReadCompleted() dari Callback. Setiap panggilan akan menghasilkan pemanggilan salah satu metode Callback's onReadCompleted() jika data dibaca, atau metode onFailed() jika terjadi error. Upaya untuk membaca data ke dalam buffer yang dimulai dari buffer.position() akan dimulai. Paling banyak buffer.remaining() byte yang dibaca. buffer.position() diperbarui saat pemanggilan onReadCompleted() untuk menunjukkan jumlah data yang dibaca.

Parameter
ByteBuffer buffer

ByteBuffer untuk membaca data. Harus berupa ByteBuffer langsung. Penyematan tidak boleh membaca atau mengubah posisi, batas, atau data buffer antara posisi dan batasnya hingga onReadCompleted(), onCanceled(), atau onFailed() dipanggil.

mulai

public abstract void start()

Memulai streaming, semua callback akan masuk ke argumen callback yang diteruskan ke konstruktor BidirectionalStream.Builder. Hanya boleh dipanggil sekali.

write

public abstract void write(ByteBuffer buffer, boolean endOfStream)

Menambahkan data yang akan ditulis ke streaming. Data hanya akan dikirim setelah flush() dipanggil. Setiap panggilan akan menghasilkan pemanggilan salah satu metode onWriteCompleted() Callback jika data dikirim, atau metode onFailed() jika terjadi error.

Upaya untuk menulis data dari buffer yang dimulai dari buffer.position() akan dimulai. buffer.remaining() byte akan ditulis. onWriteCompleted() hanya akan dipanggil saat ByteBuffer penuh ditulis.

Parameter
ByteBuffer buffer

ByteBuffer untuk menulis data. Harus berupa ByteBuffer langsung. Penyematan tidak boleh membaca atau mengubah posisi, batas, atau data buffer antara posisi dan batasnya hingga onWriteCompleted(), onCanceled(), atau onFailed() dipanggil. Dapat kosong jika endOfStream adalah true.

boolean endOfStream

jika true, maka buffer adalah buffer terakhir yang akan ditulis, dan setelah ditulis, streaming akan ditutup dari sisi klien, sehingga menghasilkan streaming yang setengah tertutup atau streaming yang sepenuhnya tertutup jika sisi jarak jauh telah ditutup.