public Ir decode() { decodeFrame(); final List<Token> tokens = new ArrayList<>(); while (offset < length) { tokens.add(decodeToken()); } int i = 0; if (tokens.get(0).signal() == Signal.BEGIN_COMPOSITE) { i = captureHeader(tokens); } final ByteOrder byteOrder = tokens.size() > 0 ? tokens.get(0).encoding().byteOrder() : null; final Ir ir = new Ir(irPackageName, irNamespaceName, irId, irVersion, semanticVersion, byteOrder, irHeader); for (int size = tokens.size(); i < size; i++) { if (tokens.get(i).signal() == Signal.BEGIN_MESSAGE) { i = captureMessage(tokens, i, ir); } } return ir; }
public Ir decode() { decodeFrame(); final List<Token> tokens = new ArrayList<>(); while (offset < length) { tokens.add(decodeToken()); } int i = 0; if (tokens.get(0).signal() == Signal.BEGIN_COMPOSITE) { i = captureHeader(tokens, 0); } final Ir ir = new Ir(irPackageName, irNamespaceName, irId, irVersion, semanticVersion, irHeader); for (int size = tokens.size(); i < size; i++) { if (tokens.get(i).signal() == Signal.BEGIN_MESSAGE) { i = captureMessage(tokens, i, ir); } } return ir; }
public Ir decode() { decodeFrame(); final List<Token> tokens = new ArrayList<>(); while (offset < length) { tokens.add(decodeToken()); } int i = 0; if (tokens.get(0).signal() == Signal.BEGIN_COMPOSITE) { i = captureHeader(tokens); } final ByteOrder byteOrder = tokens.size() > 0 ? tokens.get(0).encoding().byteOrder() : null; final Ir ir = new Ir(irPackageName, irNamespaceName, irId, irVersion, semanticVersion, byteOrder, irHeader); for (int size = tokens.size(); i < size; i++) { if (tokens.get(i).signal() == Signal.BEGIN_MESSAGE) { i = captureMessage(tokens, i, ir); } } return ir; }
public Ir decode() { decodeFrame(); final List<Token> tokens = new ArrayList<>(); while (offset < length) { tokens.add(decodeToken()); } int i = 0; if (tokens.get(0).signal() == Signal.BEGIN_COMPOSITE) { i = captureHeader(tokens); } final ByteOrder byteOrder = tokens.size() > 0 ? tokens.get(0).encoding().byteOrder() : null; final Ir ir = new Ir(irPackageName, irNamespaceName, irId, irVersion, semanticVersion, byteOrder, irHeader); for (int size = tokens.size(); i < size; i++) { if (tokens.get(i).signal() == Signal.BEGIN_MESSAGE) { i = captureMessage(tokens, i, ir); } } return ir; }
@Test public void shouldHandleRightSizedBuffer() throws Exception { final MessageSchema schema = parse(TestUtil.getLocalResource("basic-schema.xml"), ParserOptions.DEFAULT); final IrGenerator irg = new IrGenerator(); final Ir ir = irg.generate(schema); final ByteBuffer buffer = ByteBuffer.allocateDirect(CAPACITY); final IrEncoder irEncoder = new IrEncoder(buffer, ir); irEncoder.encode(); buffer.flip(); final ByteBuffer readBuffer = ByteBuffer.allocateDirect(buffer.remaining()); readBuffer.put(buffer); readBuffer.flip(); final IrDecoder irDecoder = new IrDecoder(readBuffer); irDecoder.decode(); }
@Test public void shouldEncodeThenDecodeIr() throws Exception { final MessageSchema schema = parse(TestUtil.getLocalResource("basic-schema.xml"), ParserOptions.DEFAULT); final IrGenerator irg = new IrGenerator(); final Ir ir = irg.generate(schema); final ByteBuffer buffer = ByteBuffer.allocateDirect(CAPACITY); final IrEncoder irEncoder = new IrEncoder(buffer, ir); irEncoder.encode(); buffer.flip(); final IrDecoder decoder = new IrDecoder(buffer); decoder.decode(); }
@Test public void shouldDecodeCorrectHeader() throws Exception { final MessageSchema schema = parse(TestUtil.getLocalResource( "code-generation-schema.xml"), ParserOptions.DEFAULT); final IrGenerator irg = new IrGenerator(); final Ir ir = irg.generate(schema); final ByteBuffer buffer = ByteBuffer.allocateDirect(CAPACITY); final IrEncoder irEncoder = new IrEncoder(buffer, ir); irEncoder.encode(); buffer.flip(); final IrDecoder irDecoder = new IrDecoder(buffer); final Ir decodedIr = irDecoder.decode(); final List<Token> tokens = decodedIr.headerStructure().tokens(); assertThat(tokens.size(), is(ir.headerStructure().tokens().size())); for (int i = 0, size = tokens.size(); i < size; i++) { assertEqual(tokens.get(i), ir.headerStructure().tokens().get(i)); } }
@Test public void shouldDecodeCorrectFrame() throws Exception { final MessageSchema schema = parse(TestUtil.getLocalResource( "code-generation-schema.xml"), ParserOptions.DEFAULT); final IrGenerator irg = new IrGenerator(); final Ir ir = irg.generate(schema); final ByteBuffer buffer = ByteBuffer.allocateDirect(CAPACITY); final IrEncoder irEncoder = new IrEncoder(buffer, ir); irEncoder.encode(); buffer.flip(); final IrDecoder irDecoder = new IrDecoder(buffer); final Ir decodedIr = irDecoder.decode(); assertThat(decodedIr.id(), is(ir.id())); assertThat(decodedIr.version(), is(ir.version())); assertThat(decodedIr.semanticVersion(), is(ir.semanticVersion())); assertThat(decodedIr.packageName(), is(ir.packageName())); assertThat(decodedIr.namespaceName(), is(ir.namespaceName())); }
@Test public void shouldGenerateAndEncodeIr() throws Exception { System.setProperty(SbeTool.KEYWORD_APPEND_TOKEN, "_"); final ParserOptions options = ParserOptions.builder().stopOnError(true).build(); final MessageSchema schema = parse(TestUtil.getLocalResource("FixBinary.xml"), options); final IrGenerator irg = new IrGenerator(); final Ir ir = irg.generate(schema); final ByteBuffer buffer = ByteBuffer.allocate(1024 * 1024); final IrEncoder irEncoder = new IrEncoder(buffer, ir); irEncoder.encode(); buffer.flip(); final IrDecoder irDecoder = new IrDecoder(buffer); final Ir decodedIr = irDecoder.decode(); assertEquals(ir.id(), decodedIr.id()); assertEquals(ir.version(), decodedIr.version()); assertEquals(ir.byteOrder(), decodedIr.byteOrder()); assertEquals(ir.applicableNamespace(), decodedIr.applicableNamespace()); assertEquals(ir.packageName(), decodedIr.packageName()); assertEquals(ir.types().size(), decodedIr.types().size()); assertEquals(ir.messages().size(), decodedIr.messages().size()); } }