private List<Token> generateForMessage(final MessageSchema schema, final long messageId) { tokenList.clear(); final Message msg = schema.getMessage(messageId); addMessageSignal(msg, Signal.BEGIN_MESSAGE); addAllFields(msg.fields()); addMessageSignal(msg, Signal.END_MESSAGE); return tokenList; }
private List<Token> generateForHeader(final MessageSchema schema) { tokenList.clear(); add(schema.messageHeader(), 0, null); return tokenList; }
final MessageSchema messageSchema = new MessageSchema(schemaNode, typeByNameMap, messageByIdMap); errorHandler.checkIfShouldExit();
/** * Generate a complete {@link uk.co.real_logic.sbe.ir.Ir} for a given schema. * * @param schema from which the {@link uk.co.real_logic.sbe.ir.Ir} should be generated. * @param namespace for the generated code. * @return complete {@link uk.co.real_logic.sbe.ir.Ir} for a given schema. */ public Ir generate(final MessageSchema schema, final String namespace) { this.schema = schema; final List<Token> headerTokens = generateForHeader(schema); final Ir ir = new Ir( schema.packageName(), namespace, schema.id(), schema.version(), schema.semanticVersion(), schema.byteOrder(), headerTokens); for (final Message message : schema.messages()) { final long msgId = message.id(); ir.addMessage(msgId, generateForMessage(schema, msgId)); } return ir; }
private List<Token> generateForMessage(final MessageSchema schema, final long messageId) { tokenList.clear(); byteOrder = schema.byteOrder(); version = schema.version(); final Message msg = schema.getMessage(messageId); addMessageSignal(msg, Signal.BEGIN_MESSAGE); addAllFields(msg.fields()); addMessageSignal(msg, Signal.END_MESSAGE); return tokenList; }
private void add(final EnumType.ValidValue value, final PrimitiveType encodingType) { final Encoding encoding = new Encoding.Builder() .byteOrder(schema.byteOrder()) .primitiveType(encodingType) .constValue(value.primitiveValue()) .build(); final Token.Builder builder = new Token.Builder() .signal(Signal.VALID_VALUE) .name(value.name()) .version(value.sinceVersion()) .deprecated(value.deprecated()) .description(value.description()) .encoding(encoding); tokenList.add(builder.build()); }
private List<Token> generateForHeader(final MessageSchema schema) { tokenList.clear(); byteOrder = schema.byteOrder(); add(schema.messageHeader(), 0, null); return tokenList; }
private PrimitiveValue lookupValueRef(final String valueRef) { final int periodIndex = valueRef.indexOf('.'); final String valueRefType = valueRef.substring(0, periodIndex); final String validValueName = valueRef.substring(periodIndex + 1); final EnumType enumType = (EnumType)schema.getType(valueRefType); final EnumType.ValidValue validValue = enumType.getValidValue(validValueName); return validValue.primitiveValue(); }
/** * Generate a complete {@link uk.co.real_logic.sbe.ir.Ir} for a given schema. * * @param schema from which the {@link uk.co.real_logic.sbe.ir.Ir} should be generated. * @param namespace for the generated code. * @return complete {@link uk.co.real_logic.sbe.ir.Ir} for a given schema. */ public Ir generate(final MessageSchema schema, final String namespace) { this.schema = schema; final List<Token> headerTokens = generateForHeader(schema); final Ir ir = new Ir( schema.packageName(), namespace, schema.id(), schema.version(), schema.semanticVersion(), schema.byteOrder(), headerTokens); for (final Message message : schema.messages()) { final long msgId = message.id(); ir.addMessage(msgId, generateForMessage(schema, msgId)); } return ir; }
private void add(final SetType.Choice value, final PrimitiveType encodingType) { final Encoding encoding = new Encoding.Builder() .constValue(value.primitiveValue()) .byteOrder(schema.byteOrder()) .primitiveType(encodingType) .build(); final Token.Builder builder = new Token.Builder() .signal(Signal.CHOICE) .name(value.name()) .description(value.description()) .version(value.sinceVersion()) .deprecated(value.deprecated()) .encoding(encoding); tokenList.add(builder.build()); }
private PrimitiveValue lookupValueRef(final String valueRef) { final int periodIndex = valueRef.indexOf('.'); final String valueRefType = valueRef.substring(0, periodIndex); final String validValueName = valueRef.substring(periodIndex + 1); final EnumType enumType = (EnumType)schema.getType(valueRefType); final EnumType.ValidValue validValue = enumType.getValidValue(validValueName); return validValue.primitiveValue(); }
/** * Generate a complete {@link uk.co.real_logic.sbe.ir.Ir} for a given schema. * * @param schema from which the {@link uk.co.real_logic.sbe.ir.Ir} should be generated. * @param namespace for the generated code. * @return complete {@link uk.co.real_logic.sbe.ir.Ir} for a given schema. */ public Ir generate(final MessageSchema schema, final String namespace) { final Ir ir = new Ir( schema.packageName(), namespace, schema.id(), schema.version(), schema.semanticVersion(), generateForHeader(schema)); for (final Message message : schema.messages()) { final long msgId = message.id(); ir.addMessage(msgId, generateForMessage(schema, msgId)); } return ir; }
@Test public void shouldCalculateDataOffsetWithPaddingFromBlockLength() throws Exception { final MessageSchema schema = parse(TestUtil.getLocalResource( "block-length-schema.xml"), ParserOptions.DEFAULT); final List<Field> fields = schema.getMessage(4).fields(); assertThat(valueOf(fields.get(0).computedOffset()), is(valueOf(0))); assertThat(valueOf(fields.get(0).type().encodedLength()), is(valueOf(8))); assertThat(valueOf(fields.get(1).computedOffset()), is(valueOf(64))); assertThat(valueOf(fields.get(1).type().encodedLength()), is(valueOf(-1))); }
.primitiveType(encodingType) .semanticType(semanticTypeOf(type, field)) .byteOrder(schema.byteOrder());
@Test public void shouldCalculateCompositeSizeWithOffsetsSpecified() throws Exception { final MessageSchema schema = parse(TestUtil.getLocalResource( "composite-offsets-schema.xml"), ParserOptions.DEFAULT); final CompositeType header = schema.messageHeader(); assertThat(valueOf(header.encodedLength()), is(valueOf(12))); }
final MessageSchema messageSchema = new MessageSchema(schemaNode, typeByNameMap, messageByIdMap); errorHandler.checkIfShouldExit();
private PrimitiveValue lookupValueRef(final String valueRef) { final int periodIndex = valueRef.indexOf('.'); final String valueRefType = valueRef.substring(0, periodIndex); final String validValueName = valueRef.substring(periodIndex + 1); final EnumType enumType = (EnumType)schema.getType(valueRefType); final EnumType.ValidValue validValue = enumType.getValidValue(validValueName); return validValue.primitiveValue(); }
/** * Generate a complete {@link uk.co.real_logic.sbe.ir.Ir} for a given schema. * * @param schema from which the {@link uk.co.real_logic.sbe.ir.Ir} should be generated. * @param namespace for the generated code. * @return complete {@link uk.co.real_logic.sbe.ir.Ir} for a given schema. */ public Ir generate(final MessageSchema schema, final String namespace) { this.schema = schema; final List<Token> headerTokens = generateForHeader(schema); final Ir ir = new Ir( schema.packageName(), namespace, schema.id(), schema.version(), schema.semanticVersion(), schema.byteOrder(), headerTokens); for (final Message message : schema.messages()) { final long msgId = message.id(); ir.addMessage(msgId, generateForMessage(schema, msgId)); } return ir; }
@Test public void shouldCalculateGroupOffsetWithPaddingFromBlockLength() throws Exception { final MessageSchema schema = parse(TestUtil.getLocalResource( "block-length-schema.xml"), ParserOptions.DEFAULT); final List<Field> fields = schema.getMessage(2).fields(); assertThat(valueOf(fields.get(0).computedOffset()), is(valueOf(0))); assertThat(valueOf(fields.get(0).type().encodedLength()), is(valueOf(8))); assertThat(valueOf(fields.get(1).computedOffset()), is(valueOf(64))); Assert.assertNull(fields.get(1).type()); assertThat(valueOf(fields.get(1).computedBlockLength()), is(valueOf(12))); final List<Field> groupFields = fields.get(1).groupFields(); assertThat(valueOf(groupFields.size()), is(valueOf(2))); assertThat(valueOf(groupFields.get(0).computedOffset()), is(valueOf(0))); assertThat(valueOf(groupFields.get(0).type().encodedLength()), is(valueOf(4))); assertThat(valueOf(groupFields.get(1).computedOffset()), is(valueOf(4))); assertThat(valueOf(groupFields.get(1).type().encodedLength()), is(valueOf(8))); }
.byteOrder(schema.byteOrder()) .characterEncoding(type.characterEncoding());