Exemplo n.º 1
0
        /// <summary>
        ///   Configures a new service host
        /// </summary>
        /// <param name="configureCallback"> Configuration method to call </param>
        /// <returns> A Topshelf service host, ready to run </returns>
        public static Host New(Action <HostConfigurator> configureCallback)
        {
            try
            {
                if (configureCallback == null)
                {
                    throw new ArgumentNullException("configureCallback");
                }

                var configurator = new HostConfiguratorImpl();

                Type declaringType = configureCallback.Method.DeclaringType;
                if (declaringType != null)
                {
                    string defaultServiceName = declaringType.Namespace;
                    if (!string.IsNullOrEmpty(defaultServiceName))
                    {
                        configurator.SetServiceName(defaultServiceName);
                    }
                }

                configureCallback(configurator);

                configurator.ApplyCommandLine();

                ConfigurationResult result = ValidateConfigurationResult.CompileResults(configurator.Validate());

                if (result.Message.Length > 0)
                {
                    HostLogger.Get(typeof(HostFactory))
                    .InfoFormat("Configuration Result:\n{0}", result.Message);
                }

                return(configurator.CreateHost());
            }
            catch (Exception ex)
            {
                HostLogger.Get(typeof(HostFactory)).Error("An exception occurred creating the host", ex);
                HostLogger.Shutdown();
                throw;
            }
        }
        /// <summary>
        ///   Configure the host to supervise the service
        /// </summary>
        /// <param name="hostConfigurator"> </param>
        /// <param name="configureCallback"> </param>
        public static HostConfigurator Supervise(this HostConfigurator hostConfigurator,
                                                 Action <SuperviseConfigurator> configureCallback)
        {
            var superviseConfigurator = new SuperviseServiceConfigurator();

            configureCallback(superviseConfigurator);

            hostConfigurator.UseServiceBuilder(x =>
            {
                ConfigurationResult configurationResult =
                    ValidateConfigurationResult.CompileResults(superviseConfigurator.Validate());
                if (configurationResult.Results.Any())
                {
                    throw new HostConfigurationException("The service was not properly configured");
                }

                ServiceBuilder serviceBuilder = superviseConfigurator.Build();

                return(serviceBuilder);
            });

            return(hostConfigurator);
        }
 public VaneConfigurationException(ValidateConfigurationResult result)
     : base("The vane was not properly configured: "
            + Environment.NewLine
            + result.Message)
 {
 }