BidirectionalStream

abstract class BidirectionalStream


Classe para envio e recebimento bidirecional de dados em conexões HTTP/2 ou QUIC. Criada pelo 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

Builder para BidirectionalStreams.

Classe de callback usada para receber callbacks de um BidirectionalStream.

Construtores públicos

Funções públicas

abstract Unit

Cancela o stream.

abstract Unit

Transfere gravações pendentes.

abstract Boolean

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

abstract Unit
read(buffer: ByteBuffer!)

Lê dados do stream no buffer fornecido.

abstract Unit

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

abstract Unit
write(buffer: ByteBuffer!, endOfStream: Boolean)

Adiciona dados a serem gravados no stream.

Construtores públicos

BidirectionalStream

BidirectionalStream()

Funções públicas

cancelar

abstract fun cancel(): Unit

Cancela o stream. 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 stream 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

abstract fun flush(): Unit

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

isDone

abstract fun isDone(): Boolean

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

Retorna
Boolean

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

Lidos

abstract fun read(buffer: ByteBuffer!): Unit

Lê dados do stream no 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
buffer: ByteBuffer!

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

abstract fun start(): Unit

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

gravação

abstract fun write(buffer: ByteBuffer!, endOfStream: Boolean): Unit

Adiciona dados a serem gravados no stream. 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. Os bytes buffer.remaining() serão gravados. onWriteCompleted() será invocado somente quando o ByteBuffer completo for gravado.

Parâmetros
buffer: ByteBuffer!

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.

endOfStream: Boolean

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