Package io.vertx.rxjava3.core.streams

## Interface ReadStream<T>

- All Superinterfaces:
    `io.vertx.lang.rx.RxDelegate`, `StreamBase`
  All Known Subinterfaces:
    `WebSocketBase`
  All Known Implementing Classes:
    `AmqpReceiver`, `AsyncFile`, `CassandraRowStream`, `ClientWebSocket`, `GrpcClientResponse`, `GrpcReadStream`, `GrpcServerRequest`, `HttpClientResponse`, `HttpServerFileUpload`, `HttpServerRequest`, `JsonParser`, `KafkaConsumer`, `MessageConsumer`, `NetSocket`, `PgChannel`, `RabbitMQConsumer`, `RecordParser`, `RedisConnection`, `RowStream`, `ServerWebSocket`, `SockJSSocket`, `TestSuiteReport`, `WebSocket`

      public interface ReadStream<T>
      extends io.vertx.lang.rx.RxDelegate, StreamBase

  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`.
  The mode can be changed with the `pause()`, `resume()` and `fetch(long)` methods:
  - Calling `resume()` sets the flowing mode
  - Calling `pause()` sets the fetch mode and resets the demand to `0`
  - Calling `fetch(long)` requests a specific amount of elements and adds it to the actual demand

  NOTE: This class has been automatically generated from the `original` non RX-ified interface using Vert.x codegen.

- - ### Method Summary

    All Methods Static Methods Instance Methods Abstract Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `ReadStream<T>` | `endHandler​(Handler<Void> endHandler)` | Set an end handler.
    `ReadStream<T>` | `exceptionHandler​(Handler<Throwable> handler)` | Set an exception handler on the read stream.
    `ReadStream<T>` | `fetch​(long amount)` | Fetch the specified `amount` of elements.
    `ReadStream` | `getDelegate()` |
    `ReadStream<T>` | `handler​(Handler<T> handler)` | Set a data handler.
    `static <T> ReadStream<T>` | `newInstance​(ReadStream arg)` |
    `static <T> ReadStream<T>` | `newInstance​(ReadStream arg, io.vertx.lang.rx.TypeArg<T> __typeArg_T)` |
    `ReadStream<T>` | `pause()` | Pause the `ReadStream`, it sets the buffer in `fetch` mode and clears the actual demand.
    `Pipe<T>` | `pipe()` | Pause this stream and return a `Pipe` to transfer the elements of this stream to a destination `WriteStream`.
    `Completable` | `pipeTo​(WriteStream<T> dst)` | Pipe this `ReadStream` to the `WriteStream`.
    `ReadStream<T>` | `resume()` | Resume reading, and sets the buffer in `flowing` mode.
    `Completable` | `rxPipeTo​(WriteStream<T> dst)` | Pipe this `ReadStream` to the `WriteStream`.
    `Flowable<T>` | `toFlowable()` |
    `Observable<T>` | `toObservable()` |

- - ### Method Detail

    - #### getDelegate

          ReadStream getDelegate()

      Specified by:
        `getDelegate` in interface `io.vertx.lang.rx.RxDelegate`
      Specified by:
        `getDelegate` in interface `StreamBase`

    - #### exceptionHandler

          ReadStream<T> exceptionHandler​(Handler<Throwable> handler)

      Set an exception handler on the read stream.
      Specified by:
        `exceptionHandler` in interface `StreamBase`
      Parameters:
        `handler` - the exception handler
      Returns:
        a reference to this, so the API can be used fluently

    - #### handler

          ReadStream<T> handler​(Handler<T> handler)

      Set a data handler. As data is read, the handler will be called with the data.
      Parameters:
        `handler` -
      Returns:
        a reference to this, so the API can be used fluently

    - #### pause

          ReadStream<T> pause()

      Pause the `ReadStream`, it sets the buffer in `fetch` mode 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 in `flowing` mode.

      If the `ReadStream` has been paused, reading will recommence on it.
      Returns:
        a reference to this, so the API can be used fluently

    - #### fetch

          ReadStream<T> fetch​(long amount)

      Fetch the specified `amount` of elements. If the `ReadStream` has been paused, reading will recommence with the specified `amount` of items, otherwise the specified `amount` will be added to the current stream demand.
      Parameters:
        `amount` -
      Returns:
        a reference to this, so the API can be used fluently

    - #### endHandler

          ReadStream<T> endHandler​(Handler<Void> endHandler)

      Set an end handler. Once the stream has ended, and there is no more data to be read, this handler will be called.
      Parameters:
        `endHandler` -
      Returns:
        a reference to this, so the API can be used fluently

    - #### pipe

          Pipe<T> pipe()

      Pause this stream and return a `Pipe` to transfer the elements of this stream to a destination `WriteStream`.

      The stream will be resumed when the pipe will be wired to a `WriteStream`.
      Returns:
        a pipe

    - #### pipeTo

          Completable pipeTo​(WriteStream<T> dst)

      Pipe this `ReadStream` to the `WriteStream`.

      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

    - #### rxPipeTo

          Completable rxPipeTo​(WriteStream<T> dst)

      Pipe this `ReadStream` to the `WriteStream`.

      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

    - #### toObservable

          Observable<T> toObservable()

    - #### toFlowable

          Flowable<T> toFlowable()

    - #### newInstance

          static <T> ReadStream<T> newInstance​(ReadStream arg)

    - #### newInstance

          static <T> ReadStream<T> newInstance​(ReadStream arg,
                                               io.vertx.lang.rx.TypeArg<T> __typeArg_T)