-
Notifications
You must be signed in to change notification settings - Fork 19
/
Copy pathJustSayingRegistry.cs
56 lines (50 loc) · 2.82 KB
/
JustSayingRegistry.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
using JustSaying.AwsTools;
using JustSaying.AwsTools.QueueCreation;
using JustSaying.Fluent;
using JustSaying.Messaging.Channels.Receive;
using JustSaying.Messaging.Compression;
using JustSaying.Messaging.MessageHandling;
using JustSaying.Messaging.MessageSerialization;
using JustSaying.Messaging.Middleware.Logging;
using JustSaying.Messaging.Middleware.PostProcessing;
using JustSaying.Messaging.Monitoring;
using JustSaying.Naming;
using StructureMap;
using StructureMap.Pipeline;
namespace JustSaying;
/// <summary>
/// A class representing a StructureMap registry for JustSaying services.
/// </summary>
internal sealed class JustSayingRegistry : Registry
{
/// <summary>
/// Initializes a new instance of the <see cref="JustSayingRegistry"/> class.
/// </summary>
public JustSayingRegistry()
{
// Register as self so the same singleton instance implements two different interfaces
For<ContextResolver>().Use((p) => new ContextResolver(p)).Singleton();
For<IHandlerResolver>().Use((p) => p.GetInstance<ContextResolver>()).Singleton();
For<IServiceResolver>().Use((p) => p.GetInstance<ContextResolver>()).Singleton();
For<IAwsClientFactory>().Use<DefaultAwsClientFactory>().Singleton();
For<IAwsClientFactoryProxy>().Use((p) => new AwsClientFactoryProxy(p.GetInstance<IAwsClientFactory>)).Singleton();
For<MessagingConfig>().Use<MessagingConfig>().Singleton();
For<IMessagingConfig>().Use(context => context.GetInstance<MessagingConfig>()).Singleton();
For<IPublishBatchConfiguration>().Use<MessagingConfig>(context => context.GetInstance<MessagingConfig>()).Singleton();
For<IMessageMonitor>().Use<NullOpMessageMonitor>().Singleton();
For<IMessageBodySerializationFactory>().Use<NewtonsoftSerializationFactory>().Singleton();
For<IMessageSubjectProvider>().Use<GenericMessageSubjectProvider>().Singleton();
For<IVerifyAmazonQueues>().Use<AmazonQueueCreator>().Singleton();
For<MessageContextAccessor>().Use<MessageContextAccessor>().Singleton();
For<IMessageContextAccessor>().Use(context => context.GetInstance<MessageContextAccessor>());
For<IMessageContextReader>().Use(context => context.GetInstance<MessageContextAccessor>());
For<LoggingMiddleware>().Transient();
For<SqsPostProcessorMiddleware>().Transient();
For<IMessageBodyCompression>().Add<GzipMessageBodyCompression>().Singleton();
For<MessageCompressionRegistry>().Singleton();
For<IMessageReceivePauseSignal>().Use<MessageReceivePauseSignal>().Singleton();
For<DefaultNamingConventions>().Singleton();
For<ITopicNamingConvention>().Use(context => context.GetInstance<DefaultNamingConventions>());
For<IQueueNamingConvention>().Use(context => context.GetInstance<DefaultNamingConventions>());
}
}