Line data Source code
1 : #region Copyright
2 : // // -----------------------------------------------------------------------
3 : // // <copyright company="Chinchilla Software Limited">
4 : // // Copyright Chinchilla Software Limited. All rights reserved.
5 : // // </copyright>
6 : // // -----------------------------------------------------------------------
7 : #endregion
8 :
9 : using System;
10 : using System.Linq;
11 : using Cqrs.Azure.ServiceBus;
12 : using Cqrs.Commands;
13 : using Ninject.Modules;
14 :
15 : namespace Cqrs.Azure.EventHub.CommandBus.Configuration
16 : {
17 : /// <summary>
18 : /// A <see cref="INinjectModule"/> that wires up <see cref="AzureCommandBusPublisher{TAuthenticationToken}"/> as the <see cref="ICommandPublisher{TAuthenticationToken}"/> and other require components.
19 : /// </summary>
20 : /// <typeparam name="TAuthenticationToken">The <see cref="Type"/> of the authentication token.</typeparam>
21 : public class AzureCommandHubPublisherModule<TAuthenticationToken> : NinjectModule
22 1 : {
23 : #region Overrides of NinjectModule
24 :
25 : /// <summary>
26 : /// Loads the module into the kernel.
27 : /// </summary>
28 1 : public override void Load()
29 : {
30 : bool isMessageSerialiserBound = Kernel.GetBindings(typeof(IAzureBusHelper<TAuthenticationToken>)).Any();
31 : if (!isMessageSerialiserBound)
32 : {
33 : Bind<IAzureBusHelper<TAuthenticationToken>>()
34 : .To<AzureBusHelper<TAuthenticationToken>>()
35 : .InSingletonScope();
36 : }
37 :
38 : RegisterCommandSender();
39 : RegisterCommandMessageSerialiser();
40 : }
41 :
42 : #endregion
43 :
44 : /// <summary>
45 : /// Register the CQRS command publisher
46 : /// </summary>
47 1 : public virtual void RegisterCommandSender()
48 : {
49 : Bind<ICommandPublisher<TAuthenticationToken>>()
50 : .To<AzureCommandBusPublisher<TAuthenticationToken>>()
51 : .InSingletonScope();
52 :
53 : Bind<ICommandPublisher<TAuthenticationToken>>()
54 : .To<AzureCommandBusPublisher<TAuthenticationToken>>()
55 : .InSingletonScope();
56 :
57 : Bind<IPublishAndWaitCommandPublisher<TAuthenticationToken>>()
58 : .To<AzureCommandBusPublisher<TAuthenticationToken>>()
59 : .InSingletonScope();
60 : }
61 :
62 : /// <summary>
63 : /// Register the CQRS command handler message serialiser
64 : /// </summary>
65 1 : public virtual void RegisterCommandMessageSerialiser()
66 : {
67 : bool isMessageSerialiserBound = Kernel.GetBindings(typeof(IMessageSerialiser<TAuthenticationToken>)).Any();
68 : if (!isMessageSerialiserBound)
69 : {
70 : Bind<IMessageSerialiser<TAuthenticationToken>>()
71 : .To<MessageSerialiser<TAuthenticationToken>>()
72 : .InSingletonScope();
73 : }
74 : }
75 : }
76 : }
|