in orderbook-core/src/main/java/com/epam/deltix/orderbook/core/impl/AbstractL2MarketSide.java [282:304]
public boolean checkOrderPrice(final int level, final @Decimal long price) {
@Decimal final long previousPrice = hasLevel(level - 1) ? getQuote(level - 1).getPrice() : NULL;
@Decimal final long nextPrice = hasLevel(level) ? getQuote(level).getPrice() : NULL;
boolean badState = false;
if (getSide() == QuoteSide.ASK) {
if (isNotEqual(previousPrice, NULL) && isGreater(previousPrice, price)) {
badState = true;
}
if (isNotEqual(nextPrice, NULL) && isLess(nextPrice, price)) {
badState = true;
}
} else {
if (isNotEqual(previousPrice, NULL) && isLess(previousPrice, price)) {
badState = true;
}
if (isNotEqual(nextPrice, NULL) && isGreater(nextPrice, price)) {
badState = true;
}
}
return !badState;
}