Exemple #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);
            }
        }
Exemple #2
0
        public T InstanciarServico <T>()
        {
            T lRetorno = default(T);

            if (ServicoHostColecao.Default.Servicos.Count == 0 ||
                !ServicoHostColecao.Default.Servicos.ContainsKey(string.Format("{0}-", typeof(T))))
            {
                ServicoHostColecao.Default.CarregarConfig(ConfiguracoesValidadas.TipoDeObjetoAtivador);
            }


            try
            {
                lRetorno = Ativador.Get <T>();
            }
            catch (CommunicationObjectFaultedException)
            {
                Ativador.AbortChannel(lRetorno);
            }
            catch (Exception ex)
            {
                Logger.Error("Erro no método InstanciarServico<T> da página base", ex);
            }

            return(lRetorno);
        }
Exemple #3
0
        /// <summary>
        /// Envia o relatorio de execucao para os assinantes
        /// </summary>
        /// <param name="order">objeto OrdemInfo</param>
        protected virtual void _sendConnectionStatus()
        {
            List <IRoteadorOrdensCallback> toDelete = new List <IRoteadorOrdensCallback>();

            StatusConexaoBolsaInfo conexao = new StatusConexaoBolsaInfo();

            conexao.Bolsa     = _config.Bolsa;
            conexao.Operador  = _config.Operador;
            conexao.Conectado = _bConectadoBolsa;

            try
            {
                lock (_exchangeStatusSubscribers)
                {
                    foreach (IRoteadorOrdensCallback subscriber in _exchangeStatusSubscribers)
                    {
                        if (Ativador.IsValidChannel(subscriber))
                        {
                            try
                            {
                                subscriber.StatusConexaoAlterada(conexao);
                            }
                            catch (Exception ex)
                            {
                                logger.Error(ex);

                                logger.Info("Abortando channel para assinante: " + subscriber.ToString());
                                Ativador.AbortChannel(subscriber);

                                logger.Info("Removendo assinante da lista: " + subscriber.ToString());
                                toDelete.Add(subscriber);
                            }
                        }
                        else
                        {
                            logger.Info("Removendo assinante da lista: " + subscriber.ToString());
                            toDelete.Add(subscriber);
                        }
                    }

                    // Remove os assinantes abandonados/falhos da lista
                    foreach (IRoteadorOrdensCallback subscriber in toDelete)
                    {
                        _exchangeStatusSubscribers.Remove(subscriber);
                    }

                    toDelete.Clear();
                }
            }
            catch (Exception ex)
            {
                logger.Error("Erro em _sendExecutionReport(): " + ex.Message, ex);
            }
        }
 /// <summary>
 /// Aborta a conexao com Roteador
 /// </summary>
 private void _cancelRoteadorCallback()
 {
     try
     {
         Ativador.AbortChannel(gClienteRoteadorOrdens);
     }
     catch (Exception ex)
     {
         logger.Error("Erro em _cancelRoteadorCallback():" + ex.Message, ex);
     }
 }
