BidirectionalStream

abstract class BidirectionalStream


Classe per l'invio e la ricezione bidirezionali di dati tramite connessioni HTTP/2 o QUIC. Creato da Builder.

Nota: esistono limitazioni di ordinamento sui metodi di BidirectionalStream. Per una descrizione delle limitazioni, consulta i singoli metodi.

Riepilogo

Tipi nidificati

Builder per BidirectionalStream.

Classe di callback utilizzata per ricevere callback da un BidirectionalStream.

Costruttori pubblici

Funzioni pubbliche

abstract Unit

Annulla lo stream.

abstract Unit

Esegue il flush delle scritture in attesa.

abstract Boolean

Restituisce true se lo stream è stato avviato correttamente ed è stato completato (operazione riuscita, annullata o non riuscita).

abstract Unit
read(buffer: ByteBuffer!)

Legge i dati dallo stream nel buffer fornito.

abstract Unit

Avvia lo stream. Tutti i callback vengono inviati all'argomento callback passato al costruttore di BidirectionalStream.Builder.

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

Aggiunge i dati da scrivere nello stream.

Costruttori pubblici

BidirectionalStream

BidirectionalStream()

Funzioni pubbliche

cancel

abstract fun cancel(): Unit

Annulla lo stream. Può essere chiamato in qualsiasi momento dopo start. onCanceled() verrà richiamato al termine dell'annullamento e non verranno richiamati altri metodi di callback. Se lo stream è stato completato o non è stato avviato, la chiamata a cancel() non ha alcun effetto e onCanceled() non verrà richiamato. Se l'Executor passato durante la costruzione di BidirectionalStream esegue le attività su un singolo thread e cancel() viene chiamato su quel thread, non verranno richiamati metodi di listener (oltre a onCanceled()) dopo la chiamata a cancel(). In caso contrario, dopo il completamento di cancel() può essere richiamato al massimo un metodo di callback.

flush

abstract fun flush(): Unit

Esegue il flush delle scritture in attesa. Questo metodo non deve essere richiamato prima di onStreamReady(). Per le write()s ritardate in precedenza, verrà richiamato un onWriteCompleted() corrispondente quando il buffer viene inviato.

isDone

abstract fun isDone(): Boolean

Restituisce true se lo stream è stato avviato correttamente ed è stato completato (operazione riuscita, annullata o non riuscita).

Resi
Boolean

true se lo stream è stato avviato correttamente ed è stato completato (operazione riuscita, annullata o non riuscita). In caso contrario, restituisce false per indicare che lo stream non è ancora stato avviato o è in corso.

read

abstract fun read(buffer: ByteBuffer!): Unit

Legge i dati dallo stream nel buffer fornito. Può essere chiamato al massimo una volta in risposta a ogni chiamata dei metodi onStreamReady()/ onResponseHeadersReceived() e onReadCompleted() di Callback. Ogni chiamata comporterà la chiamata del metodo onReadCompleted() di Callback se i dati vengono letti o del metodo onFailed() se si verifica un errore. Viene avviato un tentativo di leggere i dati in buffer a partire da buffer.position(). Vengono letti al massimo buffer.remaining() byte. buffer.position() viene aggiornato alla chiamata di onReadCompleted() per indicare la quantità di dati letti.

Parametri
buffer: ByteBuffer!

Il ByteBuffer in cui leggere i dati. Deve essere un ByteBuffer diretto. L'incorporatore non deve leggere o modificare la posizione, il limite o i dati del buffer tra la posizione e il limite fino a quando non vengono chiamati onReadCompleted(), onCanceled() o onFailed().

start

abstract fun start(): Unit

Avvia lo stream. Tutti i callback vengono inviati all'argomento callback passato al costruttore di BidirectionalStream.Builder. Deve essere chiamato una sola volta.

write

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

Aggiunge i dati da scrivere nello stream. I dati verranno inviati solo dopo la chiamata a flush(). Ogni chiamata comporterà la chiamata del metodo onWriteCompleted() di Callback se i dati vengono inviati o del metodo onFailed() se si verifica un errore.

Viene avviato un tentativo di scrivere i dati da buffer a partire da buffer.position(). Verranno scritti buffer.remaining() byte. onWriteCompleted() verrà richiamato solo quando viene scritto l'intero ByteBuffer.

Parametri
buffer: ByteBuffer!

Il ByteBuffer da cui scrivere i dati. Deve essere un ByteBuffer diretto. L'incorporatore non deve leggere o modificare la posizione, il limite o i dati del buffer tra la posizione e il limite fino a quando non vengono chiamati onWriteCompleted(), onCanceled() o onFailed(). Può essere vuoto quando endOfStream è true.

endOfStream: Boolean

Se true, buffer è l'ultimo buffer da scrivere e, una volta scritto, lo stream viene chiuso dal lato client, con conseguente stream semi-chiuso o completamente chiuso se il lato remoto è già stato chiuso.