private void handleIncrementalMessage()

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);
        }
    }