Exemple #5
0
        /// <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 (ServicoRoteador == null)
                {
                    ServicoRoteador = Ativador.Get <IRoteadorOrdens>();
                }

                while (_bKeepRunning)
                {
                    // 4 * 250 = 1 segundo
                    if (_iMonitorConexoes == 30 * 4)
                    {
                        lock (ServicoRoteador)
                        {
                            try
                            {
                                if (ServicoRoteador == null)
                                {
                                    ServicoRoteador = Ativador.Get <IRoteadorOrdens>();
                                }
                                ServicoRoteador.Ping(new PingRequest());
                            }
                            catch (Exception ex)
                            {
                                Ativador.AbortChannel(ServicoRoteador);
                                ServicoRoteador = 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");
        }
Exemple #6
0
 public void DisporServico(object pServico)
 {
     if (pServico != null)
     {
         try
         {
             Ativador.AbortChannel(pServico);
         }
         catch (Exception ex)
         {
             Logger.ErrorFormat("Erro ao dispor serviço: [{0}] [{1}]", pServico.GetType(), ex.Message);
         }
     }
 }
Exemple #7
0
        /// <summary>
        ///
        /// </summary>
        private void heartBeatProc()
        {
            long lastHeartBeat = DateTime.MinValue.Ticks;

            while (_bKeepRunning)
            {
                List <IDropCopyCallback> toDelete = new List <IDropCopyCallback>();
                TimeSpan ts = new TimeSpan(DateTime.Now.Ticks - lastHeartBeat);
                if (ts.TotalMilliseconds >= 30000)
                {
                    lastHeartBeat = DateTime.Now.Ticks;
                    logger.Info("Enviando Heartbeat para " + _lstDropCopySubscribers.Count + " subscribers");

                    foreach (IDropCopyCallback subscriber in _lstDropCopySubscribers)
                    {
                        if (Ativador.IsValidChannel(subscriber))
                        {
                            try
                            {
                                subscriber.HeartBeat();
                            }
                            catch (Exception ex)
                            {
                                logger.Error(ex);

                                logger.Info("Abortando channel para assinante: " + subscriber.ToString());
                                Ativador.AbortChannel(subscriber);

                                logger.Info("Removendo assinante da lista: " + subscriber.ToString());
                                toDelete.Add(subscriber);
                            }
                        }
                        else
                        {
                            logger.Info("Removendo assinante da lista: " + subscriber.ToString());
                            toDelete.Add(subscriber);
                        }
                    }

                    // Remove os assinantes abandonados/falhos da lista
                    foreach (IDropCopyCallback subscriber in toDelete)
                    {
                        _lstDropCopySubscribers.Remove(subscriber);
                    }

                    toDelete.Clear();
                }
                Thread.Sleep(250);
            }
        }
        /// <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");
        }
Exemple #9
0
        /// <summary>
        /// Envia o relatorio de execucao para os assinantes
        /// </summary>
        /// <param name="order">objeto OrdemInfo</param>
        private void _dispatchExecutionReport(OrdemInfo order)
        {
            List <IRoteadorOrdensCallback> toDelete = new List <IRoteadorOrdensCallback>();

            try
            {
                lock (_executionsReportsSubscribers)
                {
                    foreach (IRoteadorOrdensCallback subscriber in _executionsReportsSubscribers)
                    {
                        if (Ativador.IsValidChannel(subscriber))
                        {
                            try
                            {
                                subscriber.OrdemAlterada(order);
                            }
                            catch (Exception ex)
                            {
                                logger.Error(ex);

                                logger.Info("Abortando channel para assinante: " + subscriber.ToString());
                                Ativador.AbortChannel(subscriber);

                                logger.Info("Removendo assinante da lista: " + subscriber.ToString());
                                toDelete.Add(subscriber);
                            }
                        }
                        else
                        {
                            logger.Info("Removendo assinante da lista: " + subscriber.ToString());
                            toDelete.Add(subscriber);
                        }
                    }

                    // Remove os assinantes abandonados/falhos da lista
                    foreach (IRoteadorOrdensCallback subscriber in toDelete)
                    {
                        _executionsReportsSubscribers.Remove(subscriber);
                    }

                    toDelete.Clear();
                }
            }
            catch (Exception ex)
            {
                logger.Error("Erro em _sendExecutionReport(): " + ex.Message, ex);
            }
        }
Exemple #10
0
 /// <summary>
 /// Aborta um canal
 /// </summary>
 /// <param name="canal"></param>
 private void _fecharCanais()
 {
     foreach (CanalInfo canal in _canais.Values)
     {
         try
         {
             canal.Conectado = false;
             Ativador.AbortChannel(canal.roteador);
             Ativador.AbortChannel(canal.assinatura);
         }
         catch (Exception ex)
         {
             logger.Error("_fecharCanais():" + ex.Message, ex);
         }
     }
 }
Exemple #11
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);
            }
        }
