in orderbook-core/src/main/java/com/epam/deltix/orderbook/core/impl/CompactL2SingleExchangeQuoteProcessor.java [65:93]
public Quote processL2EntryNew(final PackageHeaderInfo pck, final L2EntryNewInfo msg) {
final long exchangeId = msg.getExchangeId();
final Option<MutableExchange<Quote, CompactL2Processor<Quote>>> exchange = getOrCreateExchange(exchangeId);
if (!exchange.hasValue()) {
return null;
}
if (exchange.get().getProcessor().isWaitingForSnapshot()) {
return null;
}
final QuoteSide side = msg.getSide();
final CompactL2MarketSide<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;
}
if (marketSide.isFull()) {
marketSide.removeWorstQuote();
}
marketSide.add(level, msg.getPrice(), msg.getSize());
return marketSide.getQuote(level);
}