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