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()

公共函数

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,则写入端已关闭。