private List <StockCode> GetStockCodes() { try { if (_stockCodes.Count > 0) { return(_stockCodes.Values.ToList <StockCode>()); } DataServantPrx prx = GetDataServant(); if (prx != null) { DSIceStockCode[] arr; var re = prx.GetStockCodes(out arr); Program.logger.LogRunning("DataServerClient:获取全市场股票代码成功,股票总数:{0}", arr.Length); foreach (var item in arr) { var stockCodeItem = new StockCode(item); _stockCodes.Add(stockCodeItem.Code, stockCodeItem); } return(_stockCodes.Values.ToList()); } } catch (Exception ex) { Program.logger.LogRunning("DataServerClient:GetStockCodes调用失败\r\n Message:{0}.\r\n StackTrace:{1}", ex.Message, ex.StackTrace); } return(new List <StockCode>()); }
private void FlushCodes() { if (Codes.Count > 0) { if ((DateTime.Now - this.LastFlushTime).TotalSeconds > FLUSH_INTERVAL) { LastFlushTime = DateTime.Now; try { DataServantPrx prx = GetDataServant(); if (prx != null) { if (Codes.Count > 0) { prx.FlushCodes(Program.Current平台用户.用户名, Codes.ToArray <string>()); } } } catch (Exception ex) { Program.logger.LogRunning("DataServerClient:FlushCodes调用失败\n{0}", ex.StackTrace); } } } }
private List <string> GetVipCodes() { try { DataServantPrx prx = GetDataServant(); if (prx != null) { Program.logger.LogRunning("开始获取订阅列表,订阅服务器地址:{0},ICE端口:{1}", ServerIP, ICEPort); var re = prx.GetVipCodes(); var codes = re.ListFromJSON <string>(); Program.logger.LogRunning("已获取订阅列表,股票数:" + codes.Count); return(codes); } else { TDFData.DataSourceConfig.IsUseTDFData = false; } } catch (Exception ex) { TDFData.DataSourceConfig.IsUseTDFData = false; Program.logger.LogRunning("DataServerClient:GetStockCodes调用失败\n{0}", ex.StackTrace); } return(null); }
public List <StockCode> GetStockCodes() { try { if (_stockCodes.Count > 0) { return(_stockCodes.Values.ToList <StockCode>()); } DataServantPrx prx = GetDataServant(); if (prx != null) { DSIceStockCode[] codes; int retval = prx.GetStockCodes(out codes); if (retval > 0 && codes != null) { foreach (DSIceStockCode code in codes) { StockCode sc = new StockCode(code); if (_stockCodes.ContainsKey(sc.Code) == false) { _stockCodes.Add(sc.Code, sc); } } } return(_stockCodes.Values.ToList <StockCode>()); } } catch (Exception ex) { AASClient.Program.logger.LogRunning("DataServerClient:GetStockCodes调用失败\n{0}", ex.Message); } return(new List <StockCode>()); }
private void TestConnectedRoutine() { while (true) { try { DataServantPrx prx = GetDataServant(); if (prx != null) { prx.ice_ping(); _isConnected = true; } else { _isConnected = false; } } catch (Exception ex) { AASClient.Program.logger.LogRunning("ICE通讯测试错误:\n{0}", ex.Message); _isConnected = false; } Thread.Sleep(3000); } }
public int SubscribeCodes(string name, string[] codelist) { try { DataServantPrx prx = GetDataServant(); if (prx != null) { List <string> codes = new List <string>(); //寻找未注册的code foreach (string code in codelist) { lock (_subCodes) { if (_subCodes.ContainsKey(code) || codes.Contains(code)) { continue; } } codes.Add(code); } if (codes.Count > 0) { //添加股票订阅 int retval = prx.SubscribeCodes(AASClient.Program.Current平台用户.用户名, codes.ToArray <string>()); foreach (string code in codes) { _subAddDataCodes.Enqueue(code); _subAddOrderCodes.Enqueue(code); _subAddOrderQueueCodes.Enqueue(code); _subAddTransactionCodes.Enqueue(code); } //添加索引 foreach (string code in codelist) { if (_subCodes.ContainsKey(code)) { if (_subCodes[code].Contains(name) == false) { _subCodes[code].Add(name); } } else { _subCodes.Add(code, new List <string> { name }); } } return(retval); } } } catch (Exception ex) { AASClient.Program.logger.LogRunning("DataServerClient:SubscribeCodes调用失败\n{0}", ex.Message); } return(0); }
protected DataServantPrx GetDataServant() { try { lock (this) { if (_dataServant != null) { _dataServant.ice_ping(); return(_dataServant); } if (_ic == null) { InitializationData icData = new InitializationData(); Ice.Properties icProp = Util.createProperties(); icProp.setProperty("Ice.ACM.Client", "0"); icProp.setProperty("Ice.MessageSizeMax", "2097152");//2gb in kb icData.properties = icProp; Communicator ic = Util.initialize(icData); if (ic != null) { _ic = ic; } } if (_ic != null) { string endpoint = string.Format("AASDataServer/DataServant:tcp -h {0} -p {1}", ServerIP, ICEPort); Ice.ObjectPrx obj = _ic.stringToProxy(endpoint); DataServantPrx client = DataServantPrxHelper.checkedCast(obj); if (client == null) { AASClient.Program.logger.LogRunning("DataServerClient:无法获得有效数据服务器接口"); return(null); } client.ice_ping(); _dataServant = client; return(_dataServant); } } } catch (Ice.ConnectionRefusedException) { //计算机积极拒绝,认为未部署鱼头,不进行记录。 //Program.logger.LogRunning("DataServerClient:数据服务器连接失败\r\n {0}", ex.InnerException.Message); } catch (Exception ex) { _dataServant = null; Program.logger.LogInfo(string.Format("DataServerClient:数据服务器连接失败\r\n Message:{0}\r\n StackTrace:{1}", ex.Message, ex.StackTrace)); } return(null); }
public int UnsubscribeCodes(string name, string[] codelist) { try { DataServantPrx prx = GetDataServant(); if (prx != null) { List <string> codes = new List <string>(); //清除订阅索引 foreach (string code in codelist) { if (_subCodes.ContainsKey(code)) { if (_subCodes[code].Contains(name)) { if (_subCodes[code].Count == 1) { _subCodes.Remove(code); codes.Add(code); } else { _subCodes[code].Remove(name); } } } } //移除股票订阅 int retval = prx.UnsubscribeCodes(AASClient.Program.Current平台用户.用户名, codes.ToArray <string>()); foreach (string code in codes) { _subDeleteDataCodes.Enqueue(code); _subDeleteOrderCodes.Enqueue(code); _subDeleteOrderQueueCodes.Enqueue(code); _subDeleteTransactionCodes.Enqueue(code); } return(retval); } } catch (Exception ex) { AASClient.Program.logger.LogRunning("DataServerClient:UnsubscribeCodes调用失败\n{0}", ex.Message); } return(0); }
private int UnsubscribeCodes(string[] codelist) { try { DataServantPrx prx = GetDataServant(); if (prx != null) { int retval = prx.UnsubscribeCodes(AASClient.Program.Current平台用户.用户名, codelist); return(retval); } } catch (Exception ex) { AASClient.Program.logger.LogRunning("DataServerClient:UnsubscribeCodes调用失败\n{0}", ex.Message); } return(0); }
public override int UnsubscribeCodes(string username, string[] codelist, Ice.Current current__) { try { DataServantPrx prx = GetDataServant(); if (prx != null) { int retval = prx.UnsubscribeCodes(username, codelist); return(retval); } } catch (Ice.Exception ex) { LogHelper.Instance.Info("AASDataWService:UnsubscribeCodes调用失败\n" + ex.Message); } return(0); }
public override void FlushCodes(string username, string[] codelist, Ice.Current current__) { try { DataServantPrx prx = GetDataServant(); if (prx != null) { if (codelist.Length > 0) { prx.FlushCodes(username, codelist); } } } catch (System.Exception ex) { LogHelper.Instance.Info("AASDataWService:FlushCodes调用失败\n" + ex.Message); } }
public override int GetPubType(Ice.Current current__) { try { DataServantPrx prx = GetDataServant(); if (prx != null) { var re = prx.GetPubType(); LogHelper.Instance.Info("AASDataWService:获取当前pub模式成功"); return(re); } } catch (System.Exception ex) { LogHelper.Instance.Info("AASDataWService:获取当前pub模式失败!异常信息:" + ex.Message); } return(-1); }
public override bool SetSubType(string username, int subType, Ice.Current current__) { try { DataServantPrx prx = GetDataServant(); if (prx != null) { var re = prx.SetSubType(username, subType); LogHelper.Instance.Info("AASDataWService:设置订阅模式成功"); return(re); } } catch (System.Exception ex) { LogHelper.Instance.Info("AASDataWService:设置订阅模式失败!异常信息:" + ex.Message); } return(false); }
public bool IsConnectedTest() { try { DataServantPrx prx = GetDataServant(); if (prx != null) { prx.ice_ping(); return(true); } } catch (Exception ex) { AASClient.Program.logger.LogRunning("DataServerClient:连接测试失败{0}", ex.Message); } return(false); }
public int GetSubType() { try { DataServantPrx prx = GetDataServant(); if (prx != null) { var re = prx.GetSubType(); Program.logger.LogRunning("DataServerClient:获取当前订阅模式成功!"); return(re); } } catch (Exception ex) { Program.logger.LogRunning("DataServerClient:获取当前订阅模式失败!异常信息:{0}", ex.Message); } return(-1); }
//DataService _dataService; //private DataService GetDataService() //{ // if (!(_dataService is DataService)) // { // _dataService = UnityContainerHost.Container.Resolve<IDataService>() as DataService; // } // return _dataService; //} public override int SubscribeCodes(string username, string[] codelist, Ice.Current current__) { try { DataServantPrx prx = GetDataServant(); if (prx != null && codelist.Length > 0) { int retval = prx.SubscribeCodes(username, codelist); LogHelper.Instance.Info("AASDataWService:" + username + " 已订阅股票:" + string.Join(",", codelist)); return(retval); } } catch (System.Exception ex) { LogHelper.Instance.Info("AASDataWService:SubscribeCodes调用失败\n" + ex.Message); } return(0); }
public bool SetSubType(int subType) { try { DataServantPrx prx = GetDataServant(); if (prx != null) { var re = prx.SetSubType(Program.Current平台用户.用户名, subType); Program.logger.LogRunning("DataServerClient:设置订阅模式成功!"); return(re); } } catch (Exception ex) { Program.logger.LogRunning("DataServerClient:设置订阅模式失败!异常信息:{0}", ex.Message); } return(false); }
public override int GetStockCodes(out DSIceStockCode[] codes, Ice.Current current__) { try { DataServantPrx prx = GetDataServant(); if (prx != null) { DSIceStockCode[] arr; var re = prx.GetStockCodes(out arr); LogHelper.Instance.Info("AASDataWService:获取全市场股票代码成功,股票总数:" + arr.Length); codes = arr; } } catch (System.Exception ex) { LogHelper.Instance.Info("AASDataWService:GetStockCodes调用失败\r\n Message:" + ex.Message); } codes = null; return(0); }
public override string GetVipCodes(Ice.Current current__) { try { LogHelper.Instance.Info("GetVipCodes"); DataServantPrx prx = GetDataServant(); if (prx != null) { var re = prx.GetVipCodes(); // var codes = re.ListFromJSON<string>(); LogHelper.Instance.Info("AASDataWService:已获取订阅列表,股票总数:" + re.Length); //return codes; return(re); } } catch (System.Exception ex) { LogHelper.Instance.Info("AASDataWService:GetVipCodes调用失败\r\n Message:" + ex.Message); } return(null); }
void Timer_Elapsed(object sender, ElapsedEventArgs e) { if (_subCodes.Count > 0) { try { DataServantPrx prx = GetDataServant(); if (prx != null) { if (_subCodes.Count > 0) { prx.FlushCodes(AASClient.Program.Current平台用户.用户名, _subCodes.Keys.ToArray <string>()); } } } catch (Exception ex) { AASClient.Program.logger.LogRunning("DataServerClient:FlushCodes调用失败", ex.Message); } } }
protected DataServantPrx GetDataServant() { try { lock (this) { if (_dataServant != null) { _dataServant.ice_ping(); return(_dataServant); } if (_ic != null) { string endpoint = string.Format("ZeroMqConnector/DataServant:tcp -h {0} -p {1}", _serverIp, _icePort); ObjectPrx obj = _ic.stringToProxy(endpoint); DataServantPrx client = DataServantPrxHelper.checkedCast(obj); if (client == null) { AASClient.Program.logger.LogRunning("DataServerClient:无法获得有效数据服务器接口"); return(null); } client.ice_ping(); _dataServant = client; return(_dataServant); } } } catch (Exception ex) { _dataServant = null; AASClient.Program.logger.LogRunning("DataServerClient:数据服务器连接失败\n{0}", ex.Message); } return(null); }