final int tokenIdx = decodeFields(buffer, i, actingVersion, msgTokens, 1, numTokens, listener); i += blockLength;
final int afterFieldsIdx = decodeFields( buffer, bufferOffset, actingVersion, tokens, beginFieldsIdx, numTokens, listener); bufferOffset += blockLength;
/** * 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 int tokenIdx = decodeFields(buffer, i, actingVersion, msgTokens, 1, numTokens, listener); i += blockLength;
final int tokenIdx = decodeFields(buffer, i, actingVersion, msgTokens, 1, numTokens, listener); i += blockLength;
decodeFields(buffer, bufferIndex, actingVersion, tokens, beginFieldsIndex, endOfFieldsIndex, listener); bufferIndex += blockLength;
final int afterFieldsIdx = decodeFields( buffer, bufferOffset, actingVersion, tokens, beginFieldsIdx, numTokens, listener); bufferOffset += blockLength;
final int afterFieldsIdx = decodeFields( buffer, bufferOffset, actingVersion, tokens, beginFieldsIdx, numTokens, listener); bufferOffset += blockLength;