Esempio n. 1
0
        public override void IniciarServico()
        {
            logger.Info("*** Iniciando Processador de Cotacao ***");

            _bKeepRunning = true;

            _config = GerenciadorConfig.ReceberConfig <ProcessadorCotacaoConfig>();

            UMDFConfig _umdfconfig = GerenciadorConfig.ReceberConfig <UMDFConfig>();

            _umdfSockets = new MDSPackageSocket[_umdfconfig.Portas.Count];
            int i = 0;

            foreach (int porta in _umdfconfig.Portas)
            {
                _umdfSockets[i] = new MDSPackageSocket();

                _umdfSockets[i].IpAddr = _config.MDSAddress;
                _umdfSockets[i].Port   = porta;

                _umdfSockets[i].OnFastQuoteReceived      += new MDSMessageReceivedHandler(OnCotacao);
                _umdfSockets[i].OnSerieHistoricaReceived += new MDSMessageReceivedHandler(OnSerieHistorica);

                i++;
            }


            _db = new ANGPersistenciaDB();

            _threadCotacao = new Thread(new ThreadStart(Run));
            _threadCotacao.Start();

            _threadSerieHistorica = new Thread(new ThreadStart(SerieHistoricaRun));
            _threadSerieHistorica.Start();

            _srvstatus = ServicoStatus.EmExecucao;
        }
Esempio 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.OnFastQuoteReceived += 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_ABERTURA:
                        ProcessarMensagemAbertura(mensagem.Message);
                        break;

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

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

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