Двунаправленный поток

public abstract class BidirectionalStream


Класс для двусторонней отправки и приема данных по соединениям HTTP/2 или QUIC. Создан с помощью Builder .

Примечание: Для методов класса BidirectionalStream существуют ограничения по порядку выполнения; описание этих ограничений см. в описании отдельных методов.

Краткое содержание

Вложенные типы

public abstract class BidirectionalStream.Builder

Конструктор для BidirectionalStream .

public abstract class BidirectionalStream.Callback

Класс обратного вызова используется для приема обратных вызовов от BidirectionalStream .

Государственные строители

Общедоступные методы

abstract void
cancel ()

Отменяет трансляцию.

abstract void
flush ()

Сбрасывает ожидающие операции записи.

abstract boolean
isDone ()

Возвращает true , если поток был успешно запущен и теперь завершен (успешно, отменен или не удался).

abstract void
read ( ByteBuffer buffer)

Считывает данные из потока в предоставленный буфер.

abstract void
start ()

Запускает поток, все обратные вызовы передаются аргументу callback переданному в конструктор BidirectionalStream.Builder .

abstract void
write ( ByteBuffer buffer, boolean endOfStream)

Добавляет данные для записи в поток.

Государственные строители

Двунаправленный поток

public BidirectionalStream()

Общедоступные методы

отмена

public abstract void cancel()

Отменяет поток. Может быть вызван в любое время после start . onCanceled() будет вызван после завершения отмены, и никакие дальнейшие методы обратного вызова вызываться не будут. Если поток завершился или не начался, вызов метода cancel() не имеет эффекта, и onCanceled() не будет вызван. Если Executor переданный при создании BidirectionalStream выполняет задачи в одном потоке, и cancel() вызывается в этом потоке, после вызова cancel() не будут вызваны никакие методы-слушатели (кроме onCanceled() ). В противном случае после завершения cancel() может быть вызван не более одного метода обратного вызова.

румянец

public abstract void flush()

Сбрасывает незавершенные операции записи. Этот метод не следует вызывать до onStreamReady() . Для ранее отложенных write() соответствующий метод onWriteCompleted() будет вызван при отправке буфера.

завершено

public abstract boolean isDone()

Возвращает true , если поток был успешно запущен и теперь завершен (успешно, отменен или не удался).

Возвраты
boolean

true , если поток был успешно запущен и завершен (завершен, отменен или завершился с ошибкой), в противном случае возвращает false , указывая на то, что поток еще не запущен или находится в процессе выполнения.

читать

public abstract void read(ByteBuffer buffer)

Считывает данные из потока в предоставленный буфер. Может быть вызвана не более одного раза в ответ на каждое обращение к методам onStreamReady() / onResponseHeadersReceived() и onReadCompleted() объекта Callback . Каждый вызов приведет к обращению к одному из методов onReadCompleted() Callback , если данные были прочитаны, или к его методу onFailed() если произошла ошибка. Начинается попытка чтения данных в buffer , начиная с buffer.position() . Прочитано не более buffer.remaining() байт. buffer.position() обновляется при обращении к onReadCompleted() чтобы указать, сколько данных было прочитано.

Параметры
ByteBuffer buffer

ByteBuffer , в который будут считываться данные. Должен быть непосредственно объектом ByteBuffer. Встраиваемый модуль не должен считывать или изменять позицию, ограничение или данные буфера между его позицией и ограничением до тех пор, пока не будут вызваны onReadCompleted() , onCanceled() или onFailed() .

начинать

public abstract void start()

Запускает поток, все обратные вызовы передаются в качестве аргумента callback конструктору BidirectionalStream.Builder . Должен вызываться только один раз.

писать

public abstract void write(ByteBuffer buffer, boolean endOfStream)

Добавляет данные для записи в поток. Данные будут отправлены только после вызова метода flush() . Каждый вызов приведет к вызову одного из методов onWriteCompleted() Callback , если данные отправлены, или его метода onFailed() , если произошла ошибка.

Начинается попытка записи данных из buffer , начиная с позиции buffer.position() . Будет записано buffer.remaining() байт. onWriteCompleted() будет вызван только после полной записи в ByteBuffer.

Параметры
ByteBuffer buffer

ByteBuffer из которого будут записываться данные. Должен быть непосредственно объектом ByteBuffer. Встраиваемый объект не должен считывать или изменять позицию, лимит или данные буфера между его позицией и лимитом до тех пор, пока не будут вызваны onWriteCompleted() , onCanceled() или onFailed() . Может быть пустым, если endOfStream имеет true .

boolean endOfStream

Если true , то buffer является последним буфером, в который производится запись, и после записи поток закрывается со стороны клиента, в результате чего поток становится частично закрытым или полностью закрытым, если удаленная сторона уже закрыла его.