Class: Vertx::RecordParser

Inherits:
Object
  • Object
show all
Defined in:
/Users/julien/java/vertx-stack/stack-docs/target/rb/vertx/record_parser.rb

Overview

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.

Class Method Summary (collapse)

Instance Method Summary (collapse)

Class Method Details

+ (::Vertx::RecordParser) newDelimited(delim, output) { ... } + (::Vertx::RecordParser) newDelimited(delim, output) { ... }

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

output Will receive whole records which have been parsed.

Overloads:

  • + (::Vertx::RecordParser) newDelimited(delim, output) { ... }

    Parameters:

    • delim (String)
      the initial delimiter string

    Yields:

    • handler that will receive the output
  • + (::Vertx::RecordParser) newDelimited(delim, output) { ... }

    Parameters:

    Yields:

    • handler that will receive the output

Returns:

Raises:

  • (ArgumentError)


64
65
66
67
68
69
70
71
# File '/Users/julien/java/vertx-stack/stack-docs/target/rb/vertx/record_parser.rb', line 64

def self.new_delimited(param_1=nil)
  if param_1.class == String && block_given?
    return ::Vertx::Util::Utils.safe_create(Java::IoVertxCoreParsetools::RecordParser.java_method(:newDelimited, [Java::java.lang.String.java_class,Java::IoVertxCore::Handler.java_class]).call(param_1,(Proc.new { |event| yield(::Vertx::Util::Utils.safe_create(event,::Vertx::Buffer)) })),::Vertx::RecordParser)
  elsif param_1.class.method_defined?(:j_del) && block_given?
    return ::Vertx::Util::Utils.safe_create(Java::IoVertxCoreParsetools::RecordParser.java_method(:newDelimited, [Java::IoVertxCoreBuffer::Buffer.java_class,Java::IoVertxCore::Handler.java_class]).call(param_1.j_del,(Proc.new { |event| yield(::Vertx::Util::Utils.safe_create(event,::Vertx::Buffer)) })),::Vertx::RecordParser)
  end
  raise ArgumentError, "Invalid arguments when calling new_delimited(param_1)"
end

+ (::Vertx::RecordParser) new_fixed(size = nil) { ... }

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 (Fixnum) (defaults to: nil)
    the initial record size

Yields:

  • handler that will receive the output

Returns:

Raises:

  • (ArgumentError)


79
80
81
82
83
84
# File '/Users/julien/java/vertx-stack/stack-docs/target/rb/vertx/record_parser.rb', line 79

def self.new_fixed(size=nil)
  if size.class == Fixnum && block_given?
    return ::Vertx::Util::Utils.safe_create(Java::IoVertxCoreParsetools::RecordParser.java_method(:newFixed, [Java::int.java_class,Java::IoVertxCore::Handler.java_class]).call(size,(Proc.new { |event| yield(::Vertx::Util::Utils.safe_create(event,::Vertx::Buffer)) })),::Vertx::RecordParser)
  end
  raise ArgumentError, "Invalid arguments when calling new_fixed(size)"
end

Instance Method Details

- (void) delimitedMode(delim) - (void) delimitedMode(delim)

This method returns an undefined value.

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.

Overloads:

  • - (void) delimitedMode(delim)

    Parameters:

    • delim (String)
      the new delimeter
  • - (void) delimitedMode(delim)

    Parameters:

Raises:

  • (ArgumentError)


94
95
96
97
98
99
100
101
# File '/Users/julien/java/vertx-stack/stack-docs/target/rb/vertx/record_parser.rb', line 94

def delimited_mode(param_1=nil)
  if param_1.class == String && !block_given?
    return @j_del.java_method(:delimitedMode, [Java::java.lang.String.java_class]).call(param_1)
  elsif param_1.class.method_defined?(:j_del) && !block_given?
    return @j_del.java_method(:delimitedMode, [Java::IoVertxCoreBuffer::Buffer.java_class]).call(param_1.j_del)
  end
  raise ArgumentError, "Invalid arguments when calling delimited_mode(param_1)"
end

- (void) fixed_size_mode(size = nil)

This method returns an undefined value.

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 (Fixnum) (defaults to: nil)
    the new record size

Raises:

  • (ArgumentError)


107
108
109
110
111
112
# File '/Users/julien/java/vertx-stack/stack-docs/target/rb/vertx/record_parser.rb', line 107

def fixed_size_mode(size=nil)
  if size.class == Fixnum && !block_given?
    return @j_del.java_method(:fixedSizeMode, [Java::int.java_class]).call(size)
  end
  raise ArgumentError, "Invalid arguments when calling fixed_size_mode(size)"
end

- (void) handle(buffer = nil)

This method returns an undefined value.

This method is called to provide the parser with data.

Parameters:

Raises:

  • (ArgumentError)


116
117
118
119
120
121
# File '/Users/julien/java/vertx-stack/stack-docs/target/rb/vertx/record_parser.rb', line 116

def handle(buffer=nil)
  if buffer.class.method_defined?(:j_del) && !block_given?
    return @j_del.java_method(:handle, [Java::IoVertxCoreBuffer::Buffer.java_class]).call(buffer.j_del)
  end
  raise ArgumentError, "Invalid arguments when calling handle(buffer)"
end

- (void) set_output { ... }

This method returns an undefined value.

Yields:

Raises:

  • (ArgumentError)


47
48
49
50
51
52
# File '/Users/julien/java/vertx-stack/stack-docs/target/rb/vertx/record_parser.rb', line 47

def set_output
  if block_given?
    return @j_del.java_method(:setOutput, [Java::IoVertxCore::Handler.java_class]).call((Proc.new { |event| yield(::Vertx::Util::Utils.safe_create(event,::Vertx::Buffer)) }))
  end
  raise ArgumentError, "Invalid arguments when calling set_output()"
end