final TokenListener listener) listener.onBeginComposite(fieldToken, tokens, tokenIdx, toIndex); listener.onEnum( fieldToken, buffer, bufferOffset + offset, tokens, i, nextFieldIdx - 1, actingVersion); break; listener.onBitSet( fieldToken, buffer, bufferOffset + offset, tokens, i, nextFieldIdx - 1, actingVersion); break; listener.onEncoding(typeToken, buffer, bufferOffset + offset, typeToken, actingVersion); break; listener.onEndComposite(fieldToken, tokens, tokenIdx, toIndex);
listener.onGroupHeader(token, numInGroup); listener.onBeginGroup(token, i, numInGroup); listener); listener.onEndGroup(token, i, numInGroup);
final TokenListener listener) listener.onBeginMessage(msgTokens.get(0)); listener); listener.onEndMessage(msgTokens.get(numTokens - 1));
listener.onEnum( fieldToken, buffer, bufferOffset + offset, tokens, i, nextFieldIdx - 2, actingVersion); break; listener.onBitSet( fieldToken, buffer, bufferOffset + offset, tokens, i, nextFieldIdx - 2, actingVersion); break; listener.onEncoding(fieldToken, buffer, bufferOffset + offset, typeToken, actingVersion); break;
private static void decodeComposite( final Token fieldToken, final DirectBuffer buffer, final int bufferIndex, final List<Token> tokens, final int fromIndex, final int toIndex, final int actingVersion, final TokenListener listener) { listener.onBeginComposite(fieldToken, tokens, fromIndex, toIndex); for (int i = fromIndex + 1; i < toIndex; i++) { final Token token = tokens.get(i); listener.onEncoding(token, buffer, bufferIndex + token.offset(), token, actingVersion); } listener.onEndComposite(fieldToken, tokens, fromIndex, toIndex); }
private static int decodeField( final DirectBuffer buffer, final int bufferIndex, final List<Token> tokens, final int fromIndex, final int actingVersion, final TokenListener listener) { final int toIndex = findNextOrLimit(tokens, fromIndex + 1, tokens.size(), Signal.END_FIELD); final Token fieldToken = tokens.get(fromIndex); final Token typeToken = tokens.get(fromIndex + 1); final int offset = typeToken.offset(); switch (typeToken.signal()) { case BEGIN_COMPOSITE: decodeComposite( fieldToken, buffer, bufferIndex + offset, tokens, fromIndex + 1, toIndex - 1, actingVersion, listener); break; case BEGIN_ENUM: listener.onEnum(fieldToken, buffer, bufferIndex + offset, tokens, fromIndex + 1, toIndex - 1, actingVersion); break; case BEGIN_SET: listener.onBitSet(fieldToken, buffer, bufferIndex + offset, tokens, fromIndex + 1, toIndex - 1, actingVersion); break; case ENCODING: listener.onEncoding(fieldToken, buffer, bufferIndex + offset, typeToken, actingVersion); break; } return toIndex; }
inOrder.verify(mockTokenListener).onBeginComposite(any(), any(), eq(2), eq(17)); inOrder.verify(mockTokenListener).onEnum(any(), eq(decodeBuffer), eq(8), any(), eq(3), eq(6), eq(0)); inOrder.verify(mockTokenListener).onEncoding(any(), eq(decodeBuffer), eq(9), any(), eq(0)); inOrder.verify(mockTokenListener).onBitSet(any(), eq(decodeBuffer), eq(10), any(), eq(8), eq(12), eq(0)); inOrder.verify(mockTokenListener).onBeginComposite(any(), any(), eq(13), eq(16)); inOrder.verify(mockTokenListener).onEncoding(any(), eq(decodeBuffer), eq(14), any(), eq(0)); inOrder.verify(mockTokenListener).onEncoding(any(), eq(decodeBuffer), eq(22), any(), eq(0)); inOrder.verify(mockTokenListener).onEndComposite(any(), any(), eq(13), eq(16)); inOrder.verify(mockTokenListener).onEndComposite(any(), any(), eq(2), eq(17));
listener.onEnum( fieldToken, buffer, bufferOffset + offset, tokens, i, nextFieldIdx - 2, actingVersion); break; listener.onBitSet( fieldToken, buffer, bufferOffset + offset, tokens, i, nextFieldIdx - 2, actingVersion); break; listener.onEncoding(fieldToken, buffer, bufferOffset + offset, typeToken, actingVersion); break;
final int endOfFieldsIndex = Math.min(endGroupIndex, nextGroupIndex) - 1; listener.onGroupHeader(token, numInGroup); listener.onBeginGroup(token, g, numInGroup); listener.onEndGroup(token, g, numInGroup);
/** * Decode a message from the provided buffer based on the message schema described with IR {@link Token}s. * * @param buffer containing the encoded message. * @param bufferIndex at which the message encoding starts in the buffer. * @param actingVersion of the encoded message for dealing with extension fields. * @param blockLength of the root message fields. * @param msgTokens in IR format describing the message structure. * @param listener to callback for decoding the primitive values as discovered in the structure. * @return the index in the underlying buffer after decoding. */ public static int decode( final DirectBuffer buffer, int bufferIndex, final int actingVersion, final int blockLength, final List<Token> msgTokens, final TokenListener listener) { final int groupsBeginIndex = findNextOrLimit(msgTokens, 1, msgTokens.size(), Signal.BEGIN_GROUP); final int varDataSearchStart = groupsBeginIndex != msgTokens.size() ? groupsBeginIndex : 1; final int varDataBeginIndex = findNextOrLimit(msgTokens, varDataSearchStart, msgTokens.size(), Signal.BEGIN_VAR_DATA); listener.onBeginMessage(msgTokens.get(0)); decodeFields(buffer, bufferIndex, actingVersion, msgTokens, 0, groupsBeginIndex, listener); bufferIndex += blockLength; bufferIndex = decodeGroups(buffer, bufferIndex, actingVersion, msgTokens, groupsBeginIndex, varDataBeginIndex, listener); bufferIndex = decodeVarData(buffer, bufferIndex, msgTokens, varDataBeginIndex, msgTokens.size(), listener); listener.onEndMessage(msgTokens.get(msgTokens.size() - 1)); return bufferIndex; }
final TokenListener listener) listener.onBeginComposite(fieldToken, tokens, tokenIdx, toIndex); listener.onEnum( fieldToken, buffer, bufferOffset + offset, tokens, i, nextFieldIdx - 1, actingVersion); break; listener.onBitSet( fieldToken, buffer, bufferOffset + offset, tokens, i, nextFieldIdx - 1, actingVersion); break; listener.onEncoding(typeToken, buffer, bufferOffset + offset, typeToken, actingVersion); break; listener.onEndComposite(fieldToken, tokens, tokenIdx, toIndex);
listener.onEnum( fieldToken, buffer, bufferOffset + offset, tokens, i, nextFieldIdx - 2, actingVersion); break; listener.onBitSet( fieldToken, buffer, bufferOffset + offset, tokens, i, nextFieldIdx - 2, actingVersion); break; listener.onEncoding(fieldToken, buffer, bufferOffset + offset, typeToken, actingVersion); break;
listener.onGroupHeader(token, numInGroup); listener.onBeginGroup(token, i, numInGroup); listener); listener.onEndGroup(token, i, numInGroup);
final TokenListener listener) listener.onBeginMessage(msgTokens.get(0)); listener); listener.onEndMessage(msgTokens.get(numTokens - 1));
final TokenListener listener) listener.onBeginComposite(fieldToken, tokens, tokenIdx, toIndex); listener.onEnum( fieldToken, buffer, bufferOffset + offset, tokens, i, nextFieldIdx - 1, actingVersion); break; listener.onBitSet( fieldToken, buffer, bufferOffset + offset, tokens, i, nextFieldIdx - 1, actingVersion); break; listener.onEncoding(typeToken, buffer, bufferOffset + offset, typeToken, actingVersion); break; listener.onEndComposite(fieldToken, tokens, tokenIdx, toIndex);
listener.onGroupHeader(token, numInGroup); listener.onBeginGroup(token, i, numInGroup); listener); listener.onEndGroup(token, i, numInGroup);
final TokenListener listener) listener.onBeginMessage(msgTokens.get(0)); listener); listener.onEndMessage(msgTokens.get(numTokens - 1));