/// <summary> /// 异步接收到新的数据的处理 /// </summary> /// <param name="ar"></param> protected void OnRecvResponse(object ar) { try { using (HttpWebResponse webre = (HttpWebResponse)(ar)) { byte[] buffer; int readCount; using (Stream response = webre.GetResponseStream()) { int contentLen = Convert.ToInt32(webre.ContentLength); buffer = new byte[contentLen]; readCount = ReadAllBytesFromStream(response, buffer, contentLen); } if (readCount > 0) { // DataPacket dataPacket = DataPacket.DecodePacket(buffer, readCount); //对数据进行解包 // if (dataPacket != null) // (new Thread(ProcessDataPacket)).Start(new ClientRecvDataEventArgs(null, dataPacket, readCount)); } else { LogUtilities.LogMessage("HTTP Recv 0 byte"); } } } catch (Exception ex) { LogUtilities.LogMessage("recv data error: " + ex.Message); } }
/// <summary> /// 发送一个数据包 /// </summary> /// <param name="dataPacket"></param> /// <returns></returns> public long DoSendPacket(DataPacket dataPacket) { if (dataPacket == null) { return(0); } long sendBytes; using (MemoryStream ms = new MemoryStream()) { using (BinaryWriter bw = new BinaryWriter(ms)) { sendBytes = 0; try { // DataPacket.CodePacket(bw, dataPacket); // if (dataPacket.Len > 0) // { // ServerHelper.GetResponseByPostAsync(_httpUrl, ms.ToArray(), OnRecvResponse); // sendBytes = ms.Length; // } } catch (Exception ex) { LogUtilities.LogMessage("DoSendPacket Error " + ex.Message); } } } return(sendBytes); }
/// <summary> /// 建立socket连接 /// </summary> private void ConnectSocketServer() { DateTime dtStart = DateTime.Now; _dataQuery = DataAccess.IDataQuery; _heartRealTime = new ReqHeartDataPacket(); _heartInfo = new ReqInfoHeart(); _heartOrg = new ReqHeartOrgDataPacket(); _heartOcean = new ReqOceanHeartDataPacket(); SocketConnections = new Dictionary <TcpService, SocketConnection>(5); CreateRealTimeSocket(); CreateHistorySocket(); //CreateInfoSocket(); CreateOceanSocket(); CreateOrgSocket(); CreateLowsOrgSocket(); Timer timerCheck = new Timer(65000); timerCheck.Elapsed += timerCheck_Elapsed; timerCheck.Start(); _queryConnnection = new DataQueryConnections(_dataQuery); _queryConnnection.OnReceiveData += _queryConnnection_OnReceiveData; _indicatorQueryConnectiuon.OnReceiveData += _indicatorQueryConnectiuon_OnReceiveData; //TcpConnections = new Dictionary<short, TcpConnection>(5); //CreateRealTimeTcp(); //CreateHistoryTcp(); //CreateInfoTcp(); //CreateOrgTcp(); //CreateOceanTcp(); TimeSpan ts = DateTime.Now - dtStart; LogUtilities.LogMessage("连接服务器总共用时:" + ts.TotalMilliseconds); }
/// <summary> /// GetShortLineData /// </summary> /// <returns></returns> public List <OneShortLineDataRec> GetShortLineData() { lock (_typeListData) { try { List <OneShortLineDataRec> result = new List <OneShortLineDataRec>(); List <int> idList = new List <int>(); foreach (KeyValuePair <ShortLineType, List <int> > oneTypeData in _typeListData) { idList.AddRange(oneTypeData.Value); } //idList.Sort(Compare); foreach (int id in idList) { result.Add(_allData[id]); } result.Sort(CompareTime); return(result); } catch (Exception e) { LogUtilities.LogMessage("GetShortLineData error" + e.Message); return(null); } } }
/// <summary> /// 返回值结构 /// </summary> /// <returns></returns> public static Dictionary <String, Dictionary <String, List <TabData> > > GetAllTabCfgData() { Dictionary <String, Dictionary <String, List <TabData> > > result = new Dictionary <String, Dictionary <String, List <TabData> > >(); XmlDocument doc = new XmlDocument(); try { String filePath = PathUtilities.CfgPath + "TabConfig.xml"; doc.Load(filePath); result.Add("StockTab", GetNodeData("StockTab")); result.Add("InfoTab", GetNodeData("InfoTab")); result.Add("QuoteReport", GetNodeData("QuoteReport")); result.Add("TrendTab", GetNodeData("TrendTab")); result.Add("TrendMainTab", GetNodeData("TrendMainTab")); result.Add("TrendSubTab", GetNodeData("TrendSubTab")); result.Add("KlineMainTab", GetNodeData("KlineMainTab")); result.Add("KlineSubTab", GetNodeData("KlineSubTab")); result.Add("InfoPanelBottomTab", GetNodeData("InfoPanelBottomTab")); result.Add("InfoPanelTopTab", GetNodeData("InfoPanelTopTab")); result.Add("MainQuoteTab", GetNodeData("MainQuoteTab")); result.Add("MainQuoteTabButton", GetNodeData("MainQuoteTabButton")); result.Add("MainBlockMonitorTab", GetNodeData("MainBlockMonitorTab")); result.Add("MainBlockMonitorButton", GetNodeData("MainBlockMonitorButton")); result.Add("ViewTabBtn", GetNodeData("ViewTabBtn")); } catch (Exception) { LogUtilities.LogMessage("Read TabConfigFile Error"); throw; } return(result); }
void PushSendDataPacket() { while (true) { try { IndicatorDataPacket dataPacket = null; lock (_SendDataPacketQueue) { if (_SendDataPacketQueue.Count > 0) { dataPacket = _SendDataPacketQueue.Dequeue(); } } if (dataPacket != null) { if (_dataQuery != null) { _dataQuery.QueryMacroIndicate(dataPacket.Cmd, out _id, SendDataCallBack); lock (_dicMsgId) { _dicMsgId.Add(_id, dataPacket.MsgId); LogUtilities.LogMessage("发送请求, id=" + _id + ", msgId=" + dataPacket.MsgId); } } } Thread.Sleep(2); } catch (Exception e) { LogUtilities.LogMessage("Indicator 请求报错," + e.Message); Thread.Sleep(2); } } }
/// <summary> /// 发送一个数据请求包 /// </summary> /// <param name="dataPacket">要发送的一个数据包</param> /// <returns>发送数据的长度</returns> public long DoSendPacket(DataPacket dataPacket) { if (dataPacket == null) { return(0); } long sendBytes = 0; _socket.NoDelay = false; using (MemoryStream memoryStream = new MemoryStream()) { using (BinaryWriter bw = new BinaryWriter(memoryStream)) { try { int len = dataPacket.CodePacket(bw); if (len > 0) { //memoryStream.Flush(); DoSendDataWork(memoryStream.ToArray()); sendBytes = memoryStream.Length; if (dataPacket is RealTimeDataPacket) { Debug.Print("SendPacket : " + ((RealTimeDataPacket)dataPacket).RequestType.ToString()); //LogUtilities.LogMessage("SendPacket : " + // ((RealTimeDataPacket)dataPacket).RequestType.ToString()); } else if (dataPacket is InfoDataPacket) { Debug.Print("SendPacket : " + ((InfoDataPacket)dataPacket).RequestType.ToString()); //LogUtilities.LogMessage("SendPacket : " + // ((InfoDataPacket)dataPacket).RequestType.ToString()); } else if (dataPacket is OrgDataPacket) { Debug.Print("SendPacket : " + ((OrgDataPacket)dataPacket).RequestType.ToString()); //LogUtilities.LogMessage("SendPacket : " + // ((OrgDataPacket)dataPacket).RequestType.ToString()); } } else { LogUtilities.LogMessage("DoResponsWork Error"); } } catch (Exception ex) { LogUtilities.LogMessage("DoResponsWork" + ex.Message); } } } return(sendBytes); }
/// <summary> /// 异步接收数据 /// </summary> /// <param name="response"></param> public void SendDataCallBack(MessageEntity response) { if (response.MsgBody is DataSet) { IndicatorDataPacket dataPacket = null; using (DataSet ds = response.MsgBody as DataSet) { if (ds != null && ds.Tables != null && ds.Tables.Count > 0) { lock (ds) { using (DataTable dt = ds.Tables[0]) { IndicateRequestType requestId; String tableKeyCode; if (TryGetRequestType(dt.TableName, out requestId, out tableKeyCode)) { switch (requestId) { case IndicateRequestType.LeftIndicatorsReport: dataPacket = new ResIndicatorsReportDataPacket(tableKeyCode); break; case IndicateRequestType.RightIndicatorsReport: dataPacket = new ResIndicatorsReportDataPacket(tableKeyCode); break; case IndicateRequestType.IndicatorValuesReport: dataPacket = new ResIndicatorValuesDataPacket(tableKeyCode); break; } dataPacket.RequestId = requestId; if (_dicMsgId.ContainsKey((String)response.Tag)) { dataPacket.MsgId = _dicMsgId[(String)response.Tag]; LogUtilities.LogMessage("收到响应, id=" + (String)response.Tag + ", msgId=" + dataPacket.MsgId); lock (_dicMsgId) _dicMsgId.Remove((String)response.Tag); } dataPacket.Decoding(dt); } } } } } if (dataPacket != null) { lock (_DataPacketQueue) _DataPacketQueue.Enqueue(new CMRecvDataEventArgs(TcpService.ZXCFT, dataPacket, 100000)); } } }
void tcpRealTime_OnConnectServSuccess(object sender, ConnectEventArgs e) { Debug.Print("实时行情服务器连接成功!"); LogUtilities.LogMessage("实时行情服务器连接成功!"); if (DoAddOneClient != null) { DoAddOneClient(this, e); } }
void RecvEndCallBack(IAsyncResult iAsyncResult) { try { //lock (this) { int readBytes = _tcpClient.Client.EndReceive(iAsyncResult); if (readBytes > 0) { _mutex.WaitOne(); try { RecvDataEventArgs e = new RecvDataEventArgs(_ipAddressPort, (byte[]) iAsyncResult.AsyncState, readBytes); switch (SerMode) { case ServerMode.RealTime: case ServerMode.History: RecvRealTimeData(this, e); break; case ServerMode.Information: RecvInfoData(this, e); break; case ServerMode.Org: RecvOrgData(this, e); break; case ServerMode.Oversea: RecvRealTimeData(this, e); break; } } catch (Exception ex) { LogUtilities.LogMessage(ex.Message); } finally { _mutex.ReleaseMutex(); } } _tcpClient.Client.BeginReceive((byte[])iAsyncResult.AsyncState, 0, _bufferSize, 0, new AsyncCallback(RecvEndCallBack), iAsyncResult.AsyncState); } } catch (Exception ex) { LogUtilities.LogMessage(SerMode.ToString() + ex.Message); } }
/// <summary> /// 导入公式 /// </summary> /// <param name="filename"></param> /// <returns></returns> public static SerializeFormula ImportFormula(String filename) { try { BinaryFormatter deserializer = new BinaryFormatter(); FileStream file = new FileStream(filename, FileMode.Open); return((SerializeFormula)deserializer.Deserialize(file)); } catch (Exception e) { LogUtilities.LogMessage(e.Message); return(null); } }
/// <summary> /// 获取公式字典 /// </summary> public static FormulaDict GetFormulaDict() { FormulaDict dict = new FormulaDict(); String filePath = PathUtilities.CfgPath + "formuladict.xml"; if (File.Exists(filePath)) { try { XmlDocument doc = new XmlDocument(); doc.Load(filePath); XmlNode root = doc.SelectSingleNode(@"formuladict/formulatype"); foreach (XmlNode node in root.ChildNodes) { if (node.NodeType != XmlNodeType.Element) { continue; } FormulaDict.FormulaType formulatype = new FormulaDict.FormulaType(); formulatype.Id = Convert.ToInt32(node.Attributes["type"].Value); formulatype.Name = node.Attributes["name"].Value; foreach (XmlNode subnode in node.ChildNodes) { if (subnode.NodeType != XmlNodeType.Element) { continue; } FormulaDict.FormulaSubType subType = new FormulaDict.FormulaSubType(); subType.Id = Convert.ToInt32(subnode.Attributes["id"].Value); subType.Name = subnode.Attributes["name"].Value; formulatype.SubTypes.Add(subType); } dict.FormulaTypes.Add(formulatype); } root = doc.SelectSingleNode(@"formuladict/drawtype"); foreach (XmlNode node in root.ChildNodes) { if (node.NodeType != XmlNodeType.Element) { continue; } FormulaDict.DrawType drawType = new FormulaDict.DrawType(); drawType.Id = Convert.ToInt32(node.Attributes["id"].Value); drawType.Name = node.Attributes["name"].Value; dict.DrawTypes.Add(drawType); } } catch (Exception e) { LogUtilities.LogMessage("FormulaDict.xml Wrong:" + e.Message); } } return(dict); }
void SendEndCallBack(IAsyncResult iAsyncResult) { try { if (_socket != null) { _socket.EndSend(iAsyncResult); } } catch (Exception e) { LogUtilities.LogMessage("SendEndCallBack" + e.Message); } }
void DoSendDataWork(byte[] data) { if (_socket.Connected) { try { _socket.BeginSend(data, 0, data.Length, 0, new AsyncCallback(SendEndCallBack), null); } catch (Exception e) { MessageBox.Show(_tcpService.ToString() + "断开链接" + e.Message); LogUtilities.LogMessage("TcpSend Error : " + e.Message); } } }
void tcpHistory_OnReceiveData(object sender, CMRecvDataEventArgs e) { try { if (DoCMReceiveData != null) //通知界面而已,对于数据的响应在这个类中完成。 { DoCMReceiveData(this, new CMRecvDataEventArgs(e.ServiceType, e.DataPacket, e.Length)); } } catch (Exception ex) { LogUtilities.LogMessage("Err OneTcpConnection_DoReceiveData" + ex.Message); } }
public static void SetFieldData <T>(int code, FieldIndex field, T fieldValue) { try { int nLen = 0; switch (GetFlag(field)) { case SetFuncFlag.SetInt32: { int nValue = Convert.ToInt32(fieldValue); DetailData.FieldIndexDataInt32[code][field] = nValue; return; } case SetFuncFlag.SetFloat: { float num3 = Convert.ToSingle(fieldValue); DetailData.FieldIndexDataSingle[code][field] = num3; return; } case SetFuncFlag.SetDouble: { double num4 = Convert.ToDouble(fieldValue); DetailData.FieldIndexDataDouble[code][field] = num4; return; } case SetFuncFlag.SetInt64: { long num5 = Convert.ToInt64(fieldValue); DetailData.FieldIndexDataInt64[code][field] = num5; return; } case SetFuncFlag.SetString: { String s = Convert.ToString(fieldValue); DetailData.FieldIndexDataString[code][field] = s; return; } } } catch (Exception exception) { LogUtilities.LogMessage(exception.Message); } }
void DoSendDataWork(byte[] data) { if (!_tcpClient.Connected) { return; } try { _tcpClient.Client.BeginSend(data, 0, data.Length, 0, new AsyncCallback(SendEndCallBack), null); } catch (Exception e) { LogUtilities.LogMessage("TcpSend Error : " + e.Message); //throw; } }
/// <summary> /// 发送多个数据包 /// </summary> /// <param name="packets"></param> public void Request(List <DataPacket> packets) { if (packets == null || packets.Count <= 0) { return; } try { foreach (DataPacket dataPacket in packets) { Request(dataPacket); } } catch (Exception ex) { LogUtilities.LogMessage(ex.Message); } }
void _httpConnection_OnReceiveData(object sender, CMRecvDataEventArgs e) { if (SystemConfig.UserInfo.IsSingle)//有新Level2用户登入服务器,则不对行情数据进行处理 { try { if (DoCMReceiveData != null) //通知界面而已,对于数据的响应在这个类中完成。 { DoCMReceiveData(this, new CMRecvDataEventArgs(e.ServiceType, e.DataPacket, e.Length)); } } catch (Exception ex) { LogUtilities.LogMessage("Err OneTcpConnection_DoReceiveData" + ex.Message); } } }
/// <summary> /// 获取用户关注的短线精灵类型 /// </summary> /// <returns></returns> public static IList <ShortLineType> GetUserShortLineTypes() { IList <ShortLineType> result = new List <ShortLineType>(); String filePathUser = PathUtilities.UserPath + "shortlines.xml"; String filePathNomal = PathUtilities.CfgPath + "shortlines.xml"; XmlDocument doc = new XmlDocument(); try { if (File.Exists(filePathUser)) { doc.Load(filePathUser); } else if (File.Exists(filePathNomal)) { doc.Load(filePathNomal); } XmlNode root = doc.SelectSingleNode("ShortLines"); if (null != root) { foreach (XmlNode itemNode in root.ChildNodes) { if (Enum.IsDefined(typeof(ShortLineType), itemNode.Name)) { ShortLineType tmp = (ShortLineType)(Enum.Parse(typeof(ShortLineType), itemNode.Name)); result.Add(tmp); } } } } catch (Exception e) { LogUtilities.LogMessage(e.Message); } if (result.Count == 0) { Array arr = Enum.GetValues(typeof(ShortLineType)); foreach (ShortLineType item in arr) { result.Add(item); } } return(result); }
public void ReceiveDataCallBack(TcpService tcpService, byte[] data) { try { DataPacket dataPacket = null; if (tcpService == TcpService.JGFW) { Console.WriteLine("1"); } switch (tcpService) { case TcpService.SSHQ: case TcpService.LSHQ: case TcpService.WPFW: dataPacket = RealTimeDataPacket.DecodePacket(data, data.Length); break; case TcpService.DPZS: case TcpService.JGFW: case TcpService.GPZS: case TcpService.JGLS: dataPacket = OrgDataPacket.DecodePacket(data, data.Length); break; case TcpService.HQZX: dataPacket = InfoDataPacket.DecodePacket(data, data.Length); break; } if (dataPacket != null && dataPacket.IsResult) { if (DoCMReceiveData != null) //通知界面而已,对于数据的响应在这个类中完成。 { DoCMReceiveData(this, new CMRecvDataEventArgs(tcpService, dataPacket, data.Length)); } } } catch (Exception e) { LogUtilities.LogMessage("ReceiveDataCallBack Error" + e.Message); } }
//private const int _bufferSize = 512; /// <summary> /// 临时用,建立tcp连接 /// </summary> /// <param name="ipAddressPort"></param> public void Connect(IpAddressPort ipAddressPort) { try { _ipAddressPort = ipAddressPort; _tcpClient = new TcpClient(); _tcpClient.Connect(ipAddressPort.HostName, ipAddressPort.Port); if (_tcpClient.Connected) { HaveConnected = true; byte[] buffer = new byte[_bufferSize]; _tcpClient.Client.BeginReceive(buffer, 0, _bufferSize, 0, new AsyncCallback(RecvEndCallBack), buffer); //if (OnConnectServSuccess != null) // OnConnectServSuccess(this, new ConnectEventArgs(SerMode, this, ipAddressPort)); } } catch (Exception e) { LogUtilities.LogMessage(this.SerMode.ToString() + "服务器连接失败..." + e.Message); } }
/// <summary> /// Start /// </summary> public static void Start() { try { LogUtilities.LogMessage("行情开始加载"); ConnectManager2.CreateInstance().DoNetConnect(); DataCenterCore dc = DataCenterCore.CreateInstance(); //dc.TimerStart(); //dc.DoTimerElapsed(); //var codes = dc.GetQuoteCodeList(new List<String>() {"600000.SH"}, FieldIndex.Code); //订阅一个指数行情 //…… } catch (Exception e) { LoggerHelper.Log.Debug(e.Message + "\r\n" + e.StackTrace); } }
public static void LoadConfig() { if (!File.Exists(QuoteFieldFilePath)) { return; } XmlDocument doc = new XmlDocument(); try { doc.Load(QuoteFieldFilePath); } catch (IOException ioe) { LogUtilities.LogMessage("Load FieldInfo Error : " + ioe.Message); throw; } catch (XmlException xe) { LogUtilities.LogMessage("Load FieldInfo Error : " + xe.Message); throw; } catch (Exception ex) { LogUtilities.LogMessage("Load FieldInfo Error : " + ex.Message); throw; } try { DicDefaultFieldInfo = GetDefaultFieldInfo(doc); DicMarketFieldInfo = GetMarketFieldInfo(doc); } catch (Exception ex) { LogUtilities.LogMessage("Load FieldInfo Error : " + ex.Message); throw; } }
private static void LoadConfig() { if (!File.Exists(FilePath)) { return; } XmlDocument doc = new XmlDocument(); try { doc.Load(FilePath); } catch (IOException ioe) { LogUtilities.LogMessage("Load StockCustIndicatorCfg.xml Error : " + ioe.Message); throw; } catch (XmlException xe) { LogUtilities.LogMessage("Load StockCustIndicatorCfg.xml Error : " + xe.Message); throw; } catch (Exception ex) { LogUtilities.LogMessage("Load StockCustIndicatorCfg.xml Error : " + ex.Message); throw; } try { DicStockCustIndicator = GetStockCustIndicator(doc); } catch (Exception ex) { LogUtilities.LogMessage("Load StockCustIndicatorCfg.xml Error : " + ex.Message); throw; } }
/// <summary> /// 导出公式 /// </summary> /// <param name="f"></param> /// <param name="filename"></param> /// <returns></returns> public static bool ExportFormula(Formula f, String filename) { try { SerializeFormula serializeFormula = new SerializeFormula(); serializeFormula.des = f.des; serializeFormula.drawtype = f.drawtype; serializeFormula.fid = f.fid; serializeFormula.flag = Marshal.PtrToStringAnsi(f.flag); serializeFormula.help = Marshal.PtrToStringAnsi(f.help); serializeFormula.name = f.name; serializeFormula.paracount = f.paracount; for (int i = 0; i < f.paracount; i++) { serializeFormula.para[i].name = f.para[i].name; serializeFormula.para[i].maxvalue = f.para[i].maxvalue; serializeFormula.para[i].minvalue = f.para[i].minvalue; serializeFormula.para[i].defvalue = f.para[i].defvalue; serializeFormula.para[i].step = f.para[i].step; serializeFormula.para[i].uservalue = f.para[i].uservalue; } serializeFormula.paramtip = Marshal.PtrToStringAnsi(f.paramtip); serializeFormula.password = Marshal.PtrToStringAnsi(f.password); serializeFormula.src = Marshal.PtrToStringAnsi(f.src); serializeFormula.subtype = f.subtype; serializeFormula.type = f.type; serializeFormula.y = f.y; serializeFormula.y2 = f.y2; serializeFormula.y2num = f.y2num; serializeFormula.ynum = f.ynum; BinaryFormatter serializer = new BinaryFormatter(); FileStream file = new FileStream(filename, FileMode.Create); serializer.Serialize(file, serializeFormula); return(true); } catch (Exception e) { LogUtilities.LogMessage(e.Message); return(false); } }
/// <summary> /// 获取公式的系统功能 /// </summary> public static FormulaFunctions GetFormulaSystemFunctions() { FormulaFunctions functions = new FormulaFunctions(); String filePath = PathUtilities.CfgPath + "formulafunctions.xml"; if (File.Exists(filePath)) { try { XmlDocument doc = new XmlDocument(); doc.Load(filePath); XmlNode root = doc.SelectSingleNode(@"functions"); foreach (XmlNode categoryNode in root.ChildNodes) { FormulaFunctions.Category category = new FormulaFunctions.Category(); category.Name = categoryNode.Attributes["name"].Value; foreach (XmlNode functionNode in categoryNode) { FormulaFunctions.Function function = new FormulaFunctions.Function(); function.Name = functionNode.Attributes["name"].Value; function.Description = functionNode.Attributes["des"].Value; foreach (XmlNode usagenode in functionNode.ChildNodes) { if (usagenode.NodeType == XmlNodeType.CDATA) { function.Usage = usagenode.Value; } } category.Functions.Add(function); } functions.FunctionCategories.Add(category); } } catch (Exception e) { LogUtilities.LogMessage("FormulaFunction.xml error:" + e.Message); } } return(functions); }
/// <summary> /// GetUserInfo /// </summary> /// <returns></returns> public static UserInfo GetUserInfo() { UserInfo userInfo = new UserInfo(); if (File.Exists(FileName)) { XmlDocument doc = new XmlDocument(); try { doc.Load(FileName); XmlNode root = doc.SelectSingleNode(@"SysConfig/UserInfo"); if (root != null) { XmlAttribute atr = root.Attributes["HKDelay"]; if (atr != null) userInfo.HaveHKDelayRight = (atr.Value == "YES"); atr = root.Attributes["HKReal"]; if (atr != null) { userInfo.HaveHKRealTimeRight = (atr.Value == "YES"); if (userInfo.HaveHKRealTimeRight) userInfo.HaveHKDelayRight = true; } atr = root.Attributes["SHLevel2"]; if (atr != null) userInfo.HaveSHLevel2Right = (atr.Value == "YES"); atr = root.Attributes["SZLevel2"]; if (atr != null) userInfo.HaveSZLevel2Right = (atr.Value == "YES"); atr = root.Attributes["InterbankBond"]; if (atr != null) userInfo.HaveInterbankBondRight = (atr.Value == "YES"); atr = root.Attributes["ThirdBoardMarket"]; if (atr != null) userInfo.HaveThirdBoardMarketRight = (atr.Value == "YES"); atr = root.Attributes["IndexChinaBond"]; if (atr != null) userInfo.HaveIndexChinaBondRight = (atr.Value == "YES"); atr = root.Attributes["IndexFuture"]; if (atr != null) userInfo.HaveIndexFutureRight = (atr.Value == "YES"); atr = root.Attributes["WebF10Address"]; if (atr != null) userInfo.WebF10Address = atr.Value; atr = root.Attributes["IsVIPTerminal"]; if (atr != null) userInfo.IsVIPTerminal = (atr.Value == "YES"); atr = root.Attributes["IsVerifyFromSrv"]; if (atr != null) userInfo.IsVerifyFromSrv = (atr.Value == "YES"); } } catch (Exception ex) { LogUtilities.LogMessage("Load SysCfg Error : " + ex.Message); } } return userInfo; }
/// <summary> /// long转code /// </summary> /// <param name="securityId"></param> /// <returns></returns> public static String ConvertLongToCode(long securityId) { if (securityId == 0) { return(String.Empty); } if (securityId > 10000000000) { String[] marketCode = new String[2]; String sidStr = securityId + ""; String marketStr = sidStr.Substring(0, 2); if (marketStr.StartsWith("1")) { marketCode[0] = marketStr.Substring(1, 1); } else { marketCode[0] = marketStr; } StringBuilder code = new StringBuilder(); bool isVariable = "7".Equals(sidStr.Substring(2, 1)); if (!isVariable) { for (int i = 2; i < sidStr.Length; i += 2) { String sus = sidStr.Substring(i, 2); Int32 tmp = Int32.Parse(sus); if (tmp >= 0 && tmp <= 9) { //48~57号为0~9十个阿拉伯数字,0补齐两位 code.Append(tmp); } else if (tmp >= 10 && tmp <= 35) { //65~90号为26个大写英文字母,10开始 code.Append((char)(tmp + 55)); } else if (tmp >= 40 && tmp <= 65) { //97~122号为26个小写英文字母 ,40开始 code.Append((char)(tmp + 57)); } } marketCode[1] = code.ToString(); } else { long tmp = long.Parse(sidStr.Substring(3)); while (tmp > 0) { int i = Convert.ToInt32(tmp % 36); if (i >= 0 && i <= 9) { //48~57号为0~9十个阿拉伯数字,0补齐两位 code.Append(i); } else { code.Append((char)(i + 87)); } tmp = tmp / 36; } marketCode[1] = code.ToString(); } ReqMarketType mt = (ReqMarketType)Convert.ToInt32(marketCode[0]); return(DataPacket.GetEmCode(mt, marketCode[1])); } else { String code = String.Empty; try { if (DetailData.FieldIndexDataString.ContainsKey(Convert.ToInt32(securityId))) { DetailData.FieldIndexDataString[Convert.ToInt32(securityId)].TryGetValue(FieldIndex.EMCode, out code); } } catch (Exception e) { LogUtilities.LogMessage("ConvertCode error " + e.Message); } return(code); } }
/// <summary> /// code转到long /// </summary> /// <param name="code"></param> /// <returns></returns> public static long ConvertCodeToLong(String code) { ReqMarketType reqMt; String shortCode; DataPacket.ParseCode(code, out reqMt, out shortCode); int codeLen = shortCode.Length; bool isVariable = codeLen > 8; char[] chars = null; if (!isVariable) { chars = new char[code.Length * 2 + 2]; if ((short)reqMt < 10) { chars[0] = '1'; chars[1] = Convert.ToChar(((short)reqMt).ToString()); } else { ((short)reqMt).ToString().ToCharArray().CopyTo(chars, 0); } int i = 2; foreach (char c in shortCode) { if (c >= 48 && c <= 57) { //48~57号为0~9十个阿拉伯数字,0补齐两位 chars[i] = '0'; chars[i + 1] = c; } else if (c >= 65 && c <= 90) { //65~90号为26个大写英文字母,10开始 // chars[i] = ('0'+ (10 + (c - 65))); chars[i] = Convert.ToChar((((c - 65) / 10) + 1).ToString()); chars[i + 1] = Convert.ToChar(((c - 65) % 10).ToString()); } else if (c >= 97 && c <= 122) { //97~122号为26个小写英文字母 ,40开始 chars[i] = Convert.ToChar((((c - 97) / 10) + 4).ToString()); chars[i + 1] = Convert.ToChar(((c - 97) % 10).ToString()); } i = i + 2; } try { long security = long.Parse(new String(chars)); return(security); } catch (Exception e) { LogUtilities.LogMessage(e.Message); } } else { shortCode = shortCode.ToLower(); StringBuilder varStr = new StringBuilder(); if ((short)reqMt < 10) { varStr.Append('1').Append(Convert.ToChar(((short)reqMt).ToString())); } else { varStr.Append(Convert.ToChar(((short)reqMt).ToString())); } varStr.Append(7); int i = 0; long varL = 0L; foreach (char c in shortCode) { if (c >= 48 && c <= 57) { //48~57号为0~9十个阿拉伯数字 varL += (c - 48) * (long)Math.Pow(36, i); } else if (c >= 97 && c <= 122) { //97~122号为26个小写英文字母 varL += (c - 87) * (long)Math.Pow(36, i); } i++; } varStr.Append(varL); return(long.Parse(varStr.ToString()));; } return(0); }