/// <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) { }