in business-model/src/main/java/com/google/cloud/orderbook/Matcher.java [126:150]
public List<OrderBookEvent> add(Order o) {
if (!isActive) {
return Arrays.asList();
}
// Find match events
List<OrderBookEvent> events = match(o);
// Stop now if filled (IOC orders not used)
if (o.getQuantityRemaining() == 0) {
return events;
}
// Add order to book
if (o.getSide() == Side.BUY) {
bidOrderList.put(new OrderKey(o.getPrice(), o.getOrderId()), o);
} else {
askOrderList.put(new OrderKey(o.getPrice(), o.getOrderId()), o);
}
// Add new order event
events.add(buildEvent(Type.NEW, o).build());
return events;
}