13
13
namespace Topshelf
14
14
{
15
15
using System ;
16
- using System . Linq ;
17
- using Builders ;
18
- using Configurators ;
19
16
using HostConfigurators ;
20
17
using Runtime ;
21
18
using ServiceConfigurators ;
@@ -28,9 +25,25 @@ public static SuperviseConfigurator Service<T>(this SuperviseConfigurator config
28
25
if ( configurator == null )
29
26
throw new ArgumentNullException ( "configurator" ) ;
30
27
31
- ServiceBuilderFactory factory = settings => new ControlServiceBuilder < T > ( x => new T ( ) ) ;
28
+ ServiceBuilderFactory serviceBuilderFactory = ServiceExtensions . CreateServiceBuilderFactory ( x => new T ( ) ,
29
+ NoCallback ) ;
32
30
33
- configurator . UseServiceBuilder ( factory ) ;
31
+ configurator . UseServiceBuilder ( serviceBuilderFactory ) ;
32
+
33
+ return configurator ;
34
+ }
35
+
36
+ public static SuperviseConfigurator Service < T > ( this SuperviseConfigurator configurator ,
37
+ Action < ServiceConfigurator > callback )
38
+ where T : class , ServiceControl , new ( )
39
+ {
40
+ if ( configurator == null )
41
+ throw new ArgumentNullException ( "configurator" ) ;
42
+
43
+ ServiceBuilderFactory serviceBuilderFactory = ServiceExtensions . CreateServiceBuilderFactory ( x => new T ( ) ,
44
+ callback ) ;
45
+
46
+ configurator . UseServiceBuilder ( serviceBuilderFactory ) ;
34
47
35
48
return configurator ;
36
49
}
@@ -41,9 +54,25 @@ public static SuperviseConfigurator Service<T>(this SuperviseConfigurator config
41
54
if ( configurator == null )
42
55
throw new ArgumentNullException ( "configurator" ) ;
43
56
44
- ServiceBuilderFactory factory = settings => new ControlServiceBuilder < T > ( x => serviceFactory ( ) ) ;
57
+ ServiceBuilderFactory serviceBuilderFactory =
58
+ ServiceExtensions . CreateServiceBuilderFactory ( x => serviceFactory ( ) , NoCallback ) ;
45
59
46
- configurator . UseServiceBuilder ( factory ) ;
60
+ configurator . UseServiceBuilder ( serviceBuilderFactory ) ;
61
+
62
+ return configurator ;
63
+ }
64
+
65
+ public static SuperviseConfigurator Service < T > ( this SuperviseConfigurator configurator , Func < T > serviceFactory ,
66
+ Action < ServiceConfigurator > callback )
67
+ where T : class , ServiceControl
68
+ {
69
+ if ( configurator == null )
70
+ throw new ArgumentNullException ( "configurator" ) ;
71
+
72
+ ServiceBuilderFactory serviceBuilderFactory =
73
+ ServiceExtensions . CreateServiceBuilderFactory ( x => serviceFactory ( ) , callback ) ;
74
+
75
+ configurator . UseServiceBuilder ( serviceBuilderFactory ) ;
47
76
48
77
return configurator ;
49
78
}
@@ -55,9 +84,34 @@ public static SuperviseConfigurator Service<T>(this SuperviseConfigurator config
55
84
if ( configurator == null )
56
85
throw new ArgumentNullException ( "configurator" ) ;
57
86
58
- ServiceBuilderFactory factory = settings => new ControlServiceBuilder < T > ( x => serviceFactory ( x ) ) ;
87
+ ServiceBuilderFactory serviceBuilderFactory =
88
+ ServiceExtensions . CreateServiceBuilderFactory ( serviceFactory , NoCallback ) ;
59
89
60
- configurator . UseServiceBuilder ( factory ) ;
90
+ configurator . UseServiceBuilder ( serviceBuilderFactory ) ;
91
+
92
+ return configurator ;
93
+ }
94
+
95
+ public static SuperviseConfigurator Service < T > ( this SuperviseConfigurator configurator ,
96
+ Func < HostSettings , T > serviceFactory , Action < ServiceConfigurator > callback )
97
+ where T : class , ServiceControl
98
+ {
99
+ if ( configurator == null )
100
+ throw new ArgumentNullException ( "configurator" ) ;
101
+
102
+ ServiceBuilderFactory serviceBuilderFactory =
103
+ ServiceExtensions . CreateServiceBuilderFactory ( serviceFactory , callback ) ;
104
+
105
+ configurator . UseServiceBuilder ( serviceBuilderFactory ) ;
106
+
107
+ return configurator ;
108
+ }
109
+
110
+ public static HostConfigurator Service < T > ( this HostConfigurator configurator ,
111
+ ServiceBuilderFactory serviceBuilderFactory )
112
+ where T : class
113
+ {
114
+ configurator . UseServiceBuilder ( serviceBuilderFactory ) ;
61
115
62
116
return configurator ;
63
117
}
@@ -69,26 +123,16 @@ public static SuperviseConfigurator Service<TService>(this SuperviseConfigurator
69
123
{
70
124
if ( configurator == null )
71
125
throw new ArgumentNullException ( "configurator" ) ;
72
- if ( callback == null )
73
- throw new ArgumentNullException ( "callback" ) ;
74
-
75
- var serviceConfigurator = new DelegateServiceConfigurator < TService > ( ) ;
76
126
77
- callback ( serviceConfigurator ) ;
127
+ ServiceBuilderFactory serviceBuilderFactory = ServiceExtensions . CreateServiceBuilderFactory ( callback ) ;
78
128
79
- configurator . UseServiceBuilder ( x =>
80
- {
81
- ConfigurationResult configurationResult =
82
- ValidateConfigurationResult . CompileResults ( serviceConfigurator . Validate ( ) ) ;
83
- if ( configurationResult . Results . Any ( ) )
84
- throw new HostConfigurationException ( "The service was not properly configured" ) ;
85
-
86
- ServiceBuilder serviceBuilder = serviceConfigurator . Build ( ) ;
87
-
88
- return serviceBuilder ;
89
- } ) ;
129
+ configurator . UseServiceBuilder ( serviceBuilderFactory ) ;
90
130
91
131
return configurator ;
92
132
}
133
+
134
+ static void NoCallback ( ServiceConfigurator configurator )
135
+ {
136
+ }
93
137
}
94
138
}
0 commit comments