Line data Source code
1 : using System.Linq;
2 : using Cqrs.Azure.ServiceBus;
3 : using Cqrs.Bus;
4 : using Cqrs.Events;
5 : using Ninject;
6 : using Ninject.Modules;
7 :
8 : namespace Cqrs.Ninject.Azure.ServiceBus.EventBus.Configuration
9 : {
10 : /// <summary>
11 : /// The <see cref="INinjectModule"/> for use with the Cqrs package.
12 : /// </summary>
13 : public class AzureEventBusReceiverModule<TAuthenticationToken> : NinjectModule
14 1 : {
15 : #region Overrides of NinjectModule
16 :
17 : /// <summary>
18 : /// Loads the module into the kernel.
19 : /// </summary>
20 1 : public override void Load()
21 : {
22 : bool isMessageSerialiserBound = Kernel.GetBindings(typeof(IAzureBusHelper<TAuthenticationToken>)).Any();
23 : if (!isMessageSerialiserBound)
24 : {
25 : Bind<IAzureBusHelper<TAuthenticationToken>>()
26 : .To<AzureBusHelper<TAuthenticationToken>>()
27 : .InSingletonScope();
28 : }
29 :
30 : RegisterEventMessageSerialiser();
31 : var bus = GetOrCreateBus<AzureEventBusReceiver<TAuthenticationToken>>();
32 :
33 : RegisterEventReceiver(bus);
34 : RegisterEventHandlerRegistrar(bus);
35 : }
36 :
37 : #endregion
38 :
39 0 : public virtual TBus GetOrCreateBus<TBus>()
40 : where TBus : IEventReceiver<TAuthenticationToken>, IEventHandlerRegistrar
41 : {
42 : bool isBusBound = Kernel.GetBindings(typeof(TBus)).Any();
43 : TBus bus;
44 : if (!isBusBound)
45 : {
46 : bus = Kernel.Get<TBus>();
47 : Bind<TBus>()
48 : .ToConstant(bus)
49 : .InSingletonScope();
50 : }
51 : else
52 : bus = Kernel.Get<TBus>();
53 :
54 : return bus;
55 : }
56 :
57 : /// <summary>
58 : /// Register the Cqrs event receiver
59 : /// </summary>
60 1 : public virtual void RegisterEventReceiver<TBus>(TBus bus)
61 : where TBus : IEventReceiver<TAuthenticationToken>, IEventHandlerRegistrar
62 : {
63 : Bind<IEventReceiver<TAuthenticationToken>>()
64 : .ToConstant(bus)
65 : .InSingletonScope();
66 : }
67 :
68 : /// <summary>
69 : /// Register the Cqrs event handler registrar
70 : /// </summary>
71 1 : public virtual void RegisterEventHandlerRegistrar<TBus>(TBus bus)
72 : where TBus : IEventReceiver<TAuthenticationToken>, IEventHandlerRegistrar
73 : {
74 : bool isHandlerRegistrationBound = Kernel.GetBindings(typeof(IEventHandlerRegistrar)).Any();
75 : if (!isHandlerRegistrationBound)
76 : {
77 : Bind<IEventHandlerRegistrar>()
78 : .ToConstant(bus)
79 : .InSingletonScope();
80 : }
81 : }
82 :
83 : /// <summary>
84 : /// Register the Cqrs event handler message serialiser
85 : /// </summary>
86 1 : public virtual void RegisterEventMessageSerialiser()
87 : {
88 : bool isMessageSerialiserBound = Kernel.GetBindings(typeof(IMessageSerialiser<TAuthenticationToken>)).Any();
89 : if (!isMessageSerialiserBound)
90 : {
91 : Bind<IMessageSerialiser<TAuthenticationToken>>()
92 : .To<MessageSerialiser<TAuthenticationToken>>()
93 : .InSingletonScope();
94 : }
95 : }
96 : }
97 : }
|