Class BidiStream<RequestT,ResponseT> (2.15.0) Stay organized with collections Save and categorize content based on your preferences.
- 2.72.2 (latest)
- 2.72.1
- 2.71.0
- 2.70.3
- 2.69.0
- 2.68.2
- 2.67.0
- 2.66.0
- 2.65.0
- 2.63.1
- 2.62.0
- 2.61.0
- 2.60.0
- 2.59.1
- 2.58.0
- 2.57.0
- 2.55.0
- 2.54.1
- 2.53.0
- 2.52.0
- 2.51.0
- 2.50.0
- 2.49.0
- 2.48.1
- 2.47.0
- 2.46.1
- 2.45.0
- 2.43.0
- 2.42.0
- 2.41.0
- 2.39.0
- 2.38.0
- 2.37.0
- 2.36.0
- 2.35.0
- 2.34.1
- 2.33.0
- 2.32.1
- 2.31.1
- 2.30.1
- 2.24.0
- 2.23.3
- 2.22.0
- 2.21.0
- 2.20.1
- 2.19.6
- 2.18.7
- 2.17.0
- 2.16.0
- 2.15.0
- 2.14.0
- 2.13.0
- 2.12.2
- 2.11.0
- 2.10.0
- 2.9.0
- 2.8.1
- 2.7.1
publicclassBidiStream<RequestT,ResponseT>extendsServerStream<ResponseT>implementsClientStream<RequestT>A wrapper around a bidirectional stream.
This class asynchronously pulls responses from upstream viaStreamController#request(int) and exposes them via its Iterator. The implementation is back pressure aware and uses a constant buffer of 1 item.
Please note that the stream can only be consumed once and must either be fully consumed or be canceled.
This class can also be used to send requests to the server using#send(Object).
Neither this class nor the iterator it returns is thread-safe.
In the example below, we iterate through responses from the server and echo back the items we see:
BidiStream<Item>stream=...;for(Itemitem:stream){System.out.println(item.id());stream.send(item.id());// Allow for early terminationif(item.id().equals("needle")){// Cancelling the stream will causehasNext() to return false on the next iteration,// naturally breaking the loop.stream.cancel();}}Implements
com.google.api.gax.rpc.ClientStream<RequestT>Inherited Members
Type Parameters
| Name | Description |
| RequestT | |
| ResponseT |
Methods
closeSend()
publicvoidcloseSend()Closes the sending side of the stream. Once called, no further calls to#send(Object),#closeSend(), or#closeSendWithError(Throwable) are allowed.
Calling this method does not affect the receiving side, the iterator will continue to yield responses from the server.
closeSendWithError(Throwable t)
publicvoidcloseSendWithError(Throwablet)Closes the sending side of the stream with error. The error is propagated to the server. Once called, no further calls to#send(Object),#closeSend(), or#closeSendWithError(Throwable) are allowed.
Calling this method does not affect the receiving side, the iterator will continue to yield responses from the server.
| Name | Description |
| t | Throwable |
isSendReady()
publicbooleanisSendReady()Reports whether a message can be sent without requiring excessive buffering internally.
This method only provides a hint. It is still correct for the user to call#send(Object) even when this method returnsfalse.
| Type | Description |
| boolean |
send(RequestT req)
publicvoidsend(RequestTreq)Sendreq to the server.
| Name | Description |
| req | RequestT |
Except as otherwise noted, the content of this page is licensed under theCreative Commons Attribution 4.0 License, and code samples are licensed under theApache 2.0 License. For details, see theGoogle Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.
Last updated 2025-12-17 UTC.