void CPluginChangeOrder_US::SetTradeReqData(int nCmdID, const Json::Value &jsnVal, SOCKET sock) { CHECK_RET(nCmdID == PROTO_ID_QUOTE && sock != INVALID_SOCKET, NORET); CHECK_RET(m_pTradeOp && m_pTradeServer, NORET); CProtoQuote proto; CProtoQuote::ProtoReqDataType req; proto.SetProtoData_Req(&req); if ( !proto.ParseJson_Req(jsnVal) ) { CHECK_OP(false, NORET); return; } CHECK_RET(req.head.nProtoID == nCmdID && req.body.nCookie, NORET); ChangeOrderReqBody &body = req.body; StockDataReq *pReq = new StockDataReq; CHECK_RET(pReq, NORET); pReq->sock = sock; pReq->dwReqTick = ::GetTickCount(); pReq->req = req; pReq->bWaitDelaySvrID = true; DoTryProcessTradeOpt(pReq); }
void CPluginPlaceOrder::SetTradeReqData(int nCmdID, const Json::Value &jsnVal, SOCKET sock) { CHECK_RET(nCmdID == PROTO_ID_QUOTE && sock != INVALID_SOCKET, NORET); CHECK_RET(m_pTradeOp && m_pHKTradeServer, NORET); CProtoQuote proto; CProtoQuote::ProtoReqDataType req; proto.SetProtoData_Req(&req); if ( !proto.ParseJson_Req(jsnVal) ) { CHECK_OP(false, NORET); return; } CHECK_RET(req.head.nProtoID == nCmdID && req.body.nCookie, NORET); StockDataReq *pReq = new StockDataReq; CHECK_RET(pReq, NORET); pReq->sock = sock; pReq->dwReqTick = ::GetTickCount(); pReq->req = req; //tomodify 3 PlaceOrderHKReqBody &body = req.body; std::wstring strCode; CA::UTF2Unicode(body.strCode.c_str(), strCode); bool bRet = m_pTradeOp->PlaceOrder((UINT*)&pReq->dwLocalCookie, (Trade_OrderType_HK)body.nOrderTypeHK, (Trade_OrderSide)body.nOrderDir, strCode.c_str(), body.nPrice, body.nQty); if ( !bRet ) { TradeAckType ack; ack.head = req.head; ack.head.nErrCode = PROTO_ERR_UNKNOWN_ERROR; ack.head.strErrDesc = "·¢ËÍʧ°Ü"; ack.body.nCookie = body.nCookie; ack.body.nLocalID = 0; ack.body.nSvrResult = Trade_SvrResult_Failed; HandleTradeAck(&ack, sock); delete pReq; pReq = NULL; return ; } m_vtReqData.push_back(pReq); SetTimerHandleTimeout(true); }