BidirectionalStream

abstract class BidirectionalStream


Klasa do dwukierunkowego wysyłania i odbierania danych przez połączenia HTTP/2 lub QUIC. Utworzona przez Builder.

Uwaga: metody BidirectionalStream podlegają ograniczeniom dotyczącym kolejności. Opis ograniczeń znajdziesz w poszczególnych metodach.

Podsumowanie

Typy zagnieżdżone

Konstruktor dla BidirectionalStream.

Klasa wywołania zwrotnego używana do odbierania wywołań zwrotnych z BidirectionalStream.

Konstruktory publiczne

Funkcje publiczne

abstract Unit

Anuluje strumień.

abstract Unit

Opróżnia oczekujące zapisy.

abstract Boolean

Zwraca wartość true, jeśli strumień został pomyślnie uruchomiony i jest już zamknięty (zakończony, anulowany lub nieudany).

abstract Unit
read(buffer: ByteBuffer!)

Odczytuje dane ze strumienia do podanego bufora.

abstract Unit

Uruchamia strumień. Wszystkie wywołania zwrotne są przekazywane do argumentu callback przekazanego do konstruktora BidirectionalStream.Builder.

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

Dodaje dane do zapisu w strumieniu.

Konstruktory publiczne

BidirectionalStream

BidirectionalStream()

Funkcje publiczne

cancel

abstract fun cancel(): Unit

Anuluje strumień. Można wywołać w dowolnym momencie po wywołaniu start. Gdy anulowanie zostanie zakończone i nie będą już wywoływane żadne metody wywołania zwrotnego, zostanie wywołana funkcja onCanceled(). Jeśli strumień został zakończony lub nie został uruchomiony, wywołanie cancel() nie przyniesie żadnego efektu, a funkcja onCanceled() nie zostanie wywołana. Jeśli Executor przekazany podczas tworzenia BidirectionalStream wykonuje zadania w jednym wątku, a cancel() jest wywoływana w tym wątku, po wywołaniu cancel() nie zostaną wywołane żadne metody odbiornika (oprócz onCanceled()). W przeciwnym razie po zakończeniu cancel() można wywołać co najwyżej 1 metodę wywołania zwrotnego.

flush

abstract fun flush(): Unit

Opróżnia oczekujące zapisy. Tej metody nie należy wywoływać przed onStreamReady(). W przypadku wcześniej opóźnionych wywołań write() po wysłaniu bufora zostanie wywołana odpowiednia funkcja onWriteCompleted().

isDone

abstract fun isDone(): Boolean

Zwraca wartość true, jeśli strumień został pomyślnie uruchomiony i jest już zamknięty (zakończony, anulowany lub nieudany).

Zwraca
Boolean

true, jeśli strumień został pomyślnie uruchomiony i jest już zamknięty (zakończony, anulowany lub nieudany). W przeciwnym razie zwraca wartość false, co oznacza, że strumień nie został jeszcze uruchomiony lub jest w trakcie działania.

read

abstract fun read(buffer: ByteBuffer!): Unit

Odczytuje dane ze strumienia do podanego bufora. Można ją wywołać co najwyżej raz w odpowiedzi na każde wywołanie metod onStreamReady()/ onResponseHeadersReceived() i onReadCompleted() w Callback. Każde wywołanie spowoduje wywołanie jednej z metod Callback onReadCompleted() (jeśli dane zostaną odczytane) lub onFailed() (jeśli wystąpi błąd). Rozpoczyna się próba odczytania danych do buffer od pozycji buffer.position(). Odczytanych zostanie co najwyżej buffer.remaining() bajtów. Po wywołaniu onReadCompleted() pozycja buffer.position() zostanie zaktualizowana, aby wskazać, ile danych zostało odczytanych.

Parametry
buffer: ByteBuffer!

ByteBuffer, do którego mają zostać odczytane dane. Musi to być bezpośredni ByteBuffer. Do momentu wywołania funkcji onReadCompleted(), onCanceled() lub onFailed() osadzający nie może odczytywać ani modyfikować pozycji, limitu ani danych bufora między jego pozycją a limitem.

start

abstract fun start(): Unit

Uruchamia strumień. Wszystkie wywołania zwrotne są przekazywane do argumentu callback przekazanego do konstruktora BidirectionalStream.Builder. Należy wywołać tylko raz.

write

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

Dodaje dane do zapisu w strumieniu. Dane zostaną wysłane dopiero po wywołaniu flush(). Każde wywołanie spowoduje wywołanie jednej z metod CallbackonWriteCompleted() (jeśli dane zostaną wysłane) lub onFailed() (jeśli wystąpi błąd).

Rozpoczyna się próba zapisania danych z buffer od pozycji buffer.position(). Zapisanych zostanie buffer.remaining() bajtów. Funkcja onWriteCompleted() zostanie wywołana tylko wtedy, gdy zostanie zapisany cały ByteBuffer.

Parametry
buffer: ByteBuffer!

ByteBuffer, z którego mają zostać zapisane dane. Musi to być bezpośredni ByteBuffer. Do momentu wywołania funkcji onWriteCompleted(), onCanceled() lub onFailed() osadzający nie może odczytywać ani modyfikować pozycji, limitu ani danych bufora między jego pozycją a limitem. Może być pusty, gdy endOfStream ma wartość true.

endOfStream: Boolean

Jeśli ma wartość true, buffer jest ostatnim buforem do zapisu. Po jego zapisaniu strumień zostanie zamknięty po stronie klienta, co spowoduje zamknięcie strumienia w połowie lub całkowite zamknięcie strumienia, jeśli strona zdalna została już zamknięta.