public Quote processL2EntryNew()

in orderbook-core/src/main/java/com/epam/deltix/orderbook/core/impl/L2SingleExchangeQuoteProcessor.java [76:112]


    public Quote processL2EntryNew(final PackageHeaderInfo pck, final L2EntryNewInfo msg) {
        final long exchangeId = msg.getExchangeId();
        final Option<MutableExchange<Quote, L2Processor<Quote>>> exchange = getOrCreateExchange(exchangeId);
        if (!exchange.hasValue()) {
            // TODO Log warning!!
            // TODO move to another palace
            return null;
        }

        if (exchange.get().getProcessor().isWaitingForSnapshot()) {
            return null;
        }

        final QuoteSide side = msg.getSide();
        final L2MarketSide<Quote> marketSide = exchange.get().getProcessor().getMarketSide(side);
        final int level = msg.getLevel();

        if (marketSide.isInvalidInsert(level, msg.getPrice(), msg.getSize(), exchangeId)) {
            if (validationOptions.isQuoteInsert()) {
                clear();
                eventHandler.onBroken();
            }
            return null;
        }

        final Quote quote;
        if (level == marketSide.depth()) { // Add new worst quote
            quote = pool.borrow();
        } else if (marketSide.isFull()) { // Check side is Full and remove Worst quote
            quote = marketSide.removeWorstQuote();
        } else {
            quote = pool.borrow();
        }
        quote.copyFrom(pck, msg);
        marketSide.add(level, quote);
        return quote;
    }