-
Notifications
You must be signed in to change notification settings - Fork 2k
/
UnixSocketConnectionExtensions.cs
43 lines (36 loc) · 1.76 KB
/
UnixSocketConnectionExtensions.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
using System;
using Microsoft.AspNetCore.Connections;
using Microsoft.Extensions.DependencyInjection;
using Orleans.Hosting;
using Orleans.Runtime;
using Orleans.Runtime.Messaging;
namespace Orleans.TestingHost.UnixSocketTransport;
public static class UnixSocketConnectionExtensions
{
public static ISiloBuilder UseUnixSocketConnection(this ISiloBuilder siloBuilder)
{
siloBuilder.ConfigureServices(services =>
{
services.AddKeyedSingleton<object, IConnectionFactory>(SiloConnectionFactory.ServicesKey, CreateUnixSocketConnectionFactory());
services.AddKeyedSingleton<object, IConnectionListenerFactory>(SiloConnectionListener.ServicesKey, CreateUnixSocketConnectionListenerFactory());
services.AddKeyedSingleton<object, IConnectionListenerFactory>(GatewayConnectionListener.ServicesKey, CreateUnixSocketConnectionListenerFactory());
});
return siloBuilder;
}
public static IClientBuilder UseUnixSocketConnection(this IClientBuilder clientBuilder)
{
clientBuilder.ConfigureServices(services =>
{
services.AddKeyedSingleton<object, IConnectionFactory>(ClientOutboundConnectionFactory.ServicesKey, CreateUnixSocketConnectionFactory());
});
return clientBuilder;
}
private static Func<IServiceProvider, object, IConnectionFactory> CreateUnixSocketConnectionFactory()
{
return (IServiceProvider sp, object key) => ActivatorUtilities.CreateInstance<UnixSocketConnectionFactory>(sp);
}
private static Func<IServiceProvider, object, IConnectionListenerFactory> CreateUnixSocketConnectionListenerFactory()
{
return (IServiceProvider sp, object key) => ActivatorUtilities.CreateInstance<UnixSocketConnectionListenerFactory>(sp);
}
}