コード例 #1
0
        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>());
        }
コード例 #2
0
 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);
             }
         }
     }
 }
コード例 #3
0
 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);
 }
コード例 #4
0
        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>());
        }
コード例 #5
0
        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);
            }
        }
コード例 #6
0
        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);
        }
コード例 #7
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);
        }
コード例 #8
0
        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);
        }
コード例 #9
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);
 }
コード例 #10
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);
 }
コード例 #11
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);
     }
 }
コード例 #12
0
 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);
 }
コード例 #13
0
 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);
 }
コード例 #14
0
        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);
        }
コード例 #15
0
 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);
 }
コード例 #16
0
        //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);
        }
コード例 #17
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);
 }
コード例 #18
0
 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);
 }
コード例 #19
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);
 }
コード例 #20
0
 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);
         }
     }
 }
コード例 #21
0
        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);
        }