예제 #1
0
        public static HostConfigurator AfterStoppingServices(this HostConfigurator configurator,
                                                             Action <IServiceCoordinator> callback)
        {
            configurator.AddConfigurator(new RunHostConfiguratorAction(x => x.AfterStoppingServices(callback)));

            return(configurator);
        }
예제 #2
0
 public static HostConfigurator UseWindsor(
     this HostConfigurator configurator,
     Action <IWindsorContainer> action)
 {
     configurator.AddConfigurator(new WindsorHostBuilderConfigurator(action));
     return(configurator);
 }
예제 #3
0
        /// <summary>
        /// Applies the option to the specified host configurator.
        /// </summary>
        /// <param name="configurator">The host configurator.</param>
        public void ApplyTo(HostConfigurator configurator)
        {
            var recoveryHostConfigurator = new ServiceRecoveryHostConfigurator();

            foreach (var option in serviceRecoveryOptions.Actions)
            {
                switch (option)
                {
                case RestartServiceRecoveryAction restartServiceRecoveryAction:
                    recoveryHostConfigurator.RestartService(restartServiceRecoveryAction.Delay / 60000);
                    break;

                case RestartSystemRecoveryAction restartSystemRecoveryAction:
                    recoveryHostConfigurator.RestartComputer(restartSystemRecoveryAction.Delay / 60000, restartSystemRecoveryAction.RestartMessage);
                    break;

                case RunProgramRecoveryAction runProgramRecoveryAction:
                    recoveryHostConfigurator.RunProgram(runProgramRecoveryAction.Delay / 60000, runProgramRecoveryAction.Command);
                    break;
                }
            }

            if (this.serviceRecoveryOptions.RecoverOnCrashOnly)
            {
                recoveryHostConfigurator.OnCrashOnly();
            }

            recoveryHostConfigurator.SetResetPeriod(this.serviceRecoveryOptions.ResetPeriod);

            configurator.AddConfigurator(recoveryHostConfigurator);
        }
예제 #4
0
 public static HostConfigurator UseUnityContainer(
     this HostConfigurator configurator,
     IUnityContainer unityContainer)
 {
     configurator.AddConfigurator(new UnityHostBuilderConfigurator(unityContainer));
     return(configurator);
 }
예제 #5
0
        public void ApplyTo(HostConfigurator configurator)
        {
            if (configurator == null)
                throw new ArgumentNullException("configurator");

            configurator.AddConfigurator(new SudoConfigurator());
        }
예제 #6
0
        public static HostConfigurator RunAsLocalService(this HostConfigurator configurator)
        {
            var runAsConfigurator = new RunAsHostConfigurator(ServiceAccount.LocalService);

            configurator.AddConfigurator(runAsConfigurator);

            return(configurator);
        }
예제 #7
0
        public static HostConfigurator RunAs(this HostConfigurator configurator, string username, string password)
        {
            var runAsConfigurator = new RunAsHostConfigurator(username, password, ServiceAccount.User);

            configurator.AddConfigurator(runAsConfigurator);

            return(configurator);
        }
예제 #8
0
        /// <summary>
        /// Sets additional text to be displayed before the built-in help text is displayed
        /// </summary>
        /// <param name="hostConfigurator"></param>
        /// <param name="text"></param>
        public static HostConfigurator SetHelpTextPrefix(this HostConfigurator hostConfigurator, string text)
        {
            var configurator = new PrefixHelpTextHostConfigurator(text);

            hostConfigurator.AddConfigurator(configurator);

            return(hostConfigurator);
        }
예제 #9
0
        public static HostConfigurator UseNinject(this HostConfigurator configurator, INinjectSettings settings)
        {
            var log = HostLogger.Get("Default");

            log.Info("[Topshelf.Ninject] 开始整合到宿主中");
            configurator.AddConfigurator(new NinjectBuilderConfigurator(settings));
            return(configurator);
        }
예제 #10
0
        public static HostConfigurator AddDependency(this HostConfigurator configurator, string name)
        {
            var dependencyConfigurator = new DependencyHostConfigurator(name);

            configurator.AddConfigurator(dependencyConfigurator);

            return(configurator);
        }
예제 #11
0
        /// <summary>
        /// Specifies a text resource to be loaded and displayed before the built-in system help text is displayed
        /// </summary>
        /// <param name="hostConfigurator"></param>
        /// <param name="assembly">The assembly containing the text resource</param>
        /// <param name="resourceName">The name of the embedded resource</param>
        public static HostConfigurator LoadHelpTextPrefix(this HostConfigurator hostConfigurator, Assembly assembly,
                                                          string resourceName)
        {
            var configurator = new PrefixHelpTextHostConfigurator(assembly, resourceName);

            hostConfigurator.AddConfigurator(configurator);

            return(hostConfigurator);
        }
