Skip to content

Commit 047380e

Browse files
committed
[Java] Remove usage of CodecUtil in the Java OTF.
1 parent d5f666a commit 047380e

File tree

3 files changed

+63
-50
lines changed

3 files changed

+63
-50
lines changed

sbe-samples/src/main/java/uk/co/real_logic/sbe/examples/ExampleTokenListener.java

Lines changed: 2 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import uk.co.real_logic.sbe.ir.Encoding;
2222
import uk.co.real_logic.sbe.ir.Token;
2323
import uk.co.real_logic.sbe.otf.TokenListener;
24+
import uk.co.real_logic.sbe.otf.Util;
2425

2526
import java.io.PrintWriter;
2627
import java.io.UnsupportedEncodingException;
@@ -207,7 +208,7 @@ private long readEncodingAsLong(
207208
return constOrNotPresentValue.longValue();
208209
}
209210

210-
return getLong(buffer, bufferIndex, typeToken.encoding());
211+
return Util.getLong(buffer, bufferIndex, typeToken.encoding());
211212
}
212213

213214
private static PrimitiveValue constOrNotPresentValue(final Token token, final int actingVersion)
@@ -279,42 +280,6 @@ private static void mapEncodingToString(
279280
}
280281
}
281282

282-
private static long getLong(final DirectBuffer buffer, final int index, final Encoding encoding)
283-
{
284-
switch (encoding.primitiveType())
285-
{
286-
case CHAR:
287-
return CodecUtil.charGet(buffer, index);
288-
289-
case INT8:
290-
return CodecUtil.int8Get(buffer, index);
291-
292-
case INT16:
293-
return CodecUtil.int16Get(buffer, index, encoding.byteOrder());
294-
295-
case INT32:
296-
return CodecUtil.int32Get(buffer, index, encoding.byteOrder());
297-
298-
case INT64:
299-
return CodecUtil.int64Get(buffer, index, encoding.byteOrder());
300-
301-
case UINT8:
302-
return CodecUtil.uint8Get(buffer, index);
303-
304-
case UINT16:
305-
return CodecUtil.uint16Get(buffer, index, encoding.byteOrder());
306-
307-
case UINT32:
308-
return CodecUtil.uint32Get(buffer, index, encoding.byteOrder());
309-
310-
case UINT64:
311-
return CodecUtil.uint64Get(buffer, index, encoding.byteOrder());
312-
313-
default:
314-
throw new IllegalArgumentException("Unsupported type for long: " + encoding.primitiveType());
315-
}
316-
}
317-
318283
private void printScope()
319284
{
320285
final Iterator<String> i = namedScope.descendingIterator();

sbe-tool/src/main/java/uk/co/real_logic/sbe/otf/OtfMessageDecoder.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -169,8 +169,11 @@ private static int decodeVarData(
169169
if (Signal.BEGIN_VAR_DATA == token.signal())
170170
{
171171
final Token lengthToken = tokens.get(i + 2);
172-
final int length = getInt(buffer, bufferIndex + lengthToken.offset(),
173-
lengthToken.encoding().primitiveType(), lengthToken.encoding().byteOrder());
172+
final int length = getInt(
173+
buffer,
174+
bufferIndex + lengthToken.offset(),
175+
lengthToken.encoding().primitiveType(),
176+
lengthToken.encoding().byteOrder());
174177

175178
final Token varDataToken = tokens.get(i + 3);
176179
bufferIndex += varDataToken.offset();

sbe-tool/src/main/java/uk/co/real_logic/sbe/otf/Util.java

Lines changed: 56 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import uk.co.real_logic.agrona.DirectBuffer;
1919
import uk.co.real_logic.sbe.PrimitiveType;
2020
import uk.co.real_logic.sbe.codec.java.CodecUtil;
21+
import uk.co.real_logic.sbe.ir.Encoding;
2122

2223
import java.nio.ByteOrder;
2324

@@ -27,35 +28,79 @@
2728
public class Util
2829
{
2930
/**
30-
* Get an integer value from a buffer at a given index.
31+
* Get an integer value from a buffer at a given index for a {@link PrimitiveType}.
3132
*
32-
* @param buffer from which to read.
33-
* @param bufferIndex at which he integer should be read.
34-
* @param type of the integer encoded in the buffer.
35-
* @param byteOrder of the integer in the buffer.
33+
* @param buffer from which to read.
34+
* @param index at which he integer should be read.
35+
* @param type of the integer encoded in the buffer.
36+
* @param byteOrder of the integer in the buffer.
3637
* @return the value of the encoded integer.
3738
*/
38-
static int getInt(final DirectBuffer buffer, final int bufferIndex, final PrimitiveType type, final ByteOrder byteOrder)
39+
public static int getInt(final DirectBuffer buffer, final int index, final PrimitiveType type, final ByteOrder byteOrder)
3940
{
4041
switch (type)
4142
{
4243
case INT8:
43-
return CodecUtil.int8Get(buffer, bufferIndex);
44+
return buffer.getByte(index);
4445

4546
case UINT8:
46-
return CodecUtil.uint8Get(buffer, bufferIndex);
47+
return (short)(buffer.getByte(index) & 0xFF);
4748

4849
case INT16:
49-
return CodecUtil.int16Get(buffer, bufferIndex, byteOrder);
50+
return buffer.getShort(index, byteOrder);
5051

5152
case UINT16:
52-
return CodecUtil.uint16Get(buffer, bufferIndex, byteOrder);
53+
return buffer.getShort(index, byteOrder) & 0xFFFF;
5354

5455
case INT32:
55-
return CodecUtil.int32Get(buffer, bufferIndex, byteOrder);
56+
return buffer.getInt(index, byteOrder);
5657

5758
default:
5859
throw new IllegalArgumentException("Unsupported type: " + type);
5960
}
6061
}
62+
63+
/**
64+
* Get a long value from a buffer at a given index for a given {@link Encoding}.
65+
*
66+
* @param buffer from which to read.
67+
* @param index at which he integer should be read.
68+
* @param encoding of the value.
69+
* @return the value of the encoded long.
70+
*/
71+
public static long getLong(final DirectBuffer buffer, final int index, final Encoding encoding)
72+
{
73+
switch (encoding.primitiveType())
74+
{
75+
case CHAR:
76+
return buffer.getByte(index);
77+
78+
case INT8:
79+
return buffer.getByte(index);
80+
81+
case INT16:
82+
return buffer.getShort(index, encoding.byteOrder());
83+
84+
case INT32:
85+
return buffer.getInt(index, encoding.byteOrder());
86+
87+
case INT64:
88+
return buffer.getLong(index, encoding.byteOrder());
89+
90+
case UINT8:
91+
return (short)(buffer.getByte(index) & 0xFF);
92+
93+
case UINT16:
94+
return buffer.getShort(index, encoding.byteOrder()) & 0xFFFF;
95+
96+
case UINT32:
97+
return buffer.getInt(index, encoding.byteOrder()) & 0xFFFF_FFFFL;
98+
99+
case UINT64:
100+
return buffer.getLong(index, encoding.byteOrder());
101+
102+
default:
103+
throw new IllegalArgumentException("Unsupported type for long: " + encoding.primitiveType());
104+
}
105+
}
61106
}

0 commit comments

Comments
 (0)