in orderbook-core/src/main/java/com/epam/deltix/orderbook/core/impl/AbstractL2MarketSide.java [154:198]
public int binarySearchNextLevelByPrice(final Quote find) {
int low = 0;
int high = data.size() - 1;
Quote quote;
// TODO Refactor
// while (low <= high) {
// int mid = (low + high) >>> 1;
// quote = data.get(mid);
// int cmp = (getSide() == QuoteSide.ASK
// ? 1
// : -1) * find.compareTo(quote); // isOffer ? midVal - price : price - midVal;
//
// if (cmp < 0) {
// low = mid + 1;
// } else if (cmp > 0) {
// high = mid - 1;
// } else {
// return (short) mid; // price found
// }
// }
while (low <= high) {
final int mid = (low + high) >>> 1;
quote = data.get(mid);
final int cmp = quote.compareTo(find);
if (cmp < 0) {
if (getSide() == QuoteSide.BID) {
high = mid - 1;
} else {
low = mid + 1;
}
} else if (cmp > 0) {
if (getSide() == QuoteSide.BID) {
low = mid + 1;
} else {
high = mid - 1;
}
} else {
return mid;
}
}
return low;
}