예제 #1
0
        /// <summary>
        /// Aborta um canal
        /// </summary>
        /// <param name="canal"></param>
        private void _resetCanal(CanalInfo canal)
        {
            try
            {
                Ativador.AbortChannel(canal.roteador);
                Ativador.AbortChannel(canal.assinatura);
            }
            catch (Exception ex)
            {
                logger.Error("_resetCanal():" + ex.Message, ex);
            }

            canal.Conectado = false;

            try
            {
                logger.Info("Canal: " + canal.Exchange + "-" + canal.ChannelID);

                canal.roteador    = RoteadorCanalComunic.GetChannel <IRoteadorOrdens>(canal.RoteadorAddress, null);
                canal.assinatura  = RoteadorCanalComunic.GetChannel <IAssinaturasRoteadorOrdensCallback>(canal.AssinaturaAddress, this);
                canal.roteadorAdm = RoteadorCanalComunic.GetChannel <IRoteadorOrdensAdmin>(canal.RoteadorAdmAddress, null);

                logger.Info("Canal: " + canal.Exchange + "-" + canal.ChannelID + " assinando eventos de status");
                canal.assinatura.AssinarExecucaoOrdens(new AssinarExecucaoOrdemRequest());
                canal.assinatura.AssinarStatusConexaoBolsa(new AssinarStatusConexaoBolsaRequest());
            }
            catch (Exception ex)
            {
                logger.Error("_resetCanal():" + ex.Message, ex);
            }
        }
예제 #2
0
        private void _carregarCanais()
        {
            // Carrega a tabela de canais
            foreach (CanalConfig canal in _config.Canais)
            {
                logger.Info("Carregando informação do canal: " + canal.Exchange);
                logger.Info("Porta ........................: " + canal.ChannelID);
                logger.Info("EndPointRoteader .............: " + canal.EndPointRoteador);
                logger.Info("EndPointAssinatura ...........: " + canal.EndPointAssinatura);
                logger.Info("EndPointRoteadorAdm ..........: " + canal.EndPointRoteadorAdm);

                CanalInfo info = new CanalInfo();

                info.ChannelID          = canal.ChannelID;
                info.Exchange           = canal.Exchange;
                info.RoteadorAddress    = canal.EndPointRoteador;
                info.AssinaturaAddress  = canal.EndPointAssinatura;
                info.RoteadorAdmAddress = canal.EndPointRoteadorAdm;

                info.assinatura  = null;
                info.roteador    = null;
                info.roteadorAdm = null;

                _canais.Add(info.Exchange + info.ChannelID, info);
            }

            logger.Info("Obtendo instancias de assinatura e envio de ordens");

            // Assina cada um dos eventos dos canais
            foreach (CanalInfo canal in _canais.Values)
            {
                try
                {
                    canal.roteador    = RoteadorCanalComunic.GetChannel <IRoteadorOrdens>(canal.RoteadorAddress, null);
                    canal.assinatura  = RoteadorCanalComunic.GetChannel <IAssinaturasRoteadorOrdensCallback>(canal.AssinaturaAddress, this);
                    canal.roteadorAdm = RoteadorCanalComunic.GetChannel <IRoteadorOrdensAdmin>(canal.RoteadorAdmAddress, null);

                    canal.assinatura.AssinarExecucaoOrdens(new AssinarExecucaoOrdemRequest());
                }
                catch (EndpointNotFoundException enfex)
                {
                    logger.Error("Nao pode conectar no canal" + canal.Exchange + "-" + canal.ChannelID + " [" + enfex.Message + "]");
                    canal.Conectado = false;
                }
            }

            logger.Info(_canais.Count + " canais carregados");
        }