Interface ReadStream<T>
- All Superinterfaces:
StreamBase
- All Known Subinterfaces:
AmqpReceiver, AsyncFile, CassandraRowStream, ClientWebSocket, GrpcClientResponse<Req,Resp>, GrpcReadStream<T>, GrpcServerRequest<Req, Resp>, HttpClientResponse, HttpServerFileUpload, HttpServerRequest, JsonParser, KafkaConsumer<K, V>, KafkaReadStream<K, V>, MessageConsumer<T>, NetSocket, PgChannel, QuicStream, RabbitMQConsumer, ReactiveReadStream<T>, RecordParser, RedisConnection, RowStream<T>, ServerWebSocket, SockJSSocket, StreamChannel, TestSuiteReport, WebServerRequest, WebSocket, WebSocketBase
Represents a stream of items that can be read from.
Any class that implements this interface can be used by a Pipe to pipe data from it
to a WriteStream.
Streaming mode
The stream is either in flowing or fetch mode.-
Initially the stream is in flowing mode.
- When the stream is in flowing mode, elements are delivered to the
handler. - When the stream is in fetch mode, only the number of requested elements will be delivered to the
handler.
pause(), resume() and fetch(long) methods:
- Calling
resume()sets the flowing mode - Calling
pause()sets the fetch mode and resets the demand to0 - Calling
fetch(long)requests a specific amount of elements and adds it to the actual demand
When a hot read stream is obtained (e.g. `HttpServerRequest`), the read stream is in flowing mode, when a cold read stream is obtained (e.g. `AsyncFile`), the read stream is in fetch mode with no demand.
- Author:
- Tim Fox
-
Method Summary
Modifier and TypeMethodDescriptionAdapt thisReadStreamto a blocking sequentialStream, the return stream usage is restricted to non vertx threads or vertx virtual threads.default <R,A> Future <R> Apply acollectorto this stream, the obtained result is returned as a future.endHandler(Handler<Void> endHandler) Set an end handler.exceptionHandler(Handler<Throwable> handler) Set an exception handler on the read stream.fetch(long amount) Fetch the specifiedamountof elements.Set a data handler.pause()Pause theReadStream, it sets the buffer infetchmode and clears the actual demand.pipe()Pause this stream and return aPipeto transfer the elements of this stream to a destinationWriteStream.pipeTo(WriteStream<T> dst) Pipe thisReadStreamto theWriteStream.resume()Resume reading, and sets the buffer inflowingmode.
-
Method Details
-
exceptionHandler
Set an exception handler on the read stream.- Specified by:
exceptionHandlerin interfaceStreamBase- Parameters:
handler- the exception handler- Returns:
- a reference to this, so the API can be used fluently
-
handler
Set a data handler. As data is read, the handler will be called with the data.- Returns:
- a reference to this, so the API can be used fluently
-
pause
ReadStream<T> pause()Pause theReadStream, it sets the buffer infetchmode and clears the actual demand.While it's paused, no data will be sent to the data
handler.- Returns:
- a reference to this, so the API can be used fluently
-
resume
ReadStream<T> resume()Resume reading, and sets the buffer inflowingmode. If theReadStreamhas been paused, reading will recommence on it.- Returns:
- a reference to this, so the API can be used fluently
-
fetch
Fetch the specifiedamountof elements. If theReadStreamhas been paused, reading will recommence with the specifiedamountof items, otherwise the specifiedamountwill be added to the current stream demand.- Returns:
- a reference to this, so the API can be used fluently
- Throws:
IllegalArgumentException- when the amount is a negative value
-
endHandler
Set an end handler. Once the stream has ended, and there is no more data to be read, this handler will be called.- Returns:
- a reference to this, so the API can be used fluently
-
pipe
Pause this stream and return aPipeto transfer the elements of this stream to a destinationWriteStream. The stream will be resumed when the pipe will be wired to aWriteStream.- Returns:
- a pipe
-
collect
-
blockingStream
-
pipeTo
Pipe thisReadStreamto theWriteStream.Elements emitted by this stream will be written to the write stream until this stream ends or fails.
- Parameters:
dst- the destination write stream- Returns:
- a future notified when the write stream will be ended with the outcome
-