-
Notifications
You must be signed in to change notification settings - Fork 2k
/
MemoryGrainStorageSiloBuilderExtensions.cs
101 lines (93 loc) · 5.05 KB
/
MemoryGrainStorageSiloBuilderExtensions.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
using System;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions;
using Microsoft.Extensions.Options;
using Orleans.Configuration;
using Orleans.Providers;
using Orleans.Runtime;
using Orleans.Storage;
namespace Orleans.Hosting
{
/// <summary>
/// Silo host builder extensions
/// </summary>
public static class MemoryGrainStorageSiloBuilderExtensions
{
/// <summary>
/// Configure silo to use memory grain storage as the default grain storage.
/// </summary>
public static ISiloHostBuilder AddMemoryGrainStorageAsDefault(this ISiloHostBuilder builder, Action<MemoryGrainStorageOptions> configureOptions)
{
return builder.AddMemoryGrainStorageAsDefault(ob => ob.Configure(configureOptions));
}
/// <summary>
/// Configure silo to use memory grain storage as the default grain storage.
/// </summary>
public static ISiloHostBuilder AddMemoryGrainStorage(this ISiloHostBuilder builder, string name, Action<MemoryGrainStorageOptions> configureOptions)
{
return builder.AddMemoryGrainStorage(name, ob => ob.Configure(configureOptions));
}
/// <summary>
/// Configure silo to use memory grain storage as the default grain storage.
/// </summary>
public static ISiloHostBuilder AddMemoryGrainStorageAsDefault(this ISiloHostBuilder builder, Action<OptionsBuilder<MemoryGrainStorageOptions>> configureOptions = null)
{
return builder.AddMemoryGrainStorage(ProviderConstants.DEFAULT_STORAGE_PROVIDER_NAME, configureOptions);
}
/// <summary>
///Configure silo to use memory grain storage as the default grain storage.
/// </summary>
public static ISiloHostBuilder AddMemoryGrainStorage(this ISiloHostBuilder builder, string name, Action<OptionsBuilder<MemoryGrainStorageOptions>> configureOptions = null)
{
return builder
.ConfigureApplicationParts(parts => parts.AddFrameworkPart(typeof(MemoryStorageGrain).Assembly))
.ConfigureServices(services =>
{
configureOptions?.Invoke(services.AddOptions<MemoryGrainStorageOptions>(name));
services.ConfigureNamedOptionForLogging<MemoryGrainStorageOptions>(name);
if (string.Equals(name, ProviderConstants.DEFAULT_STORAGE_PROVIDER_NAME))
services.TryAddSingleton<IGrainStorage>(sp => sp.GetServiceByName<IGrainStorage>(ProviderConstants.DEFAULT_STORAGE_PROVIDER_NAME));
services.AddSingletonNamedService<IGrainStorage>(name, MemoryGrainStorageFactory.Create);
});
}
/// <summary>
/// Configure silo to use memory grain storage as the default grain storage.
/// </summary>
public static ISiloBuilder AddMemoryGrainStorageAsDefault(this ISiloBuilder builder, Action<MemoryGrainStorageOptions> configureOptions)
{
return builder.AddMemoryGrainStorageAsDefault(ob => ob.Configure(configureOptions));
}
/// <summary>
/// Configure silo to use memory grain storage as the default grain storage.
/// </summary>
public static ISiloBuilder AddMemoryGrainStorage(this ISiloBuilder builder, string name, Action<MemoryGrainStorageOptions> configureOptions)
{
return builder.AddMemoryGrainStorage(name, ob => ob.Configure(configureOptions));
}
/// <summary>
/// Configure silo to use memory grain storage as the default grain storage.
/// </summary>
public static ISiloBuilder AddMemoryGrainStorageAsDefault(this ISiloBuilder builder, Action<OptionsBuilder<MemoryGrainStorageOptions>> configureOptions = null)
{
return builder.AddMemoryGrainStorage(ProviderConstants.DEFAULT_STORAGE_PROVIDER_NAME, configureOptions);
}
/// <summary>
///Configure silo to use memory grain storage as the default grain storage.
/// </summary>
public static ISiloBuilder AddMemoryGrainStorage(this ISiloBuilder builder, string name, Action<OptionsBuilder<MemoryGrainStorageOptions>> configureOptions = null)
{
return builder
.ConfigureApplicationParts(parts => parts.AddFrameworkPart(typeof(MemoryStorageGrain).Assembly))
.ConfigureServices(services =>
{
configureOptions?.Invoke(services.AddOptions<MemoryGrainStorageOptions>(name));
services.ConfigureNamedOptionForLogging<MemoryGrainStorageOptions>(name);
if (string.Equals(name, ProviderConstants.DEFAULT_STORAGE_PROVIDER_NAME, StringComparison.Ordinal))
{
services.TryAddSingleton(sp => sp.GetServiceByName<IGrainStorage>(ProviderConstants.DEFAULT_STORAGE_PROVIDER_NAME));
}
services.AddSingletonNamedService<IGrainStorage>(name, MemoryGrainStorageFactory.Create);
});
}
}
}