io.vertx.reactivex.core.parsetools

## Class RecordParser

- java.lang.Object
- - io.vertx.reactivex.core.parsetools.RecordParser

- All Implemented Interfaces:
    Handler<Buffer>, ReadStream<Buffer>, StreamBase

      public class RecordParser
      extends Object
      implements ReadStream<Buffer>, Handler<Buffer>

  A helper class which allows you to easily parse protocols which are delimited by a sequence of bytes, or fixed size records.

  Instances of this class take as input `Buffer` instances containing raw bytes, and output records.

  For example, if I had a simple ASCII text protocol delimited by '\n' and the input was the following:

       buffer1:HELLO\nHOW ARE Y
       buffer2:OU?\nI AM
       buffer3: DOING OK
       buffer4:\n

  Then the output would be:

       buffer1:HELLO
       buffer2:HOW ARE YOU?
       buffer3:I AM DOING OK

  Instances of this class can be changed between delimited mode and fixed size record mode on the fly as individual records are read, this allows you to parse protocols where, for example, the first 5 records might all be fixed size (of potentially different sizes), followed by some delimited records, followed by more fixed size records.

  Instances of this class can't currently be used for protocols where the text is encoded with something other than a 1-1 byte-char mapping.

  Please see the documentation for more information.

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

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static io.vertx.lang.rx.TypeArg<RecordParser>` | `__TYPE_ARG`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `RecordParser(RecordParser delegate)`

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `delimitedMode(Buffer delim)` Flip the parser into delimited mode, and where the delimiter can be represented by the delimiter `delim`.
    `void` | `delimitedMode(String delim)` Flip the parser into delimited mode, and where the delimiter can be represented by the String `delim` encoded in latin-1 .
    `RecordParser` | `endHandler(Handler<Void> endHandler)` Set an end handler.
    `boolean` | `equals(Object o)`
    `RecordParser` | `exceptionHandler(Handler<Throwable> handler)` Set an exception handler on the read stream.
    `RecordParser` | `fetch(long amount)` Fetch the specified `amount` of elements.
    `void` | `fixedSizeMode(int size)` Flip the parser into fixed size mode, where the record size is specified by `size` in bytes.
    `RecordParser` | `getDelegate()`
    `void` | `handle(Buffer buffer)` This method is called to provide the parser with data.
    `RecordParser` | `handler(Handler<Buffer> handler)` Set a data handler.
    `int` | `hashCode()`
    `RecordParser` | `maxRecordSize(int size)` Set the maximum allowed size for a record when using the delimited mode.
    `static RecordParser` | `newDelimited(Buffer delim)` Create a new `RecordParser` instance, initially in delimited mode, and where the delimiter can be represented by the `Buffer` delim.
    `static RecordParser` | `newDelimited(Buffer delim, Flowable<Buffer> stream)` Like `newDelimited(java.lang.String, io.vertx.core.Handler<io.vertx.reactivex.core.buffer.Buffer>)` but wraps the `stream`.
    `static RecordParser` | `newDelimited(Buffer delim, Handler<Buffer> output)` Like `newDelimited(java.lang.String, io.vertx.core.Handler<io.vertx.reactivex.core.buffer.Buffer>)` but set the `output` that will receive whole records which have been parsed.
    `static RecordParser` | `newDelimited(Buffer delim, Observable<Buffer> stream)` Like `newDelimited(java.lang.String, io.vertx.core.Handler<io.vertx.reactivex.core.buffer.Buffer>)` but wraps the `stream`.
    `static RecordParser` | `newDelimited(Buffer delim, ReadStream<Buffer> stream)` Like `newDelimited(java.lang.String, io.vertx.core.Handler<io.vertx.reactivex.core.buffer.Buffer>)` but wraps the `stream`.
    `static RecordParser` | `newDelimited(String delim)` Create a new `RecordParser` instance, initially in delimited mode, and where the delimiter can be represented by the String `` delim endcoded in latin-1 .
    `static RecordParser` | `newDelimited(String delim, Flowable<Buffer> stream)` Like `newDelimited(java.lang.String, io.vertx.core.Handler<io.vertx.reactivex.core.buffer.Buffer>)` but wraps the `stream`.
    `static RecordParser` | `newDelimited(String delim, Handler<Buffer> output)` Like `newDelimited(java.lang.String, io.vertx.core.Handler<io.vertx.reactivex.core.buffer.Buffer>)` but set the `output` that will receive whole records which have been parsed.
    `static RecordParser` | `newDelimited(String delim, Observable<Buffer> stream)` Like `newDelimited(java.lang.String, io.vertx.core.Handler<io.vertx.reactivex.core.buffer.Buffer>)` but wraps the `stream`.
    `static RecordParser` | `newDelimited(String delim, ReadStream<Buffer> stream)` Like `newDelimited(java.lang.String, io.vertx.core.Handler<io.vertx.reactivex.core.buffer.Buffer>)` but wraps the `stream`.
    `static RecordParser` | `newFixed(int size)` Create a new `RecordParser` instance, initially in fixed size mode, and where the record size is specified by the `size` parameter.
    `static RecordParser` | `newFixed(int size, Flowable<Buffer> stream)` Like `newFixed(int)` but wraps the `stream`.
    `static RecordParser` | `newFixed(int size, Handler<Buffer> output)` Like `newFixed(int)` but set the `output` that will receive whole records which have been parsed.
    `static RecordParser` | `newFixed(int size, Observable<Buffer> stream)` Like `newFixed(int)` but wraps the `stream`.
    `static RecordParser` | `newFixed(int size, ReadStream<Buffer> stream)` Like `newFixed(int)` but wraps the `stream`.
    `static RecordParser` | `newInstance(RecordParser arg)`
    `RecordParser` | `pause()` Pause the `ReadStream`, it sets the buffer in `fetch` mode and clears the actual demand.
    `Pipe<Buffer>` | `pipe()` Pause this stream and return a to transfer the elements of this stream to a destination .
    `void` | `pipeTo(WriteStream<Buffer> dst)` Like `ReadStream.pipeTo(io.vertx.reactivex.core.streams.WriteStream<T>)` but with no completion handler.
    `void` | `pipeTo(WriteStream<Buffer> dst, Handler<AsyncResult<Void>> handler)` Pipe this `ReadStream` to the `WriteStream`.
    `RecordParser` | `resume()` Resume reading, and sets the buffer in `flowing` mode.
    `Completable` | `rxPipeTo(WriteStream<Buffer> dst)` Pipe this `ReadStream` to the `WriteStream`.
    `void` | `setOutput(Handler<Buffer> output)`
    `Flowable<Buffer>` | `toFlowable()`
    `Observable<Buffer>` | `toObservable()`
    `String` | `toString()`

    - ### Methods inherited from class java.lang.Object

      `clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

    - ### Methods inherited from interface io.vertx.reactivex.core.streams.ReadStream

      `newInstance, newInstance`

    - ### Methods inherited from interface io.vertx.reactivex.core.streams.StreamBase

      `newInstance`