Exemple #12
0
 protected void Session_End(object sender, EventArgs e)
 {
     if (Session["CodigoSessao"] != null && Session["CodigoSessao"].ToString() != string.Empty)
     {
         IServicoSeguranca seguranca    = (IServicoSeguranca)Application["ServicoSeguranca"]; //Ativador.Get<IServicoSeguranca>();
         string            codigoSessao = Session["CodigoSessao"].ToString();
         try
         {
             seguranca.EfetuarLogOut(new OMS.Library.MensagemRequestBase()
             {
                 CodigoSessao = codigoSessao
             });
         }
         catch (Exception ex)
         {
             string x = ex.Message;
             Ativador.AbortChannel(seguranca);
             Application["ServicoSeguranca"] = null;
         }
     }
 }
Exemple #13
0
        public void Run()
        {
            try
            {
                logger.Info("Iniciando thread de repasse de mensagens ao subscriber");

                prepareNesper();

                int  qtdeFila      = 0;
                long lastHeartbeat = 0;
                while (_bKeepRunning)
                {
                    queueSem.WaitOne(250);

                    lock (queue)
                    {
                        qtdeFila = queue.Count;
                    }

                    for (int i = 0; i < qtdeFila; i++)
                    {
                        object evento;
                        string msgid = "";
                        lock (queue)
                        {
                            evento = queue.Dequeue();
                        }

                        if (evento.GetType() == typeof(EventoMega))
                        {
                            EventoMega mega = (EventoMega)evento;

                            msgid = mega.MsgID;

                            repassaEventoMega(mega);
                        }

                        if (evento.GetType() == typeof(EventoCBLC))
                        {
                            EventoCBLC cblc = (EventoCBLC)evento;
                            msgid = cblc.MsgID;
                            repassaEventoCBLC(cblc);
                        }

                        logger.Debug("Encaminhou mensagem [" + msgid + "]");
                    }

                    TimeSpan tspan = new TimeSpan(DateTime.Now.Ticks - lastHeartbeat);

                    if (tspan.TotalSeconds > 30)
                    {
                        lastHeartbeat = DateTime.Now.Ticks;
                        subscriberChannel.OnHeartBeat();
                    }
                }
            }
            catch (Exception ex)
            {
                logger.Error("Run() Error: " + ex.Message);

                if (Ativador.IsValidChannel(subscriberChannel))
                {
                    Ativador.AbortChannel(subscriberChannel);
                }
            }

            ServicoConectorSTM.epService.EPAdministrator.GetStatement(eplName1).RemoveListener(this);
            ServicoConectorSTM.epService.EPAdministrator.GetStatement(eplName2).RemoveListener(this);

            logger.Info("Thread finalizada [" + guid.ToString() + "]");
        }
Exemple #14
0
        /// <summary>
        ///
        /// </summary>
        private void envioCallbackReportsProc()
        {
            List <IDropCopyCallback> toDelete = new List <IDropCopyCallback>();

            while (_bKeepRunning)
            {
                List <OrdemInfo> lstOrdems = null;
                lock (qOrdemInfo)
                {
                    if (qOrdemInfo.Count > 0)
                    {
                        lstOrdems = qOrdemInfo.ToList();
                    }
                    qOrdemInfo.Clear();
                }

                if (lstOrdems != null)
                {
                    foreach (OrdemInfo info in lstOrdems)
                    {
                        foreach (IDropCopyCallback subscriber in _lstDropCopySubscribers)
                        {
                            if (Ativador.IsValidChannel(subscriber))
                            {
                                try
                                {
                                    subscriber.OrdemAlterada(info);
                                }
                                catch (Exception ex)
                                {
                                    logger.Error(ex);

                                    logger.Info("Abortando channel para assinante: " + subscriber.ToString());
                                    Ativador.AbortChannel(subscriber);

                                    logger.Info("Removendo assinante da lista: " + subscriber.ToString());
                                    toDelete.Add(subscriber);
                                }
                            }
                            else
                            {
                                logger.Info("Removendo assinante da lista: " + subscriber.ToString());
                                toDelete.Add(subscriber);
                            }
                        }
                    }

                    // Remove os assinantes abandonados/falhos da lista
                    foreach (IDropCopyCallback subscriber in toDelete)
                    {
                        _lstDropCopySubscribers.Remove(subscriber);
                    }

                    toDelete.Clear();
                }
                else
                {
                    Thread.Sleep(100);
                }
            }
        }