示例#1
0
        public void FromAPILoginResult(LibTDBWrap.TDBDefine_ResLogin loginRes)
        {
            m_strInfo = LibWrapHelper.AnsiArr2String(loginRes.szInfo, 0, loginRes.szInfo.Length);

            if (loginRes.nMarkets > 0)
            {
                m_nDynDates = new int[loginRes.nMarkets];
                Debug.Assert(loginRes.nDynDate.Length >= loginRes.nMarkets);

                System.Array.Copy(loginRes.nDynDate, m_nDynDates, loginRes.nMarkets);

                m_strMarkets = new string[loginRes.nMarkets];

                Debug.Assert(loginRes.szMarket.Length >= 24 * loginRes.nMarkets);
                for (int i = 0; i < loginRes.nMarkets; i++)
                {
                    m_strMarkets[i] = LibWrapHelper.AnsiArr2String(loginRes.szMarket, i * 24, 24);
                }
            }
            else
            {
                m_nDynDates  = new int[0];
                m_strMarkets = new string[0];
            }
        }
示例#2
0
        //代理连接,返回值TDB_SUCCESS表示成功
        public TDBErrNo ConnectProxy(out TDBLoginResult tdbLoginResult)
        {
            //重复登录处理
            if ((UInt64)m_hTdb != 0)
            {
                tdbLoginResult = (TDBLoginResult)m_loginResult.Clone();
                Console.WriteLine("已经登录,登录信息:{0}", tdbLoginResult.m_strInfo);
                return(TDBErrNo.TDB_SUCCESS);
            }

            LibTDBWrap.OPEN_SETTINGS openSettings = new LibTDBWrap.OPEN_SETTINGS();
            openSettings.szIP       = LibWrapHelper.String2AnsiArr(m_strIP, 24);
            openSettings.szPort     = LibWrapHelper.String2AnsiArr(m_strPort, 8);
            openSettings.szUser     = LibWrapHelper.String2AnsiArr(m_strUser, 32);
            openSettings.szPassword = LibWrapHelper.String2AnsiArr(m_strPassword, 32);

            LibTDBWrap.TDB_Proxy_SETTINGS proxySetting = new LibTDBWrap.TDB_Proxy_SETTINGS();
            proxySetting.szProxyHostIp = LibWrapHelper.String2AnsiArr(m_strProxyIp, 64);
            proxySetting.szProxyPort   = LibWrapHelper.String2AnsiArr(m_strProxyPort, 8);
            proxySetting.szProxyUser   = LibWrapHelper.String2AnsiArr(m_strProxyUser, 32);
            proxySetting.szProxyPwd    = LibWrapHelper.String2AnsiArr(m_strProxyPwd, 32);
            proxySetting.nProxyType    = m_nProxyType;

            openSettings.nTimeOutVal = m_nTimeOutVal;
            openSettings.nRetryCount = m_nRetryCount;
            openSettings.nRetryGap   = m_nRetryGap;

            IntPtr pUnmanagedOpenSettings = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(LibTDBWrap.OPEN_SETTINGS)));

            Marshal.StructureToPtr(openSettings, pUnmanagedOpenSettings, false);

            IntPtr pUnmanagedProxySettings = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(LibTDBWrap.TDB_Proxy_SETTINGS)));

            Marshal.StructureToPtr(proxySetting, pUnmanagedProxySettings, false);

            IntPtr pUnmanagedLoginRes = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(LibTDBWrap.TDBDefine_ResLogin)));

            m_hTdb = LibTDBWrap.TDB_OpenProxy(pUnmanagedOpenSettings, pUnmanagedProxySettings, pUnmanagedLoginRes);
            LibTDBWrap.TDBDefine_ResLogin loginRes = (LibTDBWrap.TDBDefine_ResLogin)Marshal.PtrToStructure(pUnmanagedLoginRes, typeof(LibTDBWrap.TDBDefine_ResLogin));

            Marshal.FreeHGlobal(pUnmanagedOpenSettings);
            Marshal.FreeHGlobal(pUnmanagedProxySettings);
            Marshal.FreeHGlobal(pUnmanagedLoginRes);

            m_loginResult = new TDBLoginResult();
            m_loginResult.FromAPILoginResult(loginRes);

            tdbLoginResult = (TDBLoginResult)m_loginResult.Clone();

            if ((UInt64)m_hTdb != 0)
            {
                return(TDBErrNo.TDB_SUCCESS);
            }
            else
            {
                return(TDBErrNo.TDB_OPEN_FAILED);
            }
        }