BidirectionalStream

public abstract class BidirectionalStream


用于通过 HTTP/2 或 QUIC 连接双向发送和接收数据的类。创建者:Builder

注意:BidirectionalStream 的方法存在排序限制;请参阅各个方法以了解限制说明。

摘要

嵌套类型

public abstract class BidirectionalStream.Builder

BidirectionalStream 的构建器。

public abstract class BidirectionalStream.Callback

用于接收来自 BidirectionalStream 的回调的回调类。

公共构造函数

公共方法

abstract void

取消数据流。

abstract void

刷新待处理的写入操作。

abstract boolean

如果流已成功启动且现在已完成(成功、取消或失败),则返回 true

abstract void
read(ByteBuffer buffer)

从数据流中读取数据到提供的缓冲区中。

abstract void

启动流,所有回调都会发送到传递给 BidirectionalStream.Builder 构造函数的 callback 实参。

abstract void
write(ByteBuffer buffer, boolean endOfStream)

添加要写入流的数据。

公共构造函数

BidirectionalStream

public BidirectionalStream()

公共方法

取消

public abstract void cancel()

取消数据流。可以在 start 之后的任何时间调用。取消完成后,系统会调用 onCanceled(),并且不会再调用其他回调方法。如果直播已结束或尚未开始,调用 cancel() 不会产生任何影响,并且不会调用 onCanceled()。如果 BidirectionalStream 构建期间传入的 Executor 在单线程上运行任务,并且在该线程上调用了 cancel(),则在调用 cancel() 后,不会调用任何监听器方法(除了 onCanceled())。否则,在 cancel() 完成后,最多可以调用一个回调方法。

flush

public abstract void flush()

刷新待处理的写入操作。不应在 onStreamReady() 之前调用此方法。对于之前延迟的 write(),当发送缓冲区时,将调用相应的 onWriteCompleted()

isDone

public abstract boolean isDone()

如果流已成功启动且现在已完成(成功、取消或失败),则返回 true

返回
boolean

如果流已成功启动并已完成(已完成、已取消或失败),则返回 true;否则返回 false,表示流尚未启动或正在进行中。

读取

public abstract void read(ByteBuffer buffer)

从数据流中读取数据到提供的缓冲区中。在响应 CallbackonStreamReady()/ onResponseHeadersReceived() onReadCompleted() 方法的每次调用时,最多只能调用一次。每次调用都会导致调用 Callback onReadCompleted() 方法(如果读取了数据)或 onFailed() 方法(如果出现错误)。系统开始尝试将数据读入 buffer,从 buffer.position() 开始。最多读取 buffer.remaining() 个字节。在调用 onReadCompleted() 时,系统会更新 buffer.position() 以指示读取了多少数据。

参数
ByteBuffer buffer

用于将数据读入的 ByteBuffer。必须是直接 ByteBuffer。在调用 onReadCompleted()onCanceled()onFailed() 之前,嵌入器不得读取或修改缓冲区的位置、限制或位置与限制之间的数据。

start

public abstract void start()

启动流,所有回调都将发送到传递给 BidirectionalStream.Builder 构造函数的 callback 实参。只能调用一次。

write

public abstract void write(ByteBuffer buffer, boolean endOfStream)

添加要写入流的数据。只有在调用 flush() 之后,系统才会发送数据。每次调用都会导致调用 CallbackonWriteCompleted() 方法(如果发送了数据)或 onFailed() 方法(如果出现错误)。

尝试从 buffer 开始写入数据。buffer.position()系统将写入 buffer.remaining() 字节。只有在写入完整的 ByteBuffer 时,才会调用 onWriteCompleted()

参数
ByteBuffer buffer

用于写入数据的 ByteBuffer。必须是直接 ByteBuffer。在调用 onWriteCompleted() onCanceled()onFailed() 之前,嵌入器不得读取或修改缓冲区的位置、限制或位置与限制之间的数据。当 endOfStreamtrue 时,可以为空。

boolean endOfStream

如果值为 true,则 buffer 是要写入的最后一个缓冲区,写入后,流会从客户端关闭,从而导致半关闭流或完全关闭流(如果远程端已关闭)。