BidirectionalStream

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

Builder untuk BidirectionalStream.

Class callback yang digunakan untuk menerima callback dari BidirectionalStream.

Konstruktor publik

Fungsi publik

abstract Unit

Membatalkan streaming.

abstract Unit

Membersihkan operasi tulis yang tertunda.

abstract Boolean

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

abstract Unit
read(buffer: ByteBuffer!)

Membaca data dari stream ke dalam buffer yang disediakan.

abstract Unit

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

abstract Unit
write(buffer: ByteBuffer!, endOfStream: Boolean)

Menambahkan data yang akan ditulis ke aliran data.

Konstruktor publik

BidirectionalStream

BidirectionalStream()

Fungsi publik

batal

abstract fun cancel(): Unit

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 pemroses (selain onCanceled()) yang akan dipanggil setelah cancel() dipanggil. Jika tidak, paling banyak satu metode callback dapat dipanggil setelah cancel() selesai.

flush

abstract fun flush(): Unit

Membersihkan 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

abstract fun isDone(): Boolean

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

Hasil
Boolean

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

baca

abstract fun read(buffer: ByteBuffer!): Unit

Membaca data dari stream 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 onReadCompleted() Callback jika data dibaca, atau metode onFailed() jika terjadi error. Upaya untuk membaca data ke buffer yang dimulai dari buffer.position() akan dimulai. Maksimal buffer.remaining() byte dibaca. buffer.position() diperbarui saat pemanggilan onReadCompleted() untuk menunjukkan jumlah data yang dibaca.

Parameter
buffer: ByteBuffer!

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

mulai

abstract fun start(): Unit

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

write

abstract fun write(buffer: ByteBuffer!, endOfStream: Boolean): Unit

Menambahkan data yang akan ditulis ke aliran data. 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() dimulai. buffer.remaining() byte akan ditulis. onWriteCompleted() hanya akan dipanggil saat ByteBuffer penuh ditulis.

Parameter
buffer: ByteBuffer!

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

endOfStream: Boolean

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