-
Notifications
You must be signed in to change notification settings - Fork 2k
/
AdoNetHostingExtensions.cs
136 lines (130 loc) · 5.48 KB
/
AdoNetHostingExtensions.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
using System;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Options;
using Orleans.Messaging;
using Orleans.Runtime.Membership;
using Orleans.Runtime.MembershipService;
using Orleans.Configuration;
namespace Orleans.Hosting
{
/// <summary>
/// Extensions for configuring ADO.NET for clustering.
/// </summary>
public static class AdoNetHostingExtensions
{
/// <summary>
/// Configures this silo to use ADO.NET for clustering. Instructions on configuring your database are available at <see href="http://aka.ms/orleans-sql-scripts"/>.
/// </summary>
/// <param name="builder">
/// The builder.
/// </param>
/// <param name="configureOptions">
/// The configuration delegate.
/// </param>
/// <returns>
/// The provided <see cref="ISiloBuilder"/>.
/// </returns>
/// <remarks>
/// Instructions on configuring your database are available at <see href="http://aka.ms/orleans-sql-scripts"/>.
/// </remarks>
public static ISiloBuilder UseAdoNetClustering(
this ISiloBuilder builder,
Action<AdoNetClusteringSiloOptions> configureOptions)
{
return builder.ConfigureServices(
services =>
{
if (configureOptions != null)
{
services.Configure(configureOptions);
}
services.AddSingleton<IMembershipTable, AdoNetClusteringTable>();
services.AddSingleton<IConfigurationValidator, AdoNetClusteringSiloOptionsValidator>();
});
}
/// <summary>
/// Configures this silo to use ADO.NET for clustering. Instructions on configuring your database are available at <see href="http://aka.ms/orleans-sql-scripts"/>.
/// </summary>
/// <param name="builder">
/// The builder.
/// </param>
/// <param name="configureOptions">
/// The configuration delegate.
/// </param>
/// <returns>
/// The provided <see cref="ISiloBuilder"/>.
/// </returns>
/// <remarks>
/// Instructions on configuring your database are available at <see href="http://aka.ms/orleans-sql-scripts"/>.
/// </remarks>
public static ISiloBuilder UseAdoNetClustering(
this ISiloBuilder builder,
Action<OptionsBuilder<AdoNetClusteringSiloOptions>> configureOptions)
{
return builder.ConfigureServices(
services =>
{
configureOptions?.Invoke(services.AddOptions<AdoNetClusteringSiloOptions>());
services.AddSingleton<IMembershipTable, AdoNetClusteringTable>();
services.AddSingleton<IConfigurationValidator, AdoNetClusteringSiloOptionsValidator>();
});
}
/// <summary>
/// Configures this client to use ADO.NET for clustering. Instructions on configuring your database are available at <see href="http://aka.ms/orleans-sql-scripts"/>.
/// </summary>
/// <param name="builder">
/// The builder.
/// </param>
/// <param name="configureOptions">
/// The configuration delegate.
/// </param>
/// <returns>
/// The provided <see cref="IClientBuilder"/>.
/// </returns>
/// <remarks>
/// Instructions on configuring your database are available at <see href="http://aka.ms/orleans-sql-scripts"/>.
/// </remarks>
public static IClientBuilder UseAdoNetClustering(
this IClientBuilder builder,
Action<AdoNetClusteringClientOptions> configureOptions)
{
return builder.ConfigureServices(
services =>
{
if (configureOptions != null)
{
services.Configure(configureOptions);
}
services.AddSingleton<IGatewayListProvider, AdoNetGatewayListProvider>();
services.AddSingleton<IConfigurationValidator, AdoNetClusteringClientOptionsValidator>();
});
}
/// <summary>
/// Configures this client to use ADO.NET for clustering. Instructions on configuring your database are available at <see href="http://aka.ms/orleans-sql-scripts"/>.
/// </summary>
/// <param name="builder">
/// The builder.
/// </param>
/// <param name="configureOptions">
/// The configuration delegate.
/// </param>
/// <returns>
/// The provided <see cref="IClientBuilder"/>.
/// </returns>
/// <remarks>
/// Instructions on configuring your database are available at <see href="http://aka.ms/orleans-sql-scripts"/>.
/// </remarks>
public static IClientBuilder UseAdoNetClustering(
this IClientBuilder builder,
Action<OptionsBuilder<AdoNetClusteringClientOptions>> configureOptions)
{
return builder.ConfigureServices(
services =>
{
configureOptions?.Invoke(services.AddOptions<AdoNetClusteringClientOptions>());
services.AddSingleton<IGatewayListProvider, AdoNetGatewayListProvider>();
services.AddSingleton<IConfigurationValidator, AdoNetClusteringClientOptionsValidator>();
});
}
}
}