BidirectionalStream.Callback

abstract class BidirectionalStream.Callback


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

摘要

公用建構函式

公開函式

Unit

如果串流透過 cancel 取消,系統會叫用這個方法。

abstract Unit
onFailed(
    stream: BidirectionalStream!,
    info: UrlResponseInfo!,
    error: CronetException!
)

如果串流在 start 後因任何原因失敗,系統就會叫用這個方法。

abstract Unit
onReadCompleted(
    stream: BidirectionalStream!,
    info: UrlResponseInfo!,
    buffer: ByteBuffer!,
    endOfStream: Boolean
)

當資料讀取到傳遞至 read() 的緩衝區時,就會叫用這個函式。

abstract Unit

收到初始回應標頭時會叫用。

Unit
onResponseTrailersReceived(
    stream: BidirectionalStream!,
    info: UrlResponseInfo!,
    trailers: UrlResponseInfo.HeaderBlock!
)

在關閉串流前收到預告片時叫用。

abstract Unit

當串流準備好讀取和寫入時,系統會叫用此方法。

abstract Unit

當沒有要讀取或寫入的資料,且串流已在遠端和本機順利關閉時,系統會叫用這個方法。

abstract Unit
onWriteCompleted(
    stream: BidirectionalStream!,
    info: UrlResponseInfo!,
    buffer: ByteBuffer!,
    endOfStream: Boolean
)

在傳送傳遞至 write() 的整個 ByteBuffer 時叫用。

公用建構函式

Callback

Callback()

公開函式

onCanceled

fun onCanceled(stream: BidirectionalStream!, info: UrlResponseInfo!): Unit

如果串流透過 cancel 取消,系統會叫用這個方法。一旦叫用,就不會再叫用其他 BidirectionalStream.Callback 方法。預設實作不會採取任何行動。

參數
stream: BidirectionalStream!

已取消的串流

info: UrlResponseInfo!

回應資訊。如果沒有收到回覆,可能需要 null 天。

onFailed

abstract fun onFailed(
    stream: BidirectionalStream!,
    info: UrlResponseInfo!,
    error: CronetException!
): Unit

如果串流在 start 後因任何原因失敗,系統就會叫用這個函式。HTTP/2 錯誤代碼會對應至 getCronetInternalErrorCode 代碼。一旦叫用,就不會再叫用其他 BidirectionalStream.Callback 方法。

參數
stream: BidirectionalStream!

失敗的串流

info: UrlResponseInfo!

回應資訊。如果沒有收到回覆,可能需要 null 天。

error: CronetException!

失敗相關資訊

onReadCompleted

abstract fun onReadCompleted(
    stream: BidirectionalStream!,
    info: UrlResponseInfo!,
    buffer: ByteBuffer!,
    endOfStream: Boolean
): Unit

當資料讀取到傳遞至 read() 的緩衝區時,就會叫用這個函式。緩衝區可能只會填入部分資料。如要繼續閱讀,請撥打 read()。如果收到預告片前有待處理的讀取資料,可能會在 onResponseTrailersReceived() 後叫用。

參數
stream: BidirectionalStream!

完成讀取作業的串流

info: UrlResponseInfo!

回覆資訊

buffer: ByteBuffer!

傳遞至 read() 的緩衝區,現在包含收到的資料。緩衝區的限制不會變更。緩衝區的位置設為接收資料的結尾。如果位置未更新,表示遠端已發出信號,指出不會再傳送資料。

endOfStream: Boolean

如果為 true,表示這是最後讀取的資料,遠端不會再傳送資料,且讀取端已關閉。

onResponseHeadersReceived

abstract fun onResponseHeadersReceived(
    stream: BidirectionalStream!,
    info: UrlResponseInfo!
): Unit

收到初始回應標頭時會叫用此函式。標頭可從 info.getAllHeaders() 取得。消費者可以呼叫 read() 開始朗讀。消費者可以呼叫 write() 開始寫入或關閉串流。

參數
stream: BidirectionalStream!

接收回應標頭的串流。

info: UrlResponseInfo!

回應資訊。

onResponseTrailersReceived

fun onResponseTrailersReceived(
    stream: BidirectionalStream!,
    info: UrlResponseInfo!,
    trailers: UrlResponseInfo.HeaderBlock!
): Unit

在關閉串流前收到預告片時叫用。只有在伺服器傳送尾部時才會叫用,但伺服器可能不會傳送尾部。本機緩衝區中可能仍有讀取資料時會叫用。預設實作不會採取任何行動。

參數
stream: BidirectionalStream!

接收回應預告的串流

info: UrlResponseInfo!

回覆資訊

trailers: UrlResponseInfo.HeaderBlock!

收到的預告片

onStreamReady

abstract fun onStreamReady(stream: BidirectionalStream!): Unit

當串流準備好讀取和寫入時,系統會叫用此方法。消費者可以呼叫 read() 開始讀取資料。消費者可以呼叫 write() 開始寫入資料。

參數
stream: BidirectionalStream!

準備就緒的串流。

onSucceeded

abstract fun onSucceeded(stream: BidirectionalStream!, info: UrlResponseInfo!): Unit

當沒有要讀取或寫入的資料,且串流已在遠端和本機順利關閉時,系統會叫用這個方法。一旦叫用,就不會再叫用其他 BidirectionalStream.Callback 方法。

參數
stream: BidirectionalStream!

已順利關閉的串流

info: UrlResponseInfo!

回覆資訊

onWriteCompleted

abstract fun onWriteCompleted(
    stream: BidirectionalStream!,
    info: UrlResponseInfo!,
    buffer: ByteBuffer!,
    endOfStream: Boolean
): Unit

在傳送傳遞至 write() 的整個 ByteBuffer 時叫用。緩衝區的位置會更新為與緩衝區的限制相同。緩衝區的限制不會變更。如要繼續撰寫,請呼叫 write()

參數
stream: BidirectionalStream!

寫入完成的串流

info: UrlResponseInfo!

回覆資訊

buffer: ByteBuffer!

傳遞至 write() 的緩衝區。緩衝區位置已設為緩衝區限制。緩衝區的限制不會變更。

endOfStream: Boolean

傳遞至對應 write() 的 endOfStream 標記。如果是 true,則會關閉寫入端。