Exemple #1
0
        public static ISession Create(
            ITransaction transaction,
            IEventStore eventStore,
            ISnapshotStore snapshotStore,
            ILoggerFactory loggerFactory                      = null,
            IEventPublisher eventPublisher                    = null,
            IEventRouter eventRouter                          = null,
            IEventUpdateManager eventUpdateManager            = null,
            IEnumerable <IMetadataProvider> metadataProviders = null,
            ISnapshotStrategy snapshotStrategy                = null,
            IEventsMetadataService eventsMetadataService      = null)
        {
            // TODO: refactor ctor's Session sucks :(

            if (eventStore == null)
            {
                throw new ArgumentNullException(nameof(eventStore));
            }
            if (snapshotStore == null)
            {
                throw new ArgumentNullException(nameof(snapshotStore));
            }

            if (loggerFactory == null)
            {
                loggerFactory = new NoopLoggerFactory();
            }

            if (eventRouter == null)
            {
                eventRouter = StubEventRouter.Ok();
            }

            if (eventPublisher == null)
            {
                eventPublisher = new EventPublisher(eventRouter);
            }

            var session = new Session(
                loggerFactory: loggerFactory,
                transaction: transaction,
                eventStore: eventStore,
                snapshotStore: snapshotStore,
                eventPublisher: eventPublisher,
                eventUpdateManager: eventUpdateManager,
                metadataProviders: metadataProviders,
                snapshotStrategy: snapshotStrategy,
                eventsMetadataService: eventsMetadataService);

            return(session);
        }
Exemple #2
0
        public Session(
            ILoggerFactory loggerFactory,
            ITransaction transaction,
            IEventStore eventStore,
            ISnapshotStore snapshotStore,
            IEventPublisher eventPublisher,
            IEventUpdateManager eventUpdateManager            = null,
            IEnumerable <IMetadataProvider> metadataProviders = null,
            ISnapshotStrategy snapshotStrategy           = null,
            IEventsMetadataService eventsMetadataService = null)
        {
            if (loggerFactory == null)
            {
                throw new ArgumentNullException(nameof(loggerFactory));
            }
            if (metadataProviders == null)
            {
                metadataProviders = Enumerable.Empty <IMetadataProvider>();
            }

            metadataProviders = metadataProviders.Concat(new IMetadataProvider[]
            {
                new AggregateTypeMetadataProvider(),
                new EventTypeMetadataProvider(),
                new CorrelationIdMetadataProvider()
            });

            if (snapshotStrategy == null)
            {
                snapshotStrategy = new IntervalSnapshotStrategy();
            }

            if (eventsMetadataService == null)
            {
                eventsMetadataService = new EventsMetadataService();
            }

            _logger = loggerFactory.Create(nameof(Session));

            _transaction           = transaction ?? throw new ArgumentNullException(nameof(transaction));
            _eventStore            = eventStore ?? throw new ArgumentNullException(nameof(eventStore));
            _snapshotStore         = snapshotStore ?? throw new ArgumentNullException(nameof(snapshotStore));
            _eventPublisher        = eventPublisher ?? throw new ArgumentNullException(nameof(eventPublisher));
            _snapshotStrategy      = snapshotStrategy;
            _eventUpdateManager    = eventUpdateManager;
            _metadataProviders     = metadataProviders;
            _eventsMetadataService = eventsMetadataService;
        }
Exemple #3
0
 public static ISession Create(
     ITransaction transaction,
     ICompositeStores stores,
     ILoggerFactory loggerFactory                      = null,
     IEventPublisher eventPublisher                    = null,
     IEventRouter eventRouter                          = null,
     IEventUpdateManager eventUpdateManager            = null,
     IEnumerable <IMetadataProvider> metadataProviders = null,
     ISnapshotStrategy snapshotStrategy                = null,
     IEventsMetadataService eventsMetadataService      = null)
 {
     return(Create(transaction,
                   stores.EventStore,
                   stores.SnapshotStore,
                   loggerFactory,
                   eventPublisher,
                   eventRouter,
                   eventUpdateManager,
                   metadataProviders,
                   snapshotStrategy,
                   eventsMetadataService));
 }