/// <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 #2
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());
        }
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);
            }
        }
        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();
        }