BidirectionalStream

public abstract class BidirectionalStream


Classe para envio e recebimento bidirecional de dados em conexões HTTP/2 ou QUIC. Criada por Builder.

Observação: há restrições de ordenação nos métodos de BidirectionalStream. Consulte os métodos individuais para ver a descrição das restrições.

Resumo

Tipos aninhados

public abstract class BidirectionalStream.Builder

Builder para BidirectionalStreams.

public abstract class BidirectionalStream.Callback

Classe de callback usada para receber callbacks de um BidirectionalStream.

Construtores públicos

Métodos públicos

abstract void

Cancela o fluxo.

abstract void

Transfere gravações pendentes.

abstract boolean

Retorna true se o fluxo foi iniciado e concluído (com êxito, cancelado ou falhou).

abstract void
read(ByteBuffer buffer)

Lê dados do fluxo para o buffer fornecido.

abstract void

Inicia o fluxo. Todos os callbacks vão para o argumento callback transmitido ao construtor de BidirectionalStream.Builder.

abstract void
write(ByteBuffer buffer, boolean endOfStream)

Adiciona dados a serem gravados no fluxo.

Construtores públicos

BidirectionalStream

public BidirectionalStream()

Métodos públicos

cancelar

public abstract void cancel()

Cancela o fluxo. Pode ser chamado a qualquer momento após start. onCanceled() será invocado quando o cancelamento for concluído e nenhum outro método de callback será invocado. Se o fluxo tiver sido concluído ou não tiver sido iniciado, chamar cancel() não terá efeito, e onCanceled() não será invocado. Se o Executor transmitido durante a construção de BidirectionalStream executar tarefas em uma única linha de execução e cancel() for chamado nessa linha, nenhum método de listener (além de onCanceled()) será invocado após a chamada de cancel(). Caso contrário, no máximo um método de callback poderá ser invocado após a conclusão de cancel().

transferir

public abstract void flush()

Transfere gravações pendentes. Esse método não pode ser invocado antes de onStreamReady(). Para write()s atrasados anteriormente, um onWriteCompleted() correspondente será invocado quando o buffer for enviado.

isDone

public abstract boolean isDone()

Retorna true se o fluxo foi iniciado e concluído (com êxito, cancelado ou falhou).

Retorna
boolean

true se o fluxo foi iniciado e concluído (com êxito, cancelado ou falhou). Caso contrário, retorna false para indicar que o fluxo ainda não foi iniciado ou está em andamento.

Lidos

public abstract void read(ByteBuffer buffer)

Lê dados do fluxo para o buffer fornecido. Só pode ser chamado no máximo uma vez em resposta a cada invocação dos métodos onStreamReady()/ onResponseHeadersReceived() e onReadCompleted() do Callback. Cada chamada resultará em uma invocação de um dos métodos Callback do onReadCompleted() se os dados forem lidos ou do método onFailed() se houver um erro. Uma tentativa de ler dados em buffer começando em buffer.position() é iniciada. No máximo buffer.remaining() bytes são lidos. buffer.position() é atualizado após a invocação de onReadCompleted() para indicar quantos dados foram lidos.

Parâmetros
ByteBuffer buffer

o ByteBuffer para ler dados. Precisa ser um ByteBuffer direto. O incorporador não pode ler ou modificar a posição, o limite ou os dados do buffer entre a posição e o limite até que onReadCompleted(), onCanceled() ou onFailed() sejam invocados.

start

public abstract void start()

Inicia o fluxo. Todos os callbacks vão para o argumento callback transmitido ao construtor de BidirectionalStream.Builder. Só pode ser chamado uma vez.

gravação

public abstract void write(ByteBuffer buffer, boolean endOfStream)

Adiciona dados a serem gravados no fluxo. Os dados serão enviados somente após a chamada de flush(). Cada chamada resultará em uma invocação de um dos métodos onWriteCompleted() do Callback se os dados forem enviados ou do método onFailed() se houver um erro.

Uma tentativa de gravar dados de buffer começando em buffer.position() é iniciada. buffer.remaining() bytes serão gravados. onWriteCompleted() será invocado somente quando o ByteBuffer completo for gravado.

Parâmetros
ByteBuffer buffer

o ByteBuffer para gravar dados. Precisa ser um ByteBuffer direto. O incorporador não pode ler ou modificar a posição, o limite ou os dados do buffer entre a posição e o limite até que onWriteCompleted(), onCanceled() ou onFailed() sejam invocados. Pode estar vazio quando endOfStream for true.

boolean endOfStream

se true, buffer será o último buffer a ser gravado e, depois de gravado, o fluxo será fechado no lado do cliente, resultando em um fluxo semi-fechado ou totalmente fechado se o lado remoto já tiver sido fechado.