Exemple #1
0
 protected void OnCotacao(object sender, MDSMessageEventArgs args)
 {
     lock (queueMensagemMds)
     {
         queueMensagemMds.Enqueue(args);
     }
 }
Exemple #2
0
        private void MessageBroker(string Instrumento, string Mensagem)
        {
            string tipoMensagem = Mensagem.ToString().Substring(0, 2);

            switch (tipoMensagem)
            {
            case TIPOMSG_NEGOCIO:
            case TIPOMSG_CADASTROBASICO:
            case TIPOMSG_ABERTURA:
            case TIPOMSG_FECHAMENTO:
            case TIPOMSG_AJUSTE:
            case TIPOMSG_UNITARIO:
            case TIPOMSG_COMPOSICAOINDICE:
                logger.DebugFormat("Tipo[{0}] Instrumento[{1}]: [{2}]", tipoMensagem, Instrumento, Mensagem);
                MDSMessageEventArgs args = new MDSMessageEventArgs();
                args.Instrumento = Instrumento;
                args.TipoMsg     = tipoMensagem;
                args.Message     = Mensagem;
                if (OnMensagemMdsReceived != null)
                {
                    OnMensagemMdsReceived(this, args);
                }
                break;

            default:
                break;
            }
        }
Exemple #3
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);
            }
        }