Example #1
0
        //获取逐笔成交
        public TDBErrNo GetTransaction(TDBReq reqTransaction, out TDBTransaction[] tdbTransaction)
        {
            TDBErrNo nVerifyRet = SimpleVerifyReqInput(reqTransaction);

            tdbTransaction = new TDBTransaction[0];
            if (nVerifyRet != TDBErrNo.TDB_SUCCESS)
            {
                return(nVerifyRet);
            }

            LibTDBWrap.TDBDefine_ReqTransaction reqAPITransaction = reqTransaction.ToAPIReqTransaction();

            IntPtr pUnmanagedReqAPITransaction = LibWrapHelper.CopyStructToGlobalMem(reqAPITransaction, typeof(LibTDBWrap.TDBDefine_ReqTransaction));
            IntPtr ppTransaction = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(IntPtr)));
            IntPtr pCount        = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(Int32)));

            int nRet = LibTDBWrap.TDB_GetTransaction(m_hTdb, pUnmanagedReqAPITransaction, ppTransaction, pCount);

            IntPtr pTransaction = (IntPtr)Marshal.PtrToStructure(ppTransaction, typeof(IntPtr));
            int    nCount       = (Int32)Marshal.PtrToStructure(pCount, typeof(Int32));

            if ((UInt64)pTransaction != 0 && nCount > 0 && nRet == 0)
            {
                tdbTransaction = new TDBTransaction[nCount];
                int nElemLen = Marshal.SizeOf(typeof(LibTDBWrap.TDBDefine_Transaction));
                for (int i = 0; i < nCount; i++)
                {
                    IntPtr pCurRecord = (IntPtr)((UInt64)pTransaction + (UInt64)(nElemLen * i));
                    LibTDBWrap.TDBDefine_Transaction apiFuture = (LibTDBWrap.TDBDefine_Transaction)Marshal.PtrToStructure(pCurRecord, typeof(LibTDBWrap.TDBDefine_Transaction));
                    tdbTransaction[i] = new TDBTransaction();
                    tdbTransaction[i].FromAPITransaction(ref apiFuture);
                }
            }
            else
            {
                //如果网络连接断掉,则关闭连接
                if (nRet == (int)TDBErrNo.TDB_NETWORK_ERROR)
                {
                    DisConnect();
                }
            }

            if ((UInt64)pTransaction != 0)
            {
                LibTDBWrap.TDB_Free(pTransaction);
            }

            Marshal.FreeHGlobal(pUnmanagedReqAPITransaction);
            Marshal.FreeHGlobal(ppTransaction);
            Marshal.FreeHGlobal(pCount);

            return((TDBErrNo)nRet);
        }
Example #2
0
        public int m_nBidOrder;          //叫买序号

        public void FromAPITransaction(ref LibTDBWrap.TDBDefine_Transaction apiTransaction)
        {
            m_strWindCode    = LibWrapHelper.AnsiArr2String(apiTransaction.chWindCode, 0, apiTransaction.chWindCode.Length);
            m_strCode        = LibWrapHelper.AnsiArr2String(apiTransaction.chCode, 0, apiTransaction.chCode.Length);
            m_nDate          = apiTransaction.nDate;
            m_nTime          = apiTransaction.nTime;
            m_nIndex         = apiTransaction.nIndex;
            m_chFunctionCode = (char)apiTransaction.chFunctionCode;
            m_chOrderKind    = (char)apiTransaction.chOrderKind;
            m_chBSFlag       = (char)apiTransaction.chBSFlag;
            m_nTradePrice    = apiTransaction.nTradePrice;
            m_nTradeVolume   = apiTransaction.nTradeVolume;
            m_nAskOrder      = apiTransaction.nAskOrder;
            m_nBidOrder      = apiTransaction.nBidOrder;
        }