Line data Source code
1 : using System.Linq;
2 : using Cqrs.Azure.ServiceBus;
3 : using Cqrs.Commands;
4 : using Ninject.Modules;
5 :
6 : namespace Cqrs.Azure.EventHub.CommandBus.Configuration
7 : {
8 : /// <summary>
9 : /// The <see cref="INinjectModule"/> for use with the Cqrs package.
10 : /// </summary>
11 : public class AzureCommandBusSenderModule<TAuthenticationToken> : NinjectModule
12 1 : {
13 : #region Overrides of NinjectModule
14 :
15 : /// <summary>
16 : /// Loads the module into the kernel.
17 : /// </summary>
18 1 : public override void Load()
19 : {
20 : bool isMessageSerialiserBound = Kernel.GetBindings(typeof(IAzureBusHelper<TAuthenticationToken>)).Any();
21 : if (!isMessageSerialiserBound)
22 : {
23 : Bind<IAzureBusHelper<TAuthenticationToken>>()
24 : .To<AzureBusHelper<TAuthenticationToken>>()
25 : .InSingletonScope();
26 : }
27 :
28 : RegisterCommandSender();
29 : RegisterCommandMessageSerialiser();
30 : }
31 :
32 : #endregion
33 :
34 : /// <summary>
35 : /// Register the Cqrs command sender
36 : /// </summary>
37 1 : public virtual void RegisterCommandSender()
38 : {
39 : Bind<ICommandSender<TAuthenticationToken>>()
40 : .To<AzureCommandBusPublisher<TAuthenticationToken>>()
41 : .InSingletonScope();
42 :
43 : Bind<ICommandPublisher<TAuthenticationToken>>()
44 : .To<AzureCommandBusPublisher<TAuthenticationToken>>()
45 : .InSingletonScope();
46 :
47 : Bind<ISendAndWaitCommandSender<TAuthenticationToken>>()
48 : .To<AzureCommandBusPublisher<TAuthenticationToken>>()
49 : .InSingletonScope();
50 : }
51 :
52 : /// <summary>
53 : /// Register the Cqrs command handler message serialiser
54 : /// </summary>
55 1 : public virtual void RegisterCommandMessageSerialiser()
56 : {
57 : bool isMessageSerialiserBound = Kernel.GetBindings(typeof(IMessageSerialiser<TAuthenticationToken>)).Any();
58 : if (!isMessageSerialiserBound)
59 : {
60 : Bind<IMessageSerialiser<TAuthenticationToken>>()
61 : .To<MessageSerialiser<TAuthenticationToken>>()
62 : .InSingletonScope();
63 : }
64 : }
65 : }
66 : }
|