Skip to content

Commit 5645842

Browse files
committed
[Java]: Added static methods to get the headerSize for groups and var data. Enhancement aeron-io#92.
1 parent f918ed3 commit 5645842

File tree

1 file changed

+22
-6
lines changed

1 file changed

+22
-6
lines changed

main/java/uk/co/real_logic/sbe/generation/java/JavaGenerator.java

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -228,10 +228,9 @@ private void generateGroupClassHeader(final StringBuilder sb,
228228
indent + " blockLength = dimensions.blockLength();\n" +
229229
indent + " this.actingVersion = actingVersion;\n" +
230230
indent + " index = -1;\n" +
231-
indent + " parentMessage.limit(parentMessage.limit() + %d);\n" +
231+
indent + " parentMessage.limit(parentMessage.limit() + headerSize());\n" +
232232
indent + " }\n\n",
233-
parentMessageClassName,
234-
dimensionHeaderSize
233+
parentMessageClassName
235234
));
236235

237236
final Integer blockLength = Integer.valueOf(tokens.get(index).size());
@@ -249,12 +248,19 @@ private void generateGroupClassHeader(final StringBuilder sb,
249248
indent + " index = -1;\n" +
250249
indent + " this.count = count;\n" +
251250
indent + " blockLength = %4$d;\n" +
252-
indent + " parentMessage.limit(parentMessage.limit() + %5$d);\n" +
251+
indent + " parentMessage.limit(parentMessage.limit() + headerSize());\n" +
253252
indent + " }\n\n",
254253
parentMessageClassName,
255254
javaTypeForNumInGroup,
256255
javaTypeForBlockLength,
257-
blockLength,
256+
blockLength
257+
));
258+
259+
sb.append(String.format(
260+
indent + " public static int headerSize()\n" +
261+
indent + " {\n" +
262+
indent + " return %d;\n" +
263+
indent + " }\n\n",
258264
dimensionHeaderSize
259265
));
260266

@@ -285,7 +291,7 @@ private void generateGroupClassHeader(final StringBuilder sb,
285291
indent + " }\n\n" +
286292
indent + " public boolean hasNext()\n" +
287293
indent + " {\n" +
288-
indent + " return index + 1 < count;\n" +
294+
indent + " return (index + 1) < count;\n" +
289295
indent + " }\n\n",
290296
formatClassName(groupName)
291297
));
@@ -380,6 +386,16 @@ private CharSequence generateVarData(final List<Token> tokens)
380386
final ByteOrder byteOrder = lengthEncoding.byteOrder();
381387
final String byteOrderStr = lengthEncoding.primitiveType().size() == 1 ? "" : ", java.nio.ByteOrder." + byteOrder;
382388

389+
sb.append(String.format(
390+
"\n" +
391+
" public static int %sHeaderSize()\n" +
392+
" {\n" +
393+
" return %d;\n" +
394+
" }\n",
395+
toLowerFirstChar(propertyName),
396+
sizeOfLengthField
397+
));
398+
383399
sb.append(String.format(
384400
"\n" +
385401
" public int get%s(final byte[] dst, final int dstOffset, final int length)\n" +

0 commit comments

Comments
 (0)