BidirectionalStream

public abstract class BidirectionalStream


Lớp để gửi và nhận dữ liệu hai chiều qua các kết nối HTTP/2 hoặc QUIC. Người tạo: Builder

Lưu ý: Có các quy định hạn chế về thứ tự đối với các phương thức BidirectionalStream; vui lòng xem từng phương thức để biết nội dung mô tả về các quy định hạn chế.

Tóm tắt

Các loại lồng nhau

public abstract class BidirectionalStream.Builder

Trình tạo cho BidirectionalStream.

public abstract class BidirectionalStream.Callback

Lớp gọi lại dùng để nhận các lệnh gọi lại từ một BidirectionalStream.

Hàm khởi tạo công khai

Phương thức công khai

abstract void

Huỷ luồng.

abstract void

Xoá các hoạt động ghi đang chờ xử lý.

abstract boolean

Trả về true nếu luồng đã bắt đầu thành công và hiện đã hoàn tất (thành công, bị huỷ hoặc không thành công).

abstract void
read(ByteBuffer buffer)

Đọc dữ liệu từ luồng vào vùng đệm được cung cấp.

abstract void

Bắt đầu luồng, tất cả các lệnh gọi lại đều chuyển đến đối số callback được truyền đến hàm khởi tạo của BidirectionalStream.Builder.

abstract void
write(ByteBuffer buffer, boolean endOfStream)

Thêm dữ liệu sẽ được ghi vào luồng.

Hàm khởi tạo công khai

BidirectionalStream

public BidirectionalStream()

Phương thức công khai

hủy

public abstract void cancel()

Huỷ luồng. Có thể được gọi bất cứ lúc nào sau start. onCanceled() sẽ được gọi khi quá trình huỷ hoàn tất và không có phương thức gọi lại nào khác được gọi. Nếu luồng đã hoàn tất hoặc chưa bắt đầu, thì việc gọi cancel() sẽ không có hiệu lực và onCanceled() sẽ không được gọi. Nếu Executor được truyền vào trong quá trình tạo BidirectionalStream chạy các tác vụ trên một luồng duy nhất và cancel() được gọi trên luồng đó, thì không có phương thức trình nghe nào (ngoài onCanceled()) được gọi sau khi cancel() được gọi. Nếu không, tối đa một phương thức gọi lại có thể được gọi sau khi cancel() hoàn tất.

flush

public abstract void flush()

Xoá các hoạt động ghi đang chờ xử lý. Bạn không nên gọi phương thức này trước onStreamReady(). Đối với các write() bị trì hoãn trước đó, onWriteCompleted() tương ứng sẽ được gọi khi vùng đệm được gửi.

isDone

public abstract boolean isDone()

Trả về true nếu luồng đã bắt đầu thành công và hiện đã hoàn tất (thành công, bị huỷ hoặc không thành công).

Giá trị trả về
boolean

true nếu luồng đã bắt đầu thành công và hiện đã hoàn tất (hoàn thành, bị huỷ hoặc không thành công), nếu không, hãy trả về false để cho biết luồng chưa bắt đầu hoặc đang diễn ra.

đọc

public abstract void read(ByteBuffer buffer)

Đọc dữ liệu từ luồng vào vùng đệm được cung cấp. Chỉ có thể được gọi tối đa một lần để phản hồi mỗi lần gọi các phương thức onStreamReady()/ onResponseHeadersReceived() onReadCompleted() của Callback. Mỗi lệnh gọi sẽ dẫn đến việc gọi một trong các phương thức onReadCompleted() của Callback nếu dữ liệu được đọc hoặc phương thức onFailed() nếu có lỗi. Hệ thống bắt đầu cố gắng đọc dữ liệu vào buffer bắt đầu từ buffer.position(). Đọc tối đa buffer.remaining() byte. buffer.position() được cập nhật khi gọi onReadCompleted() để cho biết lượng dữ liệu đã được đọc.

Tham số
ByteBuffer buffer

ByteBuffer để đọc dữ liệu. Phải là một ByteBuffer trực tiếp. Trình nhúng không được đọc hoặc sửa đổi vị trí, giới hạn hoặc dữ liệu của vùng đệm giữa vị trí và giới hạn cho đến khi onReadCompleted(), onCanceled() hoặc onFailed() được gọi.

bắt đầu

public abstract void start()

Bắt đầu luồng, tất cả các lệnh gọi lại đều chuyển đến đối số callback được truyền đến hàm khởi tạo của BidirectionalStream.Builder. Chỉ nên gọi một lần.

write

public abstract void write(ByteBuffer buffer, boolean endOfStream)

Thêm dữ liệu sẽ được ghi vào luồng. Dữ liệu sẽ chỉ được gửi sau khi flush() được gọi. Mỗi lệnh gọi sẽ dẫn đến việc gọi một trong các phương thức onWriteCompleted() của Callback nếu dữ liệu được gửi hoặc phương thức onFailed() nếu có lỗi.

Hệ thống bắt đầu tìm cách ghi dữ liệu từ buffer bắt đầu từ buffer.position(). buffer.remaining() byte sẽ được ghi. onWriteCompleted() sẽ chỉ được gọi khi ByteBuffer đầy được ghi.

Tham số
ByteBuffer buffer

ByteBuffer để ghi dữ liệu. Phải là một ByteBuffer trực tiếp. Trình nhúng không được đọc hoặc sửa đổi vị trí, giới hạn hoặc dữ liệu của vùng đệm giữa vị trí và giới hạn cho đến khi onWriteCompleted(), onCanceled() hoặc onFailed() được gọi. Có thể để trống khi endOfStreamtrue.

boolean endOfStream

nếu true, thì buffer là vùng đệm cuối cùng được ghi và sau khi được ghi, luồng sẽ đóng từ phía máy khách, dẫn đến luồng bán khép hoặc luồng khép hoàn toàn nếu phía từ xa đã đóng.