private void MessageBroker(string Instrumento, string Mensagem) { try { logger.Debug("[" + Instrumento + "] [" + Mensagem + "]"); if (_filtraIndiceCheio) { if (Mensagem.Substring(2, 2).Equals("BF") && !Instrumento.Substring(0, 1).Equals("W")) { return; } } switch (Mensagem.ToString().Substring(0, 2)) { case ConstantesMDS.Negocio: MemoriaCotacao.LastNegocioPacket = DateTime.Now; MemoriaCotacao.LastNegocioMsg = Mensagem; //MemoriaCotacao.AdicionarLivroNegocios(Instrumento, Mensagem); MemoriaCotacao.AdicionarNegocio(Instrumento, Mensagem); MemoriaCotacao.AdicionarNegocioIndiceGradual(Instrumento, Mensagem); MemoriaCotacao.ProcessaSonda(Instrumento, Mensagem); //ComposicaoIndice.RecalcularIndice(Instrumento, Mensagem); if (Instrumento.Equals(IndiceGradual.INDICE_IBOV)) { IndiceGradual.AtualizarIndiceGradual(Instrumento, Mensagem); } if (MemoriaCotacaoDelay.GetInstance().DelayTickerOn) { MemoriaCotacaoDelay.GetInstance().AdicionarFilaLivroNegocios(Instrumento, Mensagem); } break; case ConstantesMDS.LivroNegocio: MemoriaCotacao.LastLofPacket = DateTime.Now; MemoriaCotacao.LastLofMsg = Mensagem; MemoriaCotacao.AdicionarLivroNegocios(Instrumento, Mensagem); break; case ConstantesMDS.LivroOferta: MemoriaCotacao.LastLofPacket = DateTime.Now; MemoriaCotacao.LastLofMsg = Mensagem; MemoriaCotacao.AdicionarTikerLivroOferta(Instrumento, Mensagem); break; case ConstantesMDS.Destaques: MemoriaCotacao.LastDestaquePacket = DateTime.Now; MemoriaCotacao.LastDestaqueMsg = Mensagem; MemoriaCotacao.AdicionarTikerDestaques(Mensagem); break; case ConstantesMDS.RankCorretora: MemoriaCotacao.LastRankingPacket = DateTime.Now; MemoriaCotacao.LastRankingMsg = Mensagem; MemoriaCotacao.AdicionarTickerRankCorretora(Instrumento, Mensagem); break; case ConstantesMDS.Sonda: logger.Info("Recebeu Sonda: [" + Mensagem + "]"); MemoriaCotacao.LastSondaMsg = Mensagem; MemoriaCotacao.ProcessaSonda(Instrumento, Mensagem); break; case ConstantesMDS.LIVRO_AGREGADO: MemoriaCotacao.LastAgregadoPacket = DateTime.Now; MemoriaCotacao.LastAgregadoMsg = Mensagem; MemoriaCotacao.AdicionarTikerLivroAgregado(Instrumento, Mensagem); break; } } catch (Exception ex) { logger.Error("MessageBroker(): " + ex.Message, ex); if (!String.IsNullOrEmpty(Instrumento)) { logger.Error("Instrumento [" + Instrumento + "]"); } if (!String.IsNullOrEmpty(Mensagem)) { logger.Error("Mensagem [" + Mensagem + "]"); } } }
public virtual void IniciarServico() { //composicaoIndice = new ComposicaoIndice(); indiceGradual = new IndiceGradual(); lIndiceGradualQuantidadeTeorica = new IndiceGradualQuantidadeTeorica(); // Verifica se deve ser ativado o tratamento de delay da cotação MemoriaCotacaoDelay.GetInstance().DelayTickerOn = false; if (ConfigurationManager.AppSettings["DelayTicker"] != null && ConfigurationManager.AppSettings["DelayTicker"].ToString().ToUpper().Equals("TRUE")) { MemoriaCotacaoDelay.GetInstance().DelayTickerOn = true; // Obtem o valor do Delay do sinal de cotação, em minutos MemoriaCotacaoDelay.GetInstance().DelayTickerAmount = 15 * 60 * 1000; if (ConfigurationManager.AppSettings["DelayTickerAmount"] != null) { int delayAmount = Convert.ToInt32(ConfigurationManager.AppSettings["DelayTickerAmount"].ToString()); MemoriaCotacaoDelay.GetInstance().DelayTickerAmount = delayAmount * 60 * 1000; } MemoriaCotacaoDelay.GetInstance().StartProcessamento(); } if (ConfigurationManager.AppSettings["FiltraIndiceCheio"] != null && ConfigurationManager.AppSettings["FiltraIndiceCheio"].ToString().ToUpper().Equals("TRUE")) { _filtraIndiceCheio = true; } QueueManager.Instance.Start(); //QueueManager.Instance.ComposicaoIndice = composicaoIndice; QueueManager.Instance.IndiceGradual = indiceGradual; logger.Info("MDS modelo tradicional"); lSocket = new MDSPackageSocket(); lSocket.FiltraIndiceCheio = _filtraIndiceCheio; lSocket.IpAddr = ConfigurationManager.AppSettings["ASConnMDSIp"].ToString(); lSocket.Port = ConfigurationManager.AppSettings["ASConnMDSPort"].ToString(); //lSocket.setComposicaoIndice(composicaoIndice); lSocket.setIndiceGradual(indiceGradual); lSocket.OpenConnection(); _sendMDSLoginMSG(lSocket); thrMonitorConexao = new Thread(new ThreadStart(MonitorConexaoMDS)); thrMonitorConexao.Start(); gTimer = new Timer(new TimerCallback(IniciarThread), null, 0, 5000); // Obtem o parametro de maxima diferenca de horario da ultima mensagem com a bolsa // para envio de alertas MaxDifHorarioBolsa = 75; if (ConfigurationManager.AppSettings["MaxDifHorarioBolsa"] != null) { MaxDifHorarioBolsa = Convert.ToDouble(ConfigurationManager.AppSettings["MaxDifHorarioBolsa"].ToString()); } MaxDifHorarioBolsa *= 1000; // Obtem o timeout de mensagem com o MDS, em segundos TimeoutMDS = 300; if (ConfigurationManager.AppSettings["TimeoutMDS"] != null) { TimeoutMDS = Convert.ToDouble(ConfigurationManager.AppSettings["TimeoutMDS"].ToString()); } TimeoutMDS *= 1000; logger.Info("Servico cotacao iniciado"); this.Status = ServicoStatus.EmExecucao; }
public void setIndiceGradual(IndiceGradual indiceGradual) { this.indiceGradual = indiceGradual; }