Esempio n. 1
0
        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 + "]");
                }
            }
        }
Esempio n. 2
0
        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;
        }
Esempio n. 3
0
 public void setIndiceGradual(IndiceGradual indiceGradual)
 {
     this.indiceGradual = indiceGradual;
 }