Esempio n. 1
0
        /// <summary>
        /// 接收响应数据
        /// </summary>
        /// <param name="responseType"></param>
        /// <param name="pData"></param>
        /// <param name="requestID"></param>
        protected void ReceiveResponseData(TResponseType responseType, IntPtr pData, int requestID)
        {
            if (requestID == 0)
            {
                return;
            }

            //建立响应数据缓存
            if (this.responseDataMap.ContainsKey(requestID) == false)
            {
                this.responseDataMap[requestID] = new List <Object>();
            }

            //保存响应数据
            if (pData != IntPtr.Zero)
            {
                Object value = null;

                if (responseDataTypeMapping.ContainsKey(responseType))
                {
                    Type t = responseDataTypeMapping[responseType];

                    if (t != null)
                    {
                        value = PInvokeUtility.GetObjectFromIntPtr(t, pData);
                    }
                }

                if (value != null)
                {
                    this.responseDataMap[requestID].Add(value);
                }
            }
        }
Esempio n. 2
0
        protected override CTPResponseInfo GetResponseInfo(IntPtr pRspInfo)
        {
            CTPResponseInfo rsp = new CTPResponseInfo();

            CThostFtdcRspInfoField rspInfo = PInvokeUtility.GetObjectFromIntPtr <CThostFtdcRspInfoField>(pRspInfo);

            rsp.ErrorID = rspInfo.ErrorID;
            rsp.Message = PInvokeUtility.GetUnicodeString(rspInfo.ErrorMsg);

            return(rsp);
        }
Esempio n. 3
0
        /// <summary>
        /// 创建事件参数
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="rspData"></param>
        /// <param name="rspInfo"></param>
        /// <returns></returns>
        protected CTPEventArgs <T> CreateEventArgs <T>(IntPtr rspData, CTPResponseInfo rspInfo)
        {
            //转换响应数据
            T value = default(T);

            if (rspData != IntPtr.Zero)
            {
                value = PInvokeUtility.GetObjectFromIntPtr <T>(rspData);
            }

            //创建事件参数
            CTPEventArgs <T> args = new CTPEventArgs <T>(value, rspInfo);

            return(args);
        }
Esempio n. 4
0
 /// <summary>
 /// 订阅行情应答
 /// </summary>
 internal void OnSubMarketData(IntPtr pSpecificInstrument, IntPtr pRspInfo, int nRequestID, bool bIsLast)
 {
     CThostFtdcSpecificInstrumentField instrument = PInvokeUtility.GetObjectFromIntPtr <CThostFtdcSpecificInstrumentField>(pSpecificInstrument);
 }