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 都已发送时调用。

公共构造函数

回调

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() 的缓冲区,现在包含接收到的数据。缓冲区限制未发生变化。缓冲区的 position 设置为接收到的数据的末尾。如果位置未更新,则表示远程端已发出信号,表明它将不再发送数据。

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