protected override void ConfigureIoc()
        {
            var actorSystemFactory = new ShardedActorSystemFactory(AkkaHostingPort, ActorSystemName, PersistenceSectionName, AkkaSeedNodes);
            var actorSystem = actorSystemFactory.GetActorSystem();

            var subscriptionManager = new ShardedSubscriptionManager(actorSystem);
            var eventPublisher = new DistributedPubSubEventPublisher(actorSystem);
            var loggingEventPublisher = new LoggingEventPublisherDecorator(eventPublisher);

            var atomDocumentFactory = new ShardedAtomDocumentFactory(actorSystem);
            var atomFeedFactory = new ShardedAtomFeedFactory(actorSystem, atomDocumentFactory, new ConfigurableAtomDocumentSettings(EntriesPerDocument));

            var settings = new AtomNotificationSettings(atomFeedFactory);

            var atomRetriever = new AtomDocumentRetriever(atomFeedFactory, atomDocumentFactory);
            var loggingAtomRetriever = new LoggingAtomDocumentRetrieverDecorator(atomRetriever);

            IocContainer.Register<ISubscriptionManager>(subscriptionManager);
            IocContainer.Register<IEventPublisher>(loggingEventPublisher);
            IocContainer.Register<ShardedAtomDocumentFactory>(atomDocumentFactory);
            IocContainer.Register<ShardedAtomFeedFactory>(atomFeedFactory);
            IocContainer.Register<IAtomDocumentRetriever>(loggingAtomRetriever);

            IocContainer.RegisterMultiple<IOwinConfiguration, WebApiOwinConfiguration>(IocLifecycle.PerRequest);
        }
 public void Configure(ActorSystem actorSystem)
 {
     var atomDocumentFactory = new ShardedAtomDocumentFactory(actorSystem);
     var atomFeedFactory = new ShardedAtomFeedFactory(actorSystem, atomDocumentFactory, documentSettings);
     var settings = new AtomNotificationSettings(atomFeedFactory);
 }
 public AtomEventNotifier(ShardedAtomFeedFactory factory)
 {
     this.factory = factory;
 }
 public AtomDocumentRetriever(ShardedAtomFeedFactory factory, ShardedAtomDocumentFactory builder)
 {
     shardedAtomDocumentFactory = builder;
     this.factory = factory;
     atomDocumentSerialiser = new AtomDocumentSerialiser();
 }
 public AtomNotificationSettings(ShardedAtomFeedFactory atomFeedFactory)
 {
     AtomEventNotifier notifier = new AtomEventNotifier(atomFeedFactory);
     base.AddNotifierType(typeof(AtomNotificationChannel), notifier);
 }