Exemplo n.º 1
0
        public virtual void Run()
        {
            long lastlog = 0;

            while (_bKeepRunning)
            {
                if (_mds == null || _mds.IsConectado() == false)
                {
                    _mds = new MDSPackageSocket();

                    _mds.IpAddr = ConfigurationManager.AppSettings["MDSAddress"].ToString();
                    _mds.Port   = Convert.ToInt32(ConfigurationManager.AppSettings["MDSPort"].ToString());

                    _mds.OnMensagemMdsReceived += new MDSMessageReceivedHandler(OnCotacao);
                    _mds.OpenConnection();
                }

                List <MDSMessageEventArgs> tmpQueue = new List <MDSMessageEventArgs>();

                MDSMessageEventArgs mensagem = null;

                if (queueMensagemMds.TryDequeue(out mensagem))
                {
                    switch (mensagem.TipoMsg)
                    {
                    case MDSPackageSocket.TIPOMSG_NEGOCIO:
                        ProcessarMensagemCotacao(mensagem.Message);
                        break;

                    case MDSPackageSocket.TIPOMSG_CADASTROBASICO:
                        ProcessarMensagemCadastroBasico(mensagem.Message);
                        break;

                    case MDSPackageSocket.TIPOMSG_ABERTURA:
                        ProcessarMensagemAbertura(mensagem.Message);
                        break;

                    case MDSPackageSocket.TIPOMSG_FECHAMENTO:
                        ProcessarMensagemFechamento(mensagem.Message);
                        break;

                    case MDSPackageSocket.TIPOMSG_AJUSTE:
                        ProcessarMensagemAjuste(mensagem.Message);
                        break;

                    case MDSPackageSocket.TIPOMSG_UNITARIO:
                        ProcessarMensagemUnitario(mensagem.Message);
                        break;

                    case MDSPackageSocket.TIPOMSG_COMPOSICAOINDICE:
                        ProcessarMensagemComposicaoIndice(mensagem.Message);
                        break;
                    }

                    TimeSpan ts = new TimeSpan(DateTime.Now.Ticks - lastlog);
                    if (ts.TotalMilliseconds > 2000)
                    {
                        logger.Info("Fila de mensagens a processar: " + queueMensagemMds.Count);
                        lastlog = DateTime.Now.Ticks;
                    }

                    continue;
                }

                Thread.Sleep(250);
            }
        }
Exemplo n.º 2
0
        public virtual void Run()
        {
            bool bWait = false;

            while (_bKeepRunning)
            {
                if (_mds == null || _mds.IsConectado() == false)
                {
                    _mds = new MDSPackageSocket();

                    _mds.IpAddr = _config.MDSAddress;
                    _mds.Port   = _config.MDSPort;

                    _mds.OnMensagemMdsReceived += new MDSMessageReceivedHandler(OnCotacao);
                    _mds.OpenConnection();
                }

                List <MDSMessageEventArgs> tmpQueue = new List <MDSMessageEventArgs>();

                lock (queueMensagemMds)
                {
                    tmpQueue = queueMensagemMds.ToList();
                    queueMensagemMds.Clear();
                }

                foreach (MDSMessageEventArgs mensagem in tmpQueue)
                {
                    switch (mensagem.TipoMsg)
                    {
                    case MDSPackageSocket.TIPOMSG_NEGOCIO:
                        ProcessarMensagemCotacao(mensagem.Message);
                        break;

                    case MDSPackageSocket.TIPOMSG_CADASTROBASICO:
                        ProcessarMensagemCadastroBasico(mensagem.Message);
                        break;

                    case MDSPackageSocket.TIPOMSG_ABERTURA:
                        ProcessarMensagemAbertura(mensagem.Message);
                        break;

                    case MDSPackageSocket.TIPOMSG_FECHAMENTO:
                        ProcessarMensagemFechamento(mensagem.Message);
                        break;

                    case MDSPackageSocket.TIPOMSG_AJUSTE:
                        ProcessarMensagemAjuste(mensagem.Message);
                        break;

                    case MDSPackageSocket.TIPOMSG_UNITARIO:
                        ProcessarMensagemUnitario(mensagem.Message);
                        break;

                    case MDSPackageSocket.TIPOMSG_COMPOSICAOINDICE:
                        ProcessarMensagemComposicaoIndice(mensagem.Message);
                        break;
                    }
                }

                lock (queueMensagemMds)
                {
                    if (queueMensagemMds.Count == 0)
                    {
                        bWait = true;
                    }
                    else
                    {
                        bWait = false;
                    }
                }

                if (bWait)
                {
                    Thread.Sleep(250);
                }
            }
        }