public boolean processL2EntryUpdate()

in orderbook-core/src/main/java/com/epam/deltix/orderbook/core/impl/AbstractL2MultiExchangeProcessor.java [195:229]


    public boolean processL2EntryUpdate(final PackageHeaderInfo pck, final L2EntryUpdateInfo msg) {
        assert pck.getPackageType() == PackageType.INCREMENTAL_UPDATE;
        final int level = msg.getLevel();
        final QuoteSide side = msg.getSide();
        @Alphanumeric final long exchangeId = msg.getExchangeId();
        final BookUpdateAction action = msg.getAction();

        final Option<MutableExchange<Quote, L2Processor<Quote>>> exchange = getExchanges().getById(exchangeId);

        if (!exchange.hasValue() || exchange.get().getProcessor().isEmpty() ||
                exchange.get().getProcessor().isWaitingForSnapshot()) {
            return false;
        }

        final L2MarketSide<Quote> marketSide = exchange.get().getProcessor().getMarketSide(side);

        if (marketSide.isInvalidUpdate(action, level, msg.getPrice(), msg.getSize(), exchangeId)) {
            if (validationOptions.isQuoteUpdate()) {
                unmapQuote(exchangeId);
                exchange.get().getProcessor().processL2EntryUpdate(pck, msg);
            }
            return false;
        }

        final BookUpdateAction bookUpdateAction = msg.getAction();

        if (bookUpdateAction == BookUpdateAction.DELETE) {
            final Quote quote = marketSide.getQuote(level);
            removeQuote(quote, side);
        } else if (bookUpdateAction == BookUpdateAction.UPDATE) {
            final Quote quote = marketSide.getQuote(level);
            updateQuote(quote, side, msg);
        }
        return exchange.get().getProcessor().processL2EntryUpdate(pck, msg);
    }