예제 #12
0
        public void ApplyTo(HostConfigurator configurator)
        {
            if (configurator == null)
                throw new ArgumentNullException("configurator");

            var commandConfigurator = new CommandConfigurator(_command);

            configurator.AddConfigurator(commandConfigurator);
        }
예제 #13
0
        public void ApplyTo(HostConfigurator configurator)
        {
            if (configurator == null)
            {
                throw new ArgumentNullException("configurator");
            }

            configurator.AddConfigurator(new SudoConfigurator());
        }
예제 #14
0
        /// <summary>
        /// Configure the <see cref="HostConfigurator"/> to use the given <see cref="IContainer"/>
        /// for resolving.
        /// </summary>
        /// <param name="configurator">The <see cref="HostConfigurator"/> to configure.</param>
        /// <param name="lightCoreContainer">The LightCore <see cref="IContainer"/>.</param>
        /// <returns>The configured <see cref="HostConfigurator"/>.</returns>
        public static HostConfigurator UseLightCore(this HostConfigurator configurator, IContainer lightCoreContainer)
        {
            var log = HostLogger.Get(typeof(HostConfiguratorExtensions));

            log.Info("[Topshelf.LightCore] Integration Started.");

            configurator.AddConfigurator(new LightCoreBuilderConfigurator(lightCoreContainer));
            return(configurator);
        }
        public static HostConfigurator UseAbp(this HostConfigurator configurator, AbpBootstrapper abpBootstrapper)
        {
            var log = HostLogger.Get(typeof(HostConfiguratorExtensions));

            log.Info("[Topshelf.Abp] Integration Started in host.");

            configurator.AddConfigurator(new AbpBuilderConfigurator(abpBootstrapper));
            return(configurator);
        }
예제 #16
0
        public void ApplyTo(HostConfigurator configurator)
        {
            if (configurator == null)
                throw new ArgumentNullException("configurator");

            var startConfigurator = new StartConfigurator();

            configurator.AddConfigurator(startConfigurator);
        }
예제 #17
0
        public static HostConfigurator UseNinject(this HostConfigurator configurator, IKernel kernel)
        {
            var log = HostLogger.Get(typeof(HostConfiguratorExtensions));

            log.Info("[Topshelf.Ninject] Integration Started in host.");

            configurator.AddConfigurator(new NinjectBuilderConfigurator(kernel));
            return(configurator);
        }
        public static HostConfigurator UseServiceProvider(this HostConfigurator configurator, IServiceProvider provider)
        {
            var logWriter = HostLogger.Get(typeof(HostConfiguratorExtensions));

            logWriter.Info("[MicrosoftDependencyInjection] Integration Started in host.");

            configurator.AddConfigurator(new MicrosoftDependencyInjectionBuilderConfigurator(provider));

            return(configurator);
        }
예제 #19
0
        public static HostConfigurator UseNinject(this HostConfigurator configurator, INinjectSettings settings, params INinjectModule[] modules)
        {
            var log = HostLogger.Get(typeof(HostConfiguratorExtensions));

            log.Info("[Topshelf.Ninject] Integration Started in host.");
            log.Debug($"Ninject kernel instantiated with {modules.Length} modules.");

            configurator.AddConfigurator(new NinjectBuilderConfigurator(settings, modules));
            return(configurator);
        }
예제 #20
0
        public static HostConfigurator UseStructureMap(this HostConfigurator configurator, params Registry[] registries)
        {
            var log = HostLogger.Get(typeof(HostConfiguratorExtensions));

            log.Info("[Topshelf.StructureMap] Integration Started in host.");
            log.Debug(string.Format("StructureMap container instantiated with {0} registries.", registries.Length));

            configurator.AddConfigurator(new StructureMapBuilderConfigurator(registries));
            return(configurator);
        }
예제 #21
0
        public static HostConfigurator StartAutomaticallyDelayed(this HostConfigurator configurator)
        {
            if (configurator == null)
            {
                throw new ArgumentNullException("configurator");
            }

            configurator.AddConfigurator(new StartModeHostConfigurator(HostStartMode.AutomaticDelayed));

            return(configurator);
        }
예제 #22
0
        public static HostConfigurator AfterRollback(this HostConfigurator configurator, Action callback)
        {
            if (configurator == null)
            {
                throw new ArgumentNullException(nameof(configurator));
            }

            configurator.AddConfigurator(new InstallHostConfiguratorAction("AfterRollback", x => x.AfterRollback(settings => callback())));

            return(configurator);
        }
예제 #23
0
        public void ApplyTo(HostConfigurator configurator)
        {
            if (configurator == null)
            {
                throw new ArgumentNullException(nameof(configurator));
            }

            var commandConfigurator = new CommandConfigurator(_command);

            configurator.AddConfigurator(commandConfigurator);
        }
