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]; } }
//代理连接,返回值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); } }