Esempio n. 1
0
 public OzzyDomainOptionsBuilder <TDomain> AddHandler <THandler>(Func <IServiceProvider, THandler> handlerFactory = null) where THandler : class, IDomainEventsHandler
 {
     _domainBuilder.Services.TryAddTypeSpecificSingleton <TDomain, THandler>(handlerFactory);
     _domainBuilder.Services.TryAddTypeSpecificSingleton <TDomain, IDomainEventsProcessor>(sp =>
     {
         var options           = sp.GetService <IExtensibleOptions <TDomain> >();
         var handler           = sp.GetTypeSpecificService <TDomain, THandler>();
         var eventsReader      = sp.GetTypeSpecificService <TDomain, IPeristedEventsReader>();
         var faultHandler      = sp.GetService <IDomainEventsFaultHandler>();
         var checkpointManager = new SimpleChekpointManager(eventsReader);
         return(new DomainEventsProcessor(handler, checkpointManager, faultHandler));
     });
     return(this);
 }
Esempio n. 2
0
 public OzzyDomainOptionsBuilder <TDomain> AddSagaProcessor <TSaga>(Func <IServiceProvider, TSaga> sagaFactory = null) where TSaga : SagaBase
 {
     _domainBuilder.Services.TryAddTypeSpecificTransient <TDomain, TSaga>(sagaFactory);
     _domainBuilder.Services.TryAddTypeSpecificSingleton <TDomain, IDomainEventsProcessor>(sp =>
     {
         var options           = sp.GetService <IExtensibleOptions <TDomain> >();
         var sagaName          = typeof(TSaga).FullName;
         var sagaRepository    = sp.GetTypeSpecificService <TDomain, ISagaRepository>();
         var sagaHandler       = new SagaDomainEventsHandler <TSaga>(sagaRepository, sp.GetService <SagaCorrelationsMapper>());
         var eventsReader      = sp.GetTypeSpecificService <TDomain, IPeristedEventsReader>();
         var faultHandler      = sp.GetService <IDomainEventsFaultHandler>();
         var checkpointManager = new SimpleChekpointManager(eventsReader);
         return(new DomainEventsProcessor(sagaHandler, checkpointManager, faultHandler));
     });
     return(this);
 }
Esempio n. 3
0
 public OzzyNodeOptionsBuilder <TDomain> UseInMemoryMonitoring()
 {
     Services.TryAddSingleton <IMonitoringRepository, InMemoryMonitoringRepository>();
     Services.TryAddSingleton <INodesManager>(sp =>
     {
         var repository    = sp.GetService <IMonitoringRepository>();
         var eventsManager = sp.GetTypeSpecificService <TDomain, IDomainEventsManager>();
         return(new NodesManager(repository, eventsManager));
     });
     Services.AddTypeSpecificSingleton <TDomain, IDomainEventsProcessor>(sp =>
     {
         var checkpointManager = new SimpleChekpointManager(sp.GetTypeSpecificService <TDomain, IPeristedEventsReader>());
         var handler           = new MonitoringEventsHandler(sp);
         return(new DomainEventsProcessor(handler, checkpointManager));
     });
     AddBackgroundProcess <NodesMonitoringProcess>();
     return(this);
 }