Exemple #1
0
        private void btExecRep_Click(object sender, EventArgs e)
        {
            IAssinaturasRoteadorOrdensCallback roteador = Ativador.Get <IAssinaturasRoteadorOrdensCallback>(this);

            AssinarExecucaoOrdemResponse      resp    = roteador.AssinarExecucaoOrdens(new AssinarExecucaoOrdemRequest());
            AssinarStatusConexaoBolsaResponse cnxresp = roteador.AssinarStatusConexaoBolsa(new AssinarStatusConexaoBolsaRequest());
        }
        /// <summary>
        /// Abre o canal de callbacks com o Roteador e efetua a assinatura
        /// </summary>
        /// <param name="objectimpl"></param>
        private void _assinaCallbackRoteador(IRoteadorOrdensCallback objectimpl)
        {
            try
            {
                logger.Info("Chamando ativador para instanciar o cliente do roteador...");

                gClienteRoteadorOrdens = Ativador.Get <IAssinaturasRoteadorOrdensCallback>(objectimpl);

                if (gClienteRoteadorOrdens != null)
                {
                    logger.Info("Cliente do roteador instanciado, enviando request de assinatura...");

                    AssinarExecucaoOrdemResponse lResposta = gClienteRoteadorOrdens.AssinarExecucaoOrdens(new AssinarExecucaoOrdemRequest());                         // Faz a chamada pra abrir a conexão com o roteador; só serve pra enviar o contexto, e o roteador assinar a ponte duplex

                    if (lResposta.StatusResposta == Library.MensagemResponseStatusEnum.OK)
                    {
                        logger.Info("Conexão com o roteador aberta, resposta do servidor: [" + lResposta.StatusResposta + "] [" + lResposta.DescricaoResposta + "]");                    // Abriu ok, solta o evento de mensagem
                    }
                    else
                    {
                        logger.Info("Conexão com o roteador aberta, resposta do servidor: [" + lResposta.StatusResposta + "] [" + lResposta.DescricaoResposta + "]"); // Erro na abertura de conexão; TODO: verificar protocolo de erro nesse caso

                        gClienteRoteadorOrdens = null;                                                                                                                // Setando como null pra tentar novamente depois, ver conforme o protocolo o que fazer
                    }

                    // Assina os status de conexao a bolsa para manter o canal aberto.
                    AssinarStatusConexaoBolsaResponse resp = gClienteRoteadorOrdens.AssinarStatusConexaoBolsa(new AssinarStatusConexaoBolsaRequest());
                    _lastStatusBolsa = DateTime.Now.Ticks;
                }
            }
            catch (Exception ex)
            {
                logger.Error("Erro em _assinaCallbackRoteador():" + ex.Message, ex);
            }
        }
Exemple #3
0
        /// <summary>
        /// Assina os eventos de acompanhamento de ordens e status das bolsas
        /// </summary>
        private void SubscribeRoteador()
        {
            try
            {
                logger.Info("SubscribeRoteador(): assinando eventos de acompanhamento e status");

                if (roteador == null)
                {
                    roteador = Ativador.Get <IAssinaturasRoteadorOrdensCallback>(this);

                    if (roteador != null)
                    {
                        AssinarExecucaoOrdemResponse resp = roteador.AssinarExecucaoOrdens(new AssinarExecucaoOrdemRequest());

                        AssinarStatusConexaoBolsaResponse resp1 = roteador.AssinarStatusConexaoBolsa(new AssinarStatusConexaoBolsaRequest());

                        _lastStatus = DateTime.Now;
                    }
                }
            }
            catch (Exception ex)
            {
                logger.Error("SubscribeRoteador: " + ex.Message, ex);
            }
        }
        /// <summary>
        ///MONITOR DE CONEXOES DO ROTEADOR
        /// </summary>
        private void RunMonitor()
        {
            try
            {
                logger.Info("Iniciando thread de monitoracao do roteador de ordens");
                int _iMonitorConexoes = 0;

                if (roteador == null)
                {
                    roteador = Ativador.Get <IAssinaturasRoteadorOrdensCallback>(this);
                }

                while (_bKeepRunning)
                {
                    // 4 * 250 = 1 segundo
                    if (_iMonitorConexoes == 30 * 4)
                    {
                        lock (roteador)
                        {
                            try
                            {
                                if (roteador == null)
                                {
                                    roteador = Ativador.Get <IAssinaturasRoteadorOrdensCallback>(this);
                                }
                            }
                            catch (Exception ex)
                            {
                                Ativador.AbortChannel(roteador);
                                roteador = null;
                            }
                        }
                        _iMonitorConexoes = 0;
                    }
                    else
                    {
                        _iMonitorConexoes++;
                    }

                    Thread.Sleep(250);
                }
            }
            catch (Exception ex)
            {
                logger.Error("RunMonitor(): " + ex.Message, ex);
            }

            logger.Info("THREAD DE MONITORAMENTO DO ROTEADOR FINALIZADA");
        }
        public void StartRouterCallBack()
        {
            IAssinaturasRoteadorOrdensCallback roteador = Ativador.Get <IAssinaturasRoteadorOrdensCallback>(this);

            logger.Info("Callback ativado com sucesso");
            AssinarExecucaoOrdemResponse resp = roteador.AssinarExecucaoOrdens(new AssinarExecucaoOrdemRequest());

            logger.Info("Assinatura de execução realizada com sucesso");
            AssinarStatusConexaoBolsaResponse cnxresp = roteador.AssinarStatusConexaoBolsa(new AssinarStatusConexaoBolsaRequest());

            logger.Info("Assinatura de execução realizada com sucesso");

            Thread thrMonitorRoteador = new Thread(new ThreadStart(RunMonitor));

            thrMonitorRoteador.Start();
        }
Exemple #6
0
        /// <summary>
        /// Cancela a assinatura dos callbacks de ordem e status do roteador
        /// </summary>
        private void UnsubscribeRoteador()
        {
            try
            {
                if (roteador != null)
                {
                    logger.Info("UnsubscribeRoteador(): desassinando eventos de acompanhamento e status");

                    Ativador.AbortChannel(roteador);

                    roteador = null;
                }
            }
            catch (Exception ex)
            {
                logger.Error("UnsubscribeRoteador: " + ex.Message, ex);
            }
        }
 public SmartTraderCallback()
 {
     roteador = Ativador.Get <IAssinaturasRoteadorOrdensCallback>(this);
 }