BidirectionalStream

public abstract class BidirectionalStream


HTTP/2 또는 QUIC 연결을 통해 데이터를 양방향으로 전송하고 수신하는 클래스입니다. Builder에 의해 생성됩니다.

참고: BidirectionalStream 메서드에는 순서 제한이 있습니다. 제한에 관한 설명은 개별 메서드를 참고하세요.

요약

중첩된 유형

public abstract class BidirectionalStream.Builder

BidirectionalStream의 빌더입니다.

public abstract class BidirectionalStream.Callback

BidirectionalStream에서 콜백을 수신하는 데 사용되는 콜백 클래스입니다.

공개 생성자

공개 메서드

abstract void

스트림을 취소합니다.

abstract void

대기 중인 쓰기를 플러시합니다.

abstract boolean

스트림이 성공적으로 시작되었고 이제 완료된 경우 (`succeeded`, `canceled` 또는 `failed`) true를 반환합니다.

abstract void
read(ByteBuffer buffer)

스트림에서 제공된 버퍼로 데이터를 읽습니다.

abstract void

스트림을 시작합니다. 모든 콜백은 BidirectionalStream.Builder 생성자에 전달된 callback 인수로 이동합니다.

abstract void
write(ByteBuffer buffer, boolean endOfStream)

스트림에 쓸 데이터를 추가합니다.

공개 생성자

BidirectionalStream

public BidirectionalStream()

공개 메서드

취소

public abstract void cancel()

스트림을 취소합니다. start 후 언제든지 호출할 수 있습니다. 취소가 완료되고 추가 콜백 메서드가 호출되지 않으면 onCanceled()가 호출됩니다. 스트림이 완료되었거나 시작되지 않은 경우 cancel()을 호출해도 아무런 효과가 없으며 onCanceled()가 호출되지 않습니다. BidirectionalStream 생성 중에 전달된 Executor가 단일 스레드에서 작업을 실행하고 해당 스레드에서 cancel()이 호출되면 cancel()이 호출된 후 리스너 메서드 (onCanceled() 제외)가 호출되지 않습니다. 그렇지 않으면 cancel()이 완료된 후 최대 하나의 콜백 메서드가 호출될 수 있습니다.

플러시

public abstract void flush()

대기 중인 쓰기를 플러시합니다. 이 메서드는 onStreamReady() 전에 호출해서는 안 됩니다. 이전에 지연된 write()의 경우 버퍼가 전송될 때 해당하는 onWriteCompleted()가 호출됩니다.

isDone

public abstract boolean isDone()

스트림이 성공적으로 시작되었고 이제 완료된 경우 (`succeeded`, `canceled` 또는 `failed`) true를 반환합니다.

반환
boolean

스트림이 성공적으로 시작되었고 이제 완료된 경우 (`completed`, `canceled` 또는 `failed`) true를 반환하고, 그렇지 않으면 스트림이 아직 시작되지 않았거나 진행 중임을 나타내는 false를 반환합니다.

읽음

public abstract void read(ByteBuffer buffer)

스트림에서 제공된 버퍼로 데이터를 읽습니다. CallbackonStreamReady()/ onResponseHeadersReceived() onReadCompleted() 메서드의 각 호출에 대한 응답으로 최대 한 번만 호출할 수 있습니다. 각 호출은 데이터가 읽히면 Callback onReadCompleted() 메서드 중 하나를 호출하고 오류가 있으면 onFailed() 메서드를 호출합니다. buffer.position()에서 시작하여 buffer로 데이터를 읽으려는 시도가 시작됩니다. 최대 buffer.remaining()바이트가 읽힙니다. onReadCompleted()가 호출되면 buffer.position()이 업데이트되어 읽은 데이터의 양을 나타냅니다.

매개변수
ByteBuffer buffer

데이터를 읽을 ByteBuffer입니다. 직접 ByteBuffer여야 합니다. 임베더는 onReadCompleted(), onCanceled() 또는 onFailed()가 호출될 때까지 버퍼의 위치, 제한 또는 위치와 제한 사이의 데이터를 읽거나 수정해서는 안 됩니다.

시작

public abstract void start()

스트림을 시작합니다. 모든 콜백은 BidirectionalStream.Builder 생성자에 전달된 callback 인수로 이동합니다. 한 번만 호출해야 합니다.

쓰기

public abstract void write(ByteBuffer buffer, boolean endOfStream)

스트림에 쓸 데이터를 추가합니다. 데이터는 flush()가 호출된 후에만 전송됩니다. 각 호출은 데이터가 전송되면 CallbackonWriteCompleted() 메서드 중 하나를 호출하고 오류가 있으면 onFailed() 메서드를 호출합니다.

buffer에서 시작하여 데이터를 쓰려는 시도가 시작됩니다.buffer.position() buffer.remaining()바이트가 작성됩니다. 전체 ByteBuffer가 작성된 경우에만 onWriteCompleted()가 호출됩니다.

매개변수
ByteBuffer buffer

데이터를 쓸 ByteBuffer입니다. 직접 ByteBuffer여야 합니다. 임베더는 onWriteCompleted(), onCanceled() 또는 onFailed()가 호출될 때까지 버퍼의 위치, 제한 또는 위치와 제한 사이의 데이터를 읽거나 수정해서는 안 됩니다. endOfStreamtrue이면 비어 있을 수 있습니다.

boolean endOfStream

true이면 buffer가 쓸 마지막 버퍼이고, 쓰기가 완료되면 클라이언트 측에서 스트림이 닫혀 반쯤 닫힌 스트림이 되거나 원격 측에서 이미 닫힌 경우 완전히 닫힌 스트림이 됩니다.