public static HostConfigurator Service <TService>(this HostConfigurator configurator,
                                                          Action <ServiceConfigurator <TService> > callback)
            where TService : class
        {
            if (configurator == null)
            {
                throw new ArgumentNullException("configurator");
            }
            if (callback == null)
            {
                throw new ArgumentNullException("callback");
            }

            var serviceConfigurator = new DelegateServiceConfigurator <TService>();

            callback(serviceConfigurator);

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

                ServiceBuilder serviceBuilder = serviceConfigurator.Build();

                return(serviceBuilder);
            });

            return(configurator);
        }
Пример #2
0
        public static ServiceBuilderFactory CreateServiceBuilderFactory <TService>(Action <ServiceConfigurator <TService> > callback)
            where TService : class
        {
            if (callback == null)
            {
                throw new ArgumentNullException(nameof(callback));
            }

            var serviceConfigurator = new DelegateServiceConfigurator <TService>();

            callback(serviceConfigurator);

            ServiceBuilder ServiceBuilderFactory(HostSettings x)
            {
                ConfigurationResult configurationResult = ValidateConfigurationResult.CompileResults(serviceConfigurator.Validate());

                if (configurationResult.Results.Any())
                {
                    throw new HostConfigurationException("The service was not properly configured");
                }

                ServiceBuilder serviceBuilder = serviceConfigurator.Build();

                return(serviceBuilder);
            }

            return(ServiceBuilderFactory);
        }
        private static TestHost BuildTestHost(TestServicewithStopSupport servicewithStopSupport, Action <LeaderConfigurationBuilder <TestServicewithStopSupport> > builder)
        {
            var serviceConfigurator = new DelegateServiceConfigurator <TestServicewithStopSupport>();

            serviceConfigurator.ConstructUsing(() => servicewithStopSupport);
            serviceConfigurator.WhenStartedAsLeader(builder);
            serviceConfigurator.WhenStopped((testService, control) =>
            {
                testService.Stop();
                return(true);
            });

            var host = new TestHost(
                new WindowsHostSettings(),
                new WindowsHostEnvironment(new HostConfiguratorImpl()),
                serviceConfigurator.Build().Build(new WindowsHostSettings()));

            return(host);
        }