Record Parser
The record parser allows you to easily parse protocols which are delimited by a sequence of bytes, or fixed size records.
It transforms a sequence of input buffer to a sequence of buffer structured as configured (either fixed size or separated records).
For example, if you have a simple ASCII text protocol delimited by '\n' and the input is the following:
buffer1:HELLO\nHOW ARE Y
buffer2:OU?\nI AM
buffer3: DOING OK
buffer4:\n
The record parser would produce
buffer1:HELLO
buffer2:HOW ARE YOU?
buffer3:I AM DOING OK
Let’s see the associated code:
import io.vertx.groovy.core.parsetools.RecordParser
import io.vertx.groovy.core.buffer.Buffer
def parser = RecordParser.newDelimited("\n", { h ->
println(h.toString())
})
parser.handle(Buffer.buffer("HELLO\nHOW ARE Y"))
parser.handle(Buffer.buffer("OU?\nI AM"))
parser.handle(Buffer.buffer("DOING OK"))
parser.handle(Buffer.buffer("\n"))
You can also produce fixed sized chunks as follows:
import io.vertx.groovy.core.parsetools.RecordParser
RecordParser.newFixed(4, { h ->
println(h.toString())
})
For more details, check out the RecordParser
class.