public void PararServicos() { try { foreach (KeyValuePair <string, Servico> item in this.Servicos) { IServicoControlavel servicoControlavel = item.Value.Instancia as IServicoControlavel; if (servicoControlavel != null) { Log.EfetuarLog("Parando Serviço: " + servicoControlavel.GetType().FullName, LogTipoEnum.Passagem, "OMS.Library.Servicos"); servicoControlavel.PararServico(); } } Log.EfetuarLog("Todos os serviços parados", LogTipoEnum.Passagem, "OMS.Library.Servicos"); } catch (Exception ex) { Log.EfetuarLog(ex, null, "OMS.Library.Servicos"); throw ex; } }
public Servico RegistrarServico(ServicoInfo servicoInfo, object instancia) { try { // Cria servico Servico servico = new Servico(); servico.ServicoInfo = servicoInfo; servico.Instancia = instancia; // Seta o id do servico if (servico.ServicoInfo.ID != null) { ((IServicoID)instancia).SetarID(servico.ServicoInfo.ID); } // Adiciona string id = servico.ServicoInfo.ID == null ? "" : servico.ServicoInfo.ID; foreach (string Interface in servico.ServicoInfo.NomeInterface) { string nomeServico = Interface.Split(',')[0]; string key = nomeServico + "-" + id; lock (this.Servicos) { if (this.Servicos.ContainsKey(key)) { this.Servicos[key] = servico; } else { this.Servicos.Add(key, servico); } } } // Ativa o servico logger.Info("Ativando servico: " + servico.ServicoInfo.NomeInstancia); // Acrescenta os enderecos de enpoint da base mais os declarados para o servico if (_baseAddress.Count > 0) { servico.BaseAddress.AddRange(_baseAddress); } if (servicoInfo.WCFBaseAddress.Count > 0) { servico.BaseAddress.AddRange(servicoInfo.WCFBaseAddress); } servico.MexBaseAddress = _mexBaseAddress; // Efetua a ativacao do servico servico.Ativar(); // Verifica se é servico controlavel IServicoControlavel controlavel = servico.Instancia as IServicoControlavel; if (controlavel != null) { logger.Info("Servico " + servicoInfo.NomeInstancia + " é controlavel."); if (!_srvsControlaveis.ContainsKey(servicoInfo.NomeInstancia)) { _srvsControlaveis.Add(servicoInfo.NomeInstancia, controlavel); } } // Retorna return(servico); } catch (Exception ex) { logger.Error("Erro em RegistrarServico(" + servicoInfo.NomeInterface + "): ", ex); throw ex; } }