BidirectionalStream.Callback

public abstract class BidirectionalStream.Callback


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

摘要

公用建構函式

公用方法

void

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

abstract void
onFailed(
    BidirectionalStream stream,
    UrlResponseInfo info,
    CronetException error
)

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

abstract void
onReadCompleted(
    BidirectionalStream stream,
    UrlResponseInfo info,
    ByteBuffer buffer,
    boolean endOfStream
)

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

abstract void

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

void

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

abstract void

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

abstract void

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

abstract void
onWriteCompleted(
    BidirectionalStream stream,
    UrlResponseInfo info,
    ByteBuffer buffer,
    boolean endOfStream
)

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

公用建構函式

Callback

public Callback()

公用方法

onCanceled

public void onCanceled(BidirectionalStream stream, UrlResponseInfo info)

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

參數
BidirectionalStream stream

已取消的串流

UrlResponseInfo info

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

onFailed

public abstract void onFailed(
    BidirectionalStream stream,
    UrlResponseInfo info,
    CronetException error
)

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

參數
BidirectionalStream stream

失敗的串流

UrlResponseInfo info

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

CronetException error

失敗相關資訊

onReadCompleted

public abstract void onReadCompleted(
    BidirectionalStream stream,
    UrlResponseInfo info,
    ByteBuffer buffer,
    boolean endOfStream
)

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

參數
BidirectionalStream stream

完成讀取作業的串流

UrlResponseInfo info

回覆資訊

ByteBuffer buffer

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

boolean endOfStream

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

onResponseHeadersReceived

public abstract void onResponseHeadersReceived(
    BidirectionalStream stream,
    UrlResponseInfo info
)

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

參數
BidirectionalStream stream

接收回應標頭的串流。

UrlResponseInfo info

回應資訊。

onResponseTrailersReceived

public void onResponseTrailersReceived(
    BidirectionalStream stream,
    UrlResponseInfo info,
    UrlResponseInfo.HeaderBlock trailers
)

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

參數
BidirectionalStream stream

接收回應預告的串流

UrlResponseInfo info

回覆資訊

UrlResponseInfo.HeaderBlock trailers

收到的預告片

onStreamReady

public abstract void onStreamReady(BidirectionalStream stream)

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

參數
BidirectionalStream stream

準備就緒的串流。

onSucceeded

public abstract void onSucceeded(BidirectionalStream stream, UrlResponseInfo info)

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

參數
BidirectionalStream stream

已順利關閉的串流

UrlResponseInfo info

回覆資訊

onWriteCompleted

public abstract void onWriteCompleted(
    BidirectionalStream stream,
    UrlResponseInfo info,
    ByteBuffer buffer,
    boolean endOfStream
)

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

參數
BidirectionalStream stream

寫入完成的串流

UrlResponseInfo info

回覆資訊

ByteBuffer buffer

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

boolean endOfStream

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