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