private void handleOrderResponse()

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;
        }
    }