Skip to content

Commit 905d541

Browse files
committed
[Java] Add skip method for var data fields without reading.
1 parent 777e543 commit 905d541

File tree

3 files changed

+185
-0
lines changed

3 files changed

+185
-0
lines changed

sbe-tool/src/main/java/uk/co/real_logic/sbe/generation/java/JavaGenerator.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -829,6 +829,23 @@ private void generateDataDecodeMethods(
829829
final String characterEncoding,
830830
final String indent)
831831
{
832+
new Formatter(sb).format("\n" +
833+
indent + " public int skip%1$s()\n" +
834+
indent + " {\n" +
835+
"%2$s" +
836+
indent + " final int headerLength = %3$d;\n" +
837+
indent + " final int limit = parentMessage.limit();\n" +
838+
indent + " final int dataLength = (int)%4$s;\n" +
839+
indent + " final int dataOffset = limit + headerLength;\n\n" +
840+
indent + " parentMessage.limit(dataOffset + dataLength);\n\n" +
841+
indent + " return dataLength;\n" +
842+
indent + " }\n",
843+
Generators.toUpperFirstChar(propertyName),
844+
generateStringNotPresentConditionForAppendable(token.version(), indent),
845+
sizeOfLengthField,
846+
generateGet(lengthType, "limit", byteOrderStr),
847+
byteOrderStr);
848+
832849
generateVarDataTypedDecoder(
833850
sb,
834851
token,

sbe-tool/src/main/java/uk/co/real_logic/sbe/ir/generated/FrameCodecDecoder.java

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -292,6 +292,18 @@ public int packageNameLength()
292292
return (int)(buffer.getShort(limit, java.nio.ByteOrder.LITTLE_ENDIAN) & 0xFFFF);
293293
}
294294

295+
public int skipPackageName()
296+
{
297+
final int headerLength = 2;
298+
final int limit = parentMessage.limit();
299+
final int dataLength = (int)(buffer.getShort(limit, java.nio.ByteOrder.LITTLE_ENDIAN) & 0xFFFF);
300+
final int dataOffset = limit + headerLength;
301+
302+
parentMessage.limit(dataOffset + dataLength);
303+
304+
return dataLength;
305+
}
306+
295307
public int getPackageName(final MutableDirectBuffer dst, final int dstOffset, final int length)
296308
{
297309
final int headerLength = 2;
@@ -392,6 +404,18 @@ public int namespaceNameLength()
392404
return (int)(buffer.getShort(limit, java.nio.ByteOrder.LITTLE_ENDIAN) & 0xFFFF);
393405
}
394406

407+
public int skipNamespaceName()
408+
{
409+
final int headerLength = 2;
410+
final int limit = parentMessage.limit();
411+
final int dataLength = (int)(buffer.getShort(limit, java.nio.ByteOrder.LITTLE_ENDIAN) & 0xFFFF);
412+
final int dataOffset = limit + headerLength;
413+
414+
parentMessage.limit(dataOffset + dataLength);
415+
416+
return dataLength;
417+
}
418+
395419
public int getNamespaceName(final MutableDirectBuffer dst, final int dstOffset, final int length)
396420
{
397421
final int headerLength = 2;
@@ -492,6 +516,18 @@ public int semanticVersionLength()
492516
return (int)(buffer.getShort(limit, java.nio.ByteOrder.LITTLE_ENDIAN) & 0xFFFF);
493517
}
494518

519+
public int skipSemanticVersion()
520+
{
521+
final int headerLength = 2;
522+
final int limit = parentMessage.limit();
523+
final int dataLength = (int)(buffer.getShort(limit, java.nio.ByteOrder.LITTLE_ENDIAN) & 0xFFFF);
524+
final int dataOffset = limit + headerLength;
525+
526+
parentMessage.limit(dataOffset + dataLength);
527+
528+
return dataLength;
529+
}
530+
495531
public int getSemanticVersion(final MutableDirectBuffer dst, final int dstOffset, final int length)
496532
{
497533
final int headerLength = 2;

sbe-tool/src/main/java/uk/co/real_logic/sbe/ir/generated/TokenCodecDecoder.java

Lines changed: 132 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -610,6 +610,18 @@ public int nameLength()
610610
return (int)(buffer.getShort(limit, java.nio.ByteOrder.LITTLE_ENDIAN) & 0xFFFF);
611611
}
612612

613+
public int skipName()
614+
{
615+
final int headerLength = 2;
616+
final int limit = parentMessage.limit();
617+
final int dataLength = (int)(buffer.getShort(limit, java.nio.ByteOrder.LITTLE_ENDIAN) & 0xFFFF);
618+
final int dataOffset = limit + headerLength;
619+
620+
parentMessage.limit(dataOffset + dataLength);
621+
622+
return dataLength;
623+
}
624+
613625
public int getName(final MutableDirectBuffer dst, final int dstOffset, final int length)
614626
{
615627
final int headerLength = 2;
@@ -710,6 +722,18 @@ public int constValueLength()
710722
return (int)(buffer.getShort(limit, java.nio.ByteOrder.LITTLE_ENDIAN) & 0xFFFF);
711723
}
712724

725+
public int skipConstValue()
726+
{
727+
final int headerLength = 2;
728+
final int limit = parentMessage.limit();
729+
final int dataLength = (int)(buffer.getShort(limit, java.nio.ByteOrder.LITTLE_ENDIAN) & 0xFFFF);
730+
final int dataOffset = limit + headerLength;
731+
732+
parentMessage.limit(dataOffset + dataLength);
733+
734+
return dataLength;
735+
}
736+
713737
public int getConstValue(final MutableDirectBuffer dst, final int dstOffset, final int length)
714738
{
715739
final int headerLength = 2;
@@ -810,6 +834,18 @@ public int minValueLength()
810834
return (int)(buffer.getShort(limit, java.nio.ByteOrder.LITTLE_ENDIAN) & 0xFFFF);
811835
}
812836

837+
public int skipMinValue()
838+
{
839+
final int headerLength = 2;
840+
final int limit = parentMessage.limit();
841+
final int dataLength = (int)(buffer.getShort(limit, java.nio.ByteOrder.LITTLE_ENDIAN) & 0xFFFF);
842+
final int dataOffset = limit + headerLength;
843+
844+
parentMessage.limit(dataOffset + dataLength);
845+
846+
return dataLength;
847+
}
848+
813849
public int getMinValue(final MutableDirectBuffer dst, final int dstOffset, final int length)
814850
{
815851
final int headerLength = 2;
@@ -910,6 +946,18 @@ public int maxValueLength()
910946
return (int)(buffer.getShort(limit, java.nio.ByteOrder.LITTLE_ENDIAN) & 0xFFFF);
911947
}
912948

949+
public int skipMaxValue()
950+
{
951+
final int headerLength = 2;
952+
final int limit = parentMessage.limit();
953+
final int dataLength = (int)(buffer.getShort(limit, java.nio.ByteOrder.LITTLE_ENDIAN) & 0xFFFF);
954+
final int dataOffset = limit + headerLength;
955+
956+
parentMessage.limit(dataOffset + dataLength);
957+
958+
return dataLength;
959+
}
960+
913961
public int getMaxValue(final MutableDirectBuffer dst, final int dstOffset, final int length)
914962
{
915963
final int headerLength = 2;
@@ -1010,6 +1058,18 @@ public int nullValueLength()
10101058
return (int)(buffer.getShort(limit, java.nio.ByteOrder.LITTLE_ENDIAN) & 0xFFFF);
10111059
}
10121060

1061+
public int skipNullValue()
1062+
{
1063+
final int headerLength = 2;
1064+
final int limit = parentMessage.limit();
1065+
final int dataLength = (int)(buffer.getShort(limit, java.nio.ByteOrder.LITTLE_ENDIAN) & 0xFFFF);
1066+
final int dataOffset = limit + headerLength;
1067+
1068+
parentMessage.limit(dataOffset + dataLength);
1069+
1070+
return dataLength;
1071+
}
1072+
10131073
public int getNullValue(final MutableDirectBuffer dst, final int dstOffset, final int length)
10141074
{
10151075
final int headerLength = 2;
@@ -1110,6 +1170,18 @@ public int characterEncodingLength()
11101170
return (int)(buffer.getShort(limit, java.nio.ByteOrder.LITTLE_ENDIAN) & 0xFFFF);
11111171
}
11121172

1173+
public int skipCharacterEncoding()
1174+
{
1175+
final int headerLength = 2;
1176+
final int limit = parentMessage.limit();
1177+
final int dataLength = (int)(buffer.getShort(limit, java.nio.ByteOrder.LITTLE_ENDIAN) & 0xFFFF);
1178+
final int dataOffset = limit + headerLength;
1179+
1180+
parentMessage.limit(dataOffset + dataLength);
1181+
1182+
return dataLength;
1183+
}
1184+
11131185
public int getCharacterEncoding(final MutableDirectBuffer dst, final int dstOffset, final int length)
11141186
{
11151187
final int headerLength = 2;
@@ -1210,6 +1282,18 @@ public int epochLength()
12101282
return (int)(buffer.getShort(limit, java.nio.ByteOrder.LITTLE_ENDIAN) & 0xFFFF);
12111283
}
12121284

1285+
public int skipEpoch()
1286+
{
1287+
final int headerLength = 2;
1288+
final int limit = parentMessage.limit();
1289+
final int dataLength = (int)(buffer.getShort(limit, java.nio.ByteOrder.LITTLE_ENDIAN) & 0xFFFF);
1290+
final int dataOffset = limit + headerLength;
1291+
1292+
parentMessage.limit(dataOffset + dataLength);
1293+
1294+
return dataLength;
1295+
}
1296+
12131297
public int getEpoch(final MutableDirectBuffer dst, final int dstOffset, final int length)
12141298
{
12151299
final int headerLength = 2;
@@ -1310,6 +1394,18 @@ public int timeUnitLength()
13101394
return (int)(buffer.getShort(limit, java.nio.ByteOrder.LITTLE_ENDIAN) & 0xFFFF);
13111395
}
13121396

1397+
public int skipTimeUnit()
1398+
{
1399+
final int headerLength = 2;
1400+
final int limit = parentMessage.limit();
1401+
final int dataLength = (int)(buffer.getShort(limit, java.nio.ByteOrder.LITTLE_ENDIAN) & 0xFFFF);
1402+
final int dataOffset = limit + headerLength;
1403+
1404+
parentMessage.limit(dataOffset + dataLength);
1405+
1406+
return dataLength;
1407+
}
1408+
13131409
public int getTimeUnit(final MutableDirectBuffer dst, final int dstOffset, final int length)
13141410
{
13151411
final int headerLength = 2;
@@ -1410,6 +1506,18 @@ public int semanticTypeLength()
14101506
return (int)(buffer.getShort(limit, java.nio.ByteOrder.LITTLE_ENDIAN) & 0xFFFF);
14111507
}
14121508

1509+
public int skipSemanticType()
1510+
{
1511+
final int headerLength = 2;
1512+
final int limit = parentMessage.limit();
1513+
final int dataLength = (int)(buffer.getShort(limit, java.nio.ByteOrder.LITTLE_ENDIAN) & 0xFFFF);
1514+
final int dataOffset = limit + headerLength;
1515+
1516+
parentMessage.limit(dataOffset + dataLength);
1517+
1518+
return dataLength;
1519+
}
1520+
14131521
public int getSemanticType(final MutableDirectBuffer dst, final int dstOffset, final int length)
14141522
{
14151523
final int headerLength = 2;
@@ -1510,6 +1618,18 @@ public int descriptionLength()
15101618
return (int)(buffer.getShort(limit, java.nio.ByteOrder.LITTLE_ENDIAN) & 0xFFFF);
15111619
}
15121620

1621+
public int skipDescription()
1622+
{
1623+
final int headerLength = 2;
1624+
final int limit = parentMessage.limit();
1625+
final int dataLength = (int)(buffer.getShort(limit, java.nio.ByteOrder.LITTLE_ENDIAN) & 0xFFFF);
1626+
final int dataOffset = limit + headerLength;
1627+
1628+
parentMessage.limit(dataOffset + dataLength);
1629+
1630+
return dataLength;
1631+
}
1632+
15131633
public int getDescription(final MutableDirectBuffer dst, final int dstOffset, final int length)
15141634
{
15151635
final int headerLength = 2;
@@ -1610,6 +1730,18 @@ public int referencedNameLength()
16101730
return (int)(buffer.getShort(limit, java.nio.ByteOrder.LITTLE_ENDIAN) & 0xFFFF);
16111731
}
16121732

1733+
public int skipReferencedName()
1734+
{
1735+
final int headerLength = 2;
1736+
final int limit = parentMessage.limit();
1737+
final int dataLength = (int)(buffer.getShort(limit, java.nio.ByteOrder.LITTLE_ENDIAN) & 0xFFFF);
1738+
final int dataOffset = limit + headerLength;
1739+
1740+
parentMessage.limit(dataOffset + dataLength);
1741+
1742+
return dataLength;
1743+
}
1744+
16131745
public int getReferencedName(final MutableDirectBuffer dst, final int dstOffset, final int length)
16141746
{
16151747
final int headerLength = 2;

0 commit comments

Comments
 (0)