public void IniciarServico() { try { logger.Info("**********************************************************************"); logger.Info("**********************************************************************"); logger.Info("*** IniciarServico(): FixServer...."); // Thread.Sleep(20000); // Carrega configurações a partir do banco de dados _dbFix = new DbFix(); string strExecFile = Process.GetCurrentProcess().MainModule.FileName; strExecFile = strExecFile.Substring(strExecFile.LastIndexOf(Path.DirectorySeparatorChar) + 1); logger.Info("ExecFile: " + strExecFile); _lstCfg = _dbFix.BuscarSessoesFIXServer(strExecFile); List <FixSessionItem> lstInit = new List <FixSessionItem>(); List <FixSessionItem> lstAccept = new List <FixSessionItem>(); List <FixSessionItem> lstDropCopy = new List <FixSessionItem>(); //logger.Info("Iniciando Gerenciador de Limites"); //LimiteManager.GetInstance().Start(); string strServerName = System.Net.Dns.GetHostName() + "." + System.Net.NetworkInformation.IPGlobalProperties.GetIPGlobalProperties().DomainName; logger.Info("Atualizando 'server names' das sessoes fix"); foreach (FixSessionItem item in _lstCfg) { if (item.ConnectionType.ToLower().Equals(FixConnectionType.ACCEPTOR)) { lstAccept.Add(item); } if (item.ConnectionType.ToLower().Equals(FixConnectionType.INITIATOR)) { lstInit.Add(item); } if (item.ConnectionType.ToLower().Equals(FixConnectionType.DROPCOPY_ACCEPTOR)) { lstDropCopy.Add(item); } // Atualizar o nome do servidor para definir a "origem" das sessoes _dbFix.AtualizarServerName(item.IdSessaoFix, strServerName); } // Criar primeiramente Initiator, para ser passado como parametro para as sessoes acceptor if (lstInit.Count == 0) { logger.Info("Configurações de FixInitiator não encontradas. Não criará o SocketInitiator"); } else { foreach (FixSessionItem item in lstInit) { FixInitiator aux = new FixInitiator(item); _lstfixInitiator.Add(aux); logger.Info("IniciarServico(): iniciando SocketInitiator"); aux.Start(); } // Atribuir as sessoes para executar as tarefas (como dump do dicionario de msgs) _tasks.SetFixInitiators(_lstfixInitiator); } if (lstDropCopy.Count == 0) { logger.Info("Configurações de FixDropCopy não encontradas. Não criará o SocketAcceptor DropCopy"); } else { logger.Info("IniciarServico(): iniciando Sessao Drop Copy "); _fixDropCopy = new FixDropCopy(lstDropCopy); _fixDropCopy.Start(); //_lstfixDropCopy.Add(aux); } if (lstAccept.Count == 0) { logger.Info("Configurações de FixAcceptor não encontradas. Não criará o SocketAcceptor"); } else { logger.Info("IniciarServico(): iniciando SocketAcceptor"); _fixAcceptor = new FixAcceptor(lstAccept, _lstfixInitiator, _fixDropCopy); _fixAcceptor.Start(); } logger.Info("IniciarServico(): iniciando crontab Scheduler"); if (null == _cron) { _cron = new Util.CronStyleScheduler(); } _cron.Start(); logger.Info("*** IniciarServico(): FixServer inicializado..."); _dbFix = null; _status = ServicoStatus.EmExecucao; } catch (Exception ex) { logger.Error("Erro inicializacao: " + ex.Message, ex); throw ex; } }
public void PararServico() { try { logger.Info("*** Parando FixServer"); if (_fixAcceptor != null) { logger.Info("Parando Fix SocketAcceptor"); _fixAcceptor.Stop(); _fixAcceptor = null; } if (_fixDropCopy != null) { logger.Info("Parando Fix SocketAcceptor - Drop Copy"); _fixDropCopy.Stop(); _fixDropCopy = null; } if (_lstfixInitiator != null) { int length = _lstfixInitiator.Count; for (int i = 0; i < length; i++) { logger.Info("Parando Fix SocketInitiator"); _lstfixInitiator[i].Stop(); _lstfixInitiator[i] = null; } _lstfixInitiator.Clear(); _lstfixInitiator = null; } _tasks = null; DbFix dbFix = new DbFix(); logger.Info("Atualizando 'server names' das sessoes fix"); foreach (FixSessionItem item in _lstCfg) { dbFix.AtualizarServerName(item.IdSessaoFix, null); } _lstCfg.Clear(); _lstCfg = null; dbFix = null; //logger.Info("Parando Gerenciador de Limites"); //LimiteManager.GetInstance().Stop(); //logger.Info("Parando Cron Tab Scheduler"); if (null != _cron) { _cron.Stop(); _cron = null; } _status = ServicoStatus.Parado; logger.Info("*** FixServer finalizado"); // Forcar queda do executavel } catch (Exception ex) { logger.Error("*** Erro na parada do servico: " + ex.Message, ex); } }