BidirectionalStream

public 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 opisach poszczególnych metod.

Podsumowanie

Typy zagnieżdżone

public abstract class BidirectionalStream.Builder

Konstruktor dla BidirectionalStream.

public abstract class BidirectionalStream.Callback

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

Konstruktory publiczne

Metody publiczne

abstract void

Anuluje strumień.

abstract void

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 void
read(ByteBuffer buffer)

Odczytuje dane ze strumienia do podanego bufora.

abstract void

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

abstract void
write(ByteBuffer buffer, boolean endOfStream)

Dodaje dane do zapisu w strumieniu.

Konstruktory publiczne

BidirectionalStream

public BidirectionalStream()

Metody publiczne

cancel

public abstract void cancel()

Anuluje strumień. Można wywołać w dowolnym momencie po wywołaniu start. onCanceled() zostanie wywołana, gdy anulowanie się zakończy, a żadne inne metody wywołania zwrotnego nie zostaną wywołane. Jeśli strumień został zakończony lub nie został uruchomiony, wywołanie cancel() nie ma ż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ływany 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

public abstract void flush()

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

public abstract boolean isDone()

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 false, co oznacza, że strumień nie został jeszcze uruchomiony lub jest w trakcie działania.

read

public abstract void read(ByteBuffer buffer)

Odczytuje dane ze strumienia do podanego bufora. Można 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's onReadCompleted() w przypadku odczytania danych lub onFailed() w przypadku wystąpienia błędu. 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
ByteBuffer buffer

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

start

public abstract void start()

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

write

public abstract void write(ByteBuffer buffer, boolean endOfStream)

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 Callback's onWriteCompleted() w przypadku wysłania danych lub onFailed() w przypadku wystąpienia błędu.

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
ByteBuffer buffer

ByteBuffer, z którego mają zostać zapisane dane. Musi to być bezpośredni ByteBuffer. Do momentu wywołania onWriteCompleted(), onCanceled() lub onFailed() element 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.

boolean endOfStream

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