예제 #24
0
        public static HostConfigurator AfterInstall(this HostConfigurator configurator, Action callback)
        {
            if (configurator == null)
            {
                throw new ArgumentNullException("configurator");
            }

            configurator.AddConfigurator(new InstallHostConfiguratorAction("AfterInstall", x => x.AfterInstall(callback)));

            return(configurator);
        }
예제 #25
0
        public static HostConfigurator RunAsFirstPrompt(this HostConfigurator configurator)
        {
            if (configurator == null)
            {
                throw new ArgumentNullException("configurator");
            }
            RunAsFirstUserHostConfigurator hostConfigurator = new RunAsFirstUserHostConfigurator();

            configurator.AddConfigurator(hostConfigurator);
            return(configurator);
        }
예제 #26
0
        /// <summary>
        /// Instructs TopShelf to use simple injector for dependency resolution.
        /// </summary>
        /// <param name="configurator">The configurator.</param>
        /// <param name="packageAssemblies">The package assemblies containng types implementing <see cref="IPackage"/>.</param>
        /// <returns>HostConfigurator.</returns>
        public static HostConfigurator UseSimpleInjector(this HostConfigurator configurator, params Assembly[] packageAssemblies)
        {
            var logWriter = HostLogger.Get(typeof(HostConfiguratorExtensions));

            logWriter.Info("[Topshelf.SimpleInjector] Integration started in host.");
            logWriter.Debug(packageAssemblies.Length == 0
                ? "[Topshelf.SimpleInjector] scanning all loaded assemblies for packages."
                : string.Format("[Topshelf.SimpleInjector] instantiating with {0} package assemblies.", packageAssemblies.Length));
            configurator.AddConfigurator(new SimpleInjectorBuilderConfigurator(packageAssemblies));
            return(configurator);
        }
예제 #27
0
        public static HostConfigurator BeforeUninstall([NotNull] this HostConfigurator configurator, Action callback)
        {
            if (configurator == null)
            {
                throw new ArgumentNullException("configurator");
            }

            configurator.AddConfigurator(new UninstallHostConfiguratorAction(x => x.BeforeUninstall(callback)));

            return(configurator);
        }
예제 #28
0
        public static HostConfigurator SetEventTimeout([NotNull] this HostConfigurator configurator, TimeSpan timeout)
        {
            if (configurator == null)
            {
                throw new ArgumentNullException("configurator");
            }

            configurator.AddConfigurator(new RunHostConfiguratorAction(x => x.SetEventTimeout(timeout)));

            return(configurator);
        }
예제 #29
0
        public static HostConfigurator Disabled(this HostConfigurator configurator)
        {
            if (configurator == null)
            {
                throw new ArgumentNullException("configurator");
            }

            configurator.AddConfigurator(new StartModeHostConfigurator(HostStartMode.Disabled));

            return(configurator);
        }
예제 #30
0
        public static HostConfigurator StartManually(this HostConfigurator configurator)
        {
            if (configurator == null)
            {
                throw new ArgumentNullException(nameof(configurator));
            }

            configurator.AddConfigurator(new StartModeHostConfigurator(HostStartMode.Manual));

            return(configurator);
        }
예제 #31
0
        public static HostConfigurator StartManually([NotNull] this HostConfigurator configurator)
        {
            if (configurator == null)
            {
                throw new ArgumentNullException("configurator");
            }

            configurator.AddConfigurator(new StartModeHostConfigurator(ServiceStartMode.Manual));

            return(configurator);
        }
예제 #32
0
        public void ApplyTo([NotNull] HostConfigurator configurator)
        {
            if (configurator == null)
            {
                throw new ArgumentNullException("configurator");
            }

            var startConfigurator = new StartConfigurator();

            configurator.AddConfigurator(startConfigurator);
        }
예제 #33
0
        public static HostConfigurator AfterStartingServices([NotNull] this HostConfigurator configurator, Action callback)
        {
            if (configurator == null)
            {
                throw new ArgumentNullException("configurator");
            }

            configurator.AddConfigurator(new RunHostConfiguratorAction(x => x.AfterStartingServices(_ => callback())));

            return(configurator);
        }
예제 #34
0
파일: StartOption.cs 프로젝트: haf/Topshelf
        public void ApplyTo(HostConfigurator configurator)
        {
            var startConfigurator = new StartConfigurator();

            configurator.AddConfigurator(startConfigurator);
        }
예제 #35
0
 public void ApplyTo(HostConfigurator configurator)
 {
     configurator.AddConfigurator(new SystemOnlyHelpHostConfigurator());
 }
예제 #36
0
 public void ApplyTo(HostConfigurator configurator)
 {
     configurator.AddConfigurator(new SudoConfigurator());
 }
예제 #37
0
 public void ApplyTo(HostConfigurator configurator)
 {
     configurator.AddConfigurator(new UnknownCommandLineOptionHostConfigurator(_text));
 }