in mbp-with-mbo/src/main/java/com/epam/cme/mdp3/control/ChannelControllerRouter.java [145:187]
private void handleIncrementalMessage(MdpMessage mdpMessage, MdpGroup mdpGroup, MdpGroupEntry mdpGroupEntry, long msgSeqNum){
if (isIncrementalMessageSupported(mdpMessage)) {
securityIds.clear();
if (isIncrementOnlyForMBO(mdpMessage)) {
mdpMessage.getGroup(MdConstants.NO_MD_ENTRIES, mdpGroup);
while (mdpGroup.hashNext()) {
mdpGroup.next();
mdpGroup.getEntry(mdpGroupEntry);
int securityId = getSecurityId(mdpGroupEntry);
securityIds.add(securityId);
routeMBOEntry(securityId, mdpMessage, mdpGroupEntry, null, msgSeqNum);
}
} else {
if (mdpMessage.getGroup(MdConstants.NO_MD_ENTRIES, noMdEntriesGroup)) {
while (noMdEntriesGroup.hashNext()) {
noMdEntriesGroup.next();
noMdEntriesGroup.getEntry(mdEntry);
final MDEntryType mdEntryType = MDEntryType.fromFIX(mdEntry.getChar(INCR_RFRSH_MD_ENTRY_TYPE));
if (mdEntryType == MDEntryType.EmptyBook) {
emptyBookConsumers.forEach(mdpMessageConsumer -> mdpMessageConsumer.accept(mdpMessage));
} else {
int securityId = mdEntry.getInt32(MdConstants.SECURITY_ID);
securityIds.add(securityId);
routeMBPEntry(securityId, mdpMessage, mdEntry, msgSeqNum);
}
}
}
if (mdpMessage.getGroup(MdConstants.NO_ORDER_ID_ENTRIES, mdpGroup) && isOrderEntityContainsReference(mdpGroup, mdpGroupEntry)) {
while (mdpGroup.hashNext()) {
mdpMessage.getGroup(MdConstants.NO_MD_ENTRIES, noMdEntriesGroup);
mdpGroup.next();
mdpGroup.getEntry(mdpGroupEntry);
short entryNum = mdpGroupEntry.getUInt8(MdConstants.REFERENCE_ID);
noMdEntriesGroup.getEntry(entryNum, mdEntry);
int securityId = mdEntry.getInt32(MdConstants.SECURITY_ID);
securityIds.add(securityId);
routeMBOEntry(securityId, mdpMessage, mdpGroupEntry, mdEntry, msgSeqNum);
}
}
}
routeIncrementalComplete(securityIds, mdpMessage, msgSeqNum);
}
}