public boolean processL1Snapshot()

in orderbook-core/src/main/java/com/epam/deltix/orderbook/core/impl/L1SingleExchangeQuoteProcessor.java [108:141]


    public boolean processL1Snapshot(final PackageHeaderInfo pck) {
        if (!eventHandler.isSnapshotAllowed(pck.getPackageType())) {
            return false;
        }

        // We expect that all entries are sorted by exchange id
        final ObjectList<BaseEntryInfo> entries = pck.getEntries();
        for (int i = 0; i < entries.size(); i++) {
            final BaseEntryInfo entryInfo = entries.get(i);
            final L1EntryInfo entry = (L1EntryInfo) entryInfo;
            final QuoteSide side = entry.getSide();
            @Alphanumeric final long exchangeId = entry.getExchangeId();

            final Option<MutableExchange<Quote, L1Processor<Quote>>> exchange = getOrCreateExchange(exchangeId);
            if (!exchange.hasValue()) {
                // TODO Log error and throw exception or add package validation
                return false;
            }

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

            final Quote quote;
            if (marketSide.isEmpty()) {
                quote = pool.borrow();
                marketSide.insert(quote);
            } else {
                quote = marketSide.getBestQuote();
            }
            quote.copyFrom(pck, entry);
        }

        eventHandler.onSnapshot();
        return true;
    }