in grpc/syneroex/src/main/java/deltix/ember/connector/grpc/syneroex/SyneroexTradeConnector.java [183:226]
private void handleOrderResponse(OrderResponse response) {
switch (response.getExecType()) {
case NEW_EVENT:
final MutableOrderNewEvent newEvent = messages.orderNewEvent();
makeOrderEvent(response, newEvent);
fireOrderNewEvent(newEvent);
break;
case CANCELED_EVENT:
final MutableOrderCancelEvent cancelEvent = messages.orderCancelEvent();
makeOrderEvent(response, cancelEvent);
cancelEvent.setReason(response.getReason());
fireOrderCancelEvent(cancelEvent);
break;
case REJECTED_EVENT:
final MutableOrderRejectEvent rejectEvent = messages.orderRejectEvent();
makeOrderEvent(response, rejectEvent);
rejectEvent.setReason(response.getReason());
fireOrderRejectEvent(rejectEvent);
break;
case REPLACED_EVENT:
final MutableOrderReplaceEvent replaceEvent = messages.orderReplaceEvent();
makeOrderEvent(response, replaceEvent);
fireOrderReplaceEvent(replaceEvent);
break;
case TRADE_EVENT:
final MutableOrderTradeReportEvent tradeReportEvent = messages.tradeReportEvent();
makeOrderEvent(response, tradeReportEvent);
// here we are assuming that server reports "total" fill - i.e. only CumQty and AvgPrice
// therefore no need to populate TradeQuantity, TradePrice and EventId (for individual fills)
// example how retrieve Contract for inbound message symbol
final Contract contract = getContractByBrokerSymbol(response.getSymbol());
if (contract.getSecurityType() == InstrumentType.SYNTHETIC) {
tradeReportEvent.setMultiLegReportingType(MultiLegReportingType.MULTI_LEG_SECURITY);
}
fireOrderTradeReportEvent(tradeReportEvent);
break;
}
}