in fix/core/src/main/java/deltix/connector/fix/FixTradeConnector.java [481:538]
protected void onExecutionReport(Header header, Message message) {
FixExecutionReport report = decode(fixExecutionReportCodec, fixExecutionReport, message);
Contract contract = getContract(report);
byte type = report.getExecutionType();
switch (type) {
case ExecType.PENDING_NEW:
onOrderPendingNewMessage(header, report, contract, messages.orderPendingNewEvent());
break;
case ExecType.NEW:
onOrderNewMessage(header, report, contract, messages.orderNewEvent());
break;
case ExecType.REJECTED:
onOrderRejectMessage(header, report, contract, messages.orderRejectEvent());
break;
case ExecType.PENDING_CANCEL:
onOrderPendingCancelMessage(header, report, contract, messages.orderPendingCancelEvent());
break;
case ExecType.CANCELED:
case ExecType.EXPIRED:
case ExecType.DONE_FOR_DAY:
onOrderCancelMessage(header, report, contract, messages.orderCancelEvent());
break;
case ExecType.PENDING_REPLACE:
onOrderPendingReplaceMessage(header, report, contract, messages.orderPendingReplaceEvent());
break;
case ExecType.REPLACE:
onOrderReplaceMessage(header, report, contract, messages.orderReplaceEvent());
break;
case ExecType.ORDER_STATUS:
onOrderStatusMessage(header, report, contract, messages.orderStatusEvent());
break;
case ExecType.TRADE:
case ExecType.FILL:
case ExecType.PARTIAL_FILL:
onTradeReportMessage(header, report, contract, messages.tradeReportEvent());
break;
case ExecType.TRADE_CANCEL:
onTradeCancelMessage(header, report, contract, messages.tradeCancelEvent());
break;
case ExecType.TRADE_CORRECT:
onTradeCorrectMessage(header, report, contract, messages.tradeCorrectEvent());
break;
default:
onCustomExecutionMessage(header, report, contract);
}
}