Example #1
0
 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;
     }
 }
Example #2
0
        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;
            }
        }