- - ### Field Detail

    - #### __TYPE_ARG

          public static final io.vertx.lang.rx.TypeArg<RecordParser> __TYPE_ARG

  - ### Constructor Detail

    - #### RecordParser

          public RecordParser(RecordParser delegate)

  - ### Method Detail

    - #### toString

          public String toString()

      Overrides:
        `toString` in class `Object`

    - #### equals

          public boolean equals(Object o)

      Overrides:
        `equals` in class `Object`

    - #### hashCode

          public int hashCode()

      Overrides:
        `hashCode` in class `Object`

    - #### getDelegate

          public RecordParser getDelegate()

      Specified by:
        `getDelegate` in interface `ReadStream<Buffer>`
      Specified by:
        `getDelegate` in interface `StreamBase`

    - #### toObservable

          public Observable<Buffer> toObservable()

      Specified by:
        `toObservable` in interface `ReadStream<Buffer>`

    - #### toFlowable

          public Flowable<Buffer> toFlowable()

      Specified by:
        `toFlowable` in interface `ReadStream<Buffer>`

    - #### pipe

          public Pipe<Buffer> pipe()

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

      The stream will be resumed when the pipe will be wired to a `WriteStream`.
      Specified by:
        `pipe` in interface `ReadStream<Buffer>`
      Returns:
        a pipe

    - #### pipeTo

          public void pipeTo(WriteStream<Buffer> dst)

      Like `ReadStream.pipeTo(io.vertx.reactivex.core.streams.WriteStream<T>)` but with no completion handler.
      Specified by:
        `pipeTo` in interface `ReadStream<Buffer>`
      Parameters:
        `dst` -

    - #### pipeTo

          public void pipeTo(WriteStream<Buffer> dst,
                             Handler<AsyncResult<Void>> handler)

      Pipe this `ReadStream` to the `WriteStream`.

      Elements emitted by this stream will be written to the write stream until this stream ends or fails.

      Once this stream has ended or failed, the write stream will be ended and the `handler` will be called with the result.

      Specified by:
        `pipeTo` in interface `ReadStream<Buffer>`
      Parameters:
        `dst` - the destination write stream
        `handler` -

    - #### rxPipeTo

          public Completable rxPipeTo(WriteStream<Buffer> 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.

      Once this stream has ended or failed, the write stream will be ended and the `handler` will be called with the result.

      Parameters:
        `dst` - the destination write stream
      Returns:

    - #### setOutput

          public void setOutput(Handler<Buffer> output)

    - #### newDelimited

          public static RecordParser newDelimited(String delim,
                                                  Handler<Buffer> output)

      Like `newDelimited(java.lang.String, io.vertx.core.Handler<io.vertx.reactivex.core.buffer.Buffer>)` but set the `output` that will receive whole records which have been parsed.
      Parameters:
        `delim` - the initial delimiter string
        `output` - handler that will receive the output
      Returns:

    - #### newDelimited

          public static RecordParser newDelimited(String delim,
                                                  ReadStream<Buffer> stream)

      Like `newDelimited(java.lang.String, io.vertx.core.Handler<io.vertx.reactivex.core.buffer.Buffer>)` but wraps the `stream`. The `stream` handlers will be set/unset when the `handler(io.vertx.core.Handler<io.vertx.reactivex.core.buffer.Buffer>)` is set.

      The `pause()`/`resume()` operations are propagated to the `stream`.
      Parameters:
        `delim` - the initial delimiter string
        `stream` - the wrapped stream
      Returns:

    - #### newDelimited

          public static RecordParser newDelimited(String delim,
                                                  Flowable<Buffer> stream)

      Like `newDelimited(java.lang.String, io.vertx.core.Handler<io.vertx.reactivex.core.buffer.Buffer>)` but wraps the `stream`. The `stream` handlers will be set/unset when the `handler(io.vertx.core.Handler<io.vertx.reactivex.core.buffer.Buffer>)` is set.

      The `pause()`/`resume()` operations are propagated to the `stream`.
      Parameters:
        `delim` - the initial delimiter string
        `stream` - the wrapped stream
      Returns:

    - #### newDelimited

          public static RecordParser newDelimited(String delim,
                                                  Observable<Buffer> stream)

      Like `newDelimited(java.lang.String, io.vertx.core.Handler<io.vertx.reactivex.core.buffer.Buffer>)` but wraps the `stream`. The `stream` handlers will be set/unset when the `handler(io.vertx.core.Handler<io.vertx.reactivex.core.buffer.Buffer>)` is set.

      The `pause()`/`resume()` operations are propagated to the `stream`.
      Parameters:
        `delim` - the initial delimiter string
        `stream` - the wrapped stream
      Returns:

    - #### newDelimited

          public static RecordParser newDelimited(String delim)

      Create a new `RecordParser` instance, initially in delimited mode, and where the delimiter can be represented by the String `` delim endcoded in latin-1 . Don't use this if your String contains other than latin-1 characters.

      `output` Will receive whole records which have been parsed.

      Parameters:
        `delim` - the initial delimiter string
      Returns:

    - #### newDelimited

          public static RecordParser newDelimited(Buffer delim)

      Create a new `RecordParser` instance, initially in delimited mode, and where the delimiter can be represented by the `Buffer` delim.

      Parameters:
        `delim` - the initial delimiter buffer
      Returns:

    - #### newDelimited

          public static RecordParser newDelimited(Buffer delim,
                                                  Handler<Buffer> output)

      Like `newDelimited(java.lang.String, io.vertx.core.Handler<io.vertx.reactivex.core.buffer.Buffer>)` but set the `output` that will receive whole records which have been parsed.
      Parameters:
        `delim` - the initial delimiter buffer
        `output` - handler that will receive the output
      Returns:

    - #### newDelimited

          public static RecordParser newDelimited(Buffer delim,
                                                  ReadStream<Buffer> stream)

      Like `newDelimited(java.lang.String, io.vertx.core.Handler<io.vertx.reactivex.core.buffer.Buffer>)` but wraps the `stream`. The `stream` handlers will be set/unset when the `handler(io.vertx.core.Handler<io.vertx.reactivex.core.buffer.Buffer>)` is set.

      The `pause()`/`resume()` operations are propagated to the `stream`.
      Parameters:
        `delim` - the initial delimiter buffer
        `stream` - the wrapped stream
      Returns:

    - #### newDelimited

          public static RecordParser newDelimited(Buffer delim,
                                                  Flowable<Buffer> stream)

      Like `newDelimited(java.lang.String, io.vertx.core.Handler<io.vertx.reactivex.core.buffer.Buffer>)` but wraps the `stream`. The `stream` handlers will be set/unset when the `handler(io.vertx.core.Handler<io.vertx.reactivex.core.buffer.Buffer>)` is set.

      The `pause()`/`resume()` operations are propagated to the `stream`.
      Parameters:
        `delim` - the initial delimiter buffer
        `stream` - the wrapped stream
      Returns:

    - #### newDelimited

          public static RecordParser newDelimited(Buffer delim,
                                                  Observable<Buffer> stream)

      Like `newDelimited(java.lang.String, io.vertx.core.Handler<io.vertx.reactivex.core.buffer.Buffer>)` but wraps the `stream`. The `stream` handlers will be set/unset when the `handler(io.vertx.core.Handler<io.vertx.reactivex.core.buffer.Buffer>)` is set.

      The `pause()`/`resume()` operations are propagated to the `stream`.
      Parameters:
        `delim` - the initial delimiter buffer
        `stream` - the wrapped stream
      Returns:

    - #### newFixed

          public static RecordParser newFixed(int size)

      Create a new `RecordParser` instance, initially in fixed size mode, and where the record size is specified by the `size` parameter.

      `output` Will receive whole records which have been parsed.

      Parameters:
        `size` - the initial record size
      Returns:

    - #### newFixed

          public static RecordParser newFixed(int size,
                                              Handler<Buffer> output)

      Like `newFixed(int)` but set the `output` that will receive whole records which have been parsed.
      Parameters:
        `size` - the initial record size
        `output` - handler that will receive the output
      Returns:

    - #### newFixed

          public static RecordParser newFixed(int size,
                                              ReadStream<Buffer> stream)

      Like `newFixed(int)` but wraps the `stream`. The `stream` handlers will be set/unset when the `handler(io.vertx.core.Handler<io.vertx.reactivex.core.buffer.Buffer>)` is set.

      The `pause()`/`resume()` operations are propagated to the `stream`.
      Parameters:
        `size` - the initial record size
        `stream` - the wrapped stream
      Returns:

    - #### newFixed

          public static RecordParser newFixed(int size,
                                              Flowable<Buffer> stream)

      Like `newFixed(int)` but wraps the `stream`. The `stream` handlers will be set/unset when the `handler(io.vertx.core.Handler<io.vertx.reactivex.core.buffer.Buffer>)` is set.

      The `pause()`/`resume()` operations are propagated to the `stream`.
      Parameters:
        `size` - the initial record size
        `stream` - the wrapped stream
      Returns:

    - #### newFixed

          public static RecordParser newFixed(int size,
                                              Observable<Buffer> stream)

      Like `newFixed(int)` but wraps the `stream`. The `stream` handlers will be set/unset when the `handler(io.vertx.core.Handler<io.vertx.reactivex.core.buffer.Buffer>)` is set.

      The `pause()`/`resume()` operations are propagated to the `stream`.
      Parameters:
        `size` - the initial record size
        `stream` - the wrapped stream
      Returns:

    - #### delimitedMode

          public void delimitedMode(String delim)

      Flip the parser into delimited mode, and where the delimiter can be represented by the String `delim` encoded in latin-1 . Don't use this if your String contains other than latin-1 characters.

      This method can be called multiple times with different values of delim while data is being parsed.

      Parameters:
        `delim` - the new delimeter

    - #### delimitedMode

          public void delimitedMode(Buffer delim)

      Flip the parser into delimited mode, and where the delimiter can be represented by the delimiter `delim`.

      This method can be called multiple times with different values of delim while data is being parsed.

      Parameters:
        `delim` - the new delimiter

    - #### fixedSizeMode

          public void fixedSizeMode(int size)

      Flip the parser into fixed size mode, where the record size is specified by `size` in bytes.

      This method can be called multiple times with different values of size while data is being parsed.

      Parameters:
        `size` - the new record size

    - #### maxRecordSize

          public RecordParser maxRecordSize(int size)

      Set the maximum allowed size for a record when using the delimited mode. The delimiter itself does not count for the record size.

      If a record is longer than specified, an `IllegalStateException` will be thrown.

      Parameters:
        `size` - the maximum record size
      Returns:
        a reference to this, so the API can be used fluently

    - #### handle

          public void handle(Buffer buffer)

      This method is called to provide the parser with data.
      Specified by:
        `handle` in interface `Handler<Buffer>`
      Parameters:
        `buffer` - a chunk of data

    - #### exceptionHandler

          public RecordParser exceptionHandler(Handler<Throwable> handler)

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

    - #### handler

          public RecordParser handler(Handler<Buffer> handler)

      Description copied from interface: `ReadStream`
      Set a data handler. As data is read, the handler will be called with the data.
      Specified by:
        `handler` in interface `ReadStream<Buffer>`
      Returns:
        a reference to this, so the API can be used fluently

    - #### pause

          public RecordParser pause()

      Description copied from interface: `ReadStream`
      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`.

      Specified by:
        `pause` in interface `ReadStream<Buffer>`
      Returns:
        a reference to this, so the API can be used fluently

    - #### fetch

          public RecordParser fetch(long amount)

      Description copied from interface: `ReadStream`
      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.
      Specified by:
        `fetch` in interface `ReadStream<Buffer>`
      Returns:
        a reference to this, so the API can be used fluently

    - #### resume

          public RecordParser resume()

      Description copied from interface: `ReadStream`
      Resume reading, and sets the buffer in `flowing` mode.

      If the `ReadStream` has been paused, reading will recommence on it.
      Specified by:
        `resume` in interface `ReadStream<Buffer>`
      Returns:
        a reference to this, so the API can be used fluently

    - #### endHandler

          public RecordParser endHandler(Handler<Void> endHandler)

      Description copied from interface: `ReadStream`
      Set an end handler. Once the stream has ended, and there is no more data to be read, this handler will be called.
      Specified by:
        `endHandler` in interface `ReadStream<Buffer>`
      Returns:
        a reference to this, so the API can be used fluently

    - #### newInstance

          public static RecordParser newInstance(RecordParser arg)

Copyright © 2019 Eclipse. All rights reserved.