V - The type of each response.@BetaApi(value="The surface for streaming is not stable yet and may change in the future.") public final class ServerStream<V> extends Object implements Iterable<V>
This class asynchronously pulls responses from upstream via StreamController.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.
Neither this class nor the iterator it returns is thread-safe.
Example usage:
ServerStream<Item> stream = ...;
for (Item item : stream) {
System.out.println(item.id());
// Allow for early termination
if (item.id().equals("needle")) {
// Cancelling the stream will cause `hasNext()` to return false on the next iteration,
// naturally breaking the loop.
stream.cancel();
}
}
| Modifier and Type | Method and Description |
|---|---|
void |
cancel()
Cleanly cancels a partially consumed stream.
|
boolean |
isReady()
Returns true if the next call to the iterator's hasNext() or next() is guaranteed to be
nonblocking.
|
Iterator<V> |
iterator() |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitforEach, spliteratorpublic boolean isReady()
public void cancel()