BidirectionalStream

abstract class BidirectionalStream


這個類別用於透過 HTTP/2 或 QUIC 連線雙向傳送及接收資料。建立者:Builder

注意:BidirectionalStream的方法有排序限制,請參閱個別方法瞭解限制說明。

摘要

巢狀型別

BidirectionalStream 的建構工具。

用於接收 BidirectionalStream 回呼的回呼類別。

公用建構函式

公開函式

abstract Unit

取消串流。

abstract Unit

清除待處理的寫入作業。

abstract Boolean

如果串流已成功啟動並完成 (成功、取消或失敗),則會傳回 true

abstract Unit
read(buffer: ByteBuffer!)

將資料從串流讀取到提供的緩衝區。

abstract Unit

啟動串流,所有回呼都會傳送至傳遞至 BidirectionalStream.Builder 建構函式的 callback 引數。

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

將要寫入串流的資料新增至串流。

公用建構函式

BidirectionalStream

BidirectionalStream()

公開函式

取消

abstract fun cancel(): Unit

取消串流。可在 start 之後隨時呼叫。取消作業完成後,系統會呼叫 onCanceled(),且不會再呼叫其他回呼方法。如果串流已完成或尚未開始,呼叫 cancel() 不會產生任何作用,且不會叫用 onCanceled()。如果在 BidirectionalStream 建構期間傳入的 Executor 在單一執行緒上執行工作,且 cancel() 是在該執行緒上呼叫,則在呼叫 cancel() 後,系統不會叫用任何接聽程式方法 (onCanceled() 除外)。否則,cancel() 完成後最多只能叫用一個回呼方法。

flush

abstract fun flush(): Unit

清除待處理的寫入作業。這個方法不應在 onStreamReady() 之前叫用。如果是先前延遲的 write(),系統會在傳送緩衝區時叫用對應的 onWriteCompleted()

isDone

abstract fun isDone(): Boolean

如果串流已成功啟動並完成 (成功、取消或失敗),則會傳回 true

傳回
Boolean

如果串流已成功啟動並已完成 (完成、取消或失敗),則傳回 true;否則傳回 false,表示串流尚未啟動或正在進行中。

讀取

abstract fun read(buffer: ByteBuffer!): Unit

將資料從串流讀取到提供的緩衝區。針對 CallbackonStreamReady()/ onResponseHeadersReceived() onReadCompleted() 方法的每次叫用,最多只能呼叫一次。如果讀取資料,每次呼叫都會導致叫用其中一個 Callback onReadCompleted() 方法;如果發生錯誤,則會叫用 onFailed() 方法。系統會嘗試從 buffer.position() 開始將資料讀取至 buffer。最多讀取 buffer.remaining() 個位元組。呼叫 onReadCompleted() 時,系統會更新 buffer.position(),指出讀取的資料量。

參數
buffer: ByteBuffer!

ByteBuffer,將資料讀取至 必須是直接 ByteBuffer。在叫用 onReadCompleted()onCanceled()onFailed() 之前,嵌入器不得讀取或修改緩衝區的位置、限制或位置與限制之間的資料。

開始

abstract fun start(): Unit

啟動串流,所有回呼都會傳送至傳遞給 BidirectionalStream.Builder 建構函式的 callback 引數。只能呼叫一次。

寫入

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

將要寫入串流的資料新增至緩衝區。只有在呼叫 flush() 後,系統才會傳送資料。每次呼叫都會導致系統叫用 CallbackonWriteCompleted() 方法 (如果傳送資料),或 onFailed() 方法 (如果發生錯誤)。

系統開始嘗試從 buffer 寫入資料,起始時間為 buffer.position()。系統將寫入 buffer.remaining() 個位元組。只有在寫入完整的 ByteBuffer 時,才會叫用 onWriteCompleted()

參數
buffer: ByteBuffer!

要寫入資料的 ByteBuffer。必須是直接 ByteBuffer。在呼叫 onWriteCompleted() onCanceled()onFailed() 之前,嵌入器不得讀取或修改緩衝區的位置、限制或資料 (介於位置和限制之間)。如果 endOfStreamtrue,則可留空。

endOfStream: Boolean

如果 true,則 buffer 是要寫入的最後一個緩衝區,寫入後,串流會從用戶端關閉,導致半關閉串流,或如果遠端已關閉,則為完全關閉串流。