summaryrefslogtreecommitdiff
path: root/Impostor-dev/src/Impostor.Hazel/Extensions/ServiceProviderExtensions.cs
blob: 56c738071f3b634040c07890dd059db8196f4d12 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions;
using Microsoft.Extensions.ObjectPool;

namespace Impostor.Hazel.Extensions
{
    public static class ServiceProviderExtensions
    {
        public static void AddHazel(this IServiceCollection services)
        {
            services.TryAddSingleton<ObjectPoolProvider>(new DefaultObjectPoolProvider());

            services.AddSingleton(serviceProvider =>
            {
                var provider = serviceProvider.GetRequiredService<ObjectPoolProvider>();
                var policy = ActivatorUtilities.CreateInstance<MessageReaderPolicy>(serviceProvider);
                return provider.Create(policy);
            });
        }
    }
}