Esempio n. 1
0
        internal static void HandleAndCommitAndPost(
            SubscriberMessage message,
            PublishersBySubscription publishersBySubscription,
            NotificationsByCorrelationsFunction <TUowProvider> notificationsByCorrelationsFunction,
            PublisherVersionByCorrelationsFunction <TUowProvider> publisherVersionByCorrelationsFunction,
            SaveNotificationsByPublisherAndVersionAction <TUowProvider> saveNotificationsByPublisherAndVersionAction,
            CommitWork <TUowProvider> commitWork,
            Action <IEnumerable <IDomainEvent> > publish)
        {
            var list = new List <IDomainEvent>();

            commitWork(provider =>
            {
                Handle(
                    message,
                    publishersBySubscription,
                    notificationsByCorrelationsFunction(provider),
                    publisherVersionByCorrelationsFunction(provider),
                    () => DateTimeOffset.Now,
                    saveNotificationsByPublisherAndVersionAction(provider),
                    messages => list.AddRange(messages));
            });

            publish(list);
        }
Esempio n. 2
0
 internal static void HandleAndCommit(
     SubscriberMessage message,
     ProjectorsBySubscription <TProjectorUowProvider> projectorsBySubscription,
     Handler <TProjectorUowProvider> handler,
     NotificationsByCorrelationsFunction <TEventStoreUowProvider> notificationsByCorrelationsFunction,
     CommitWork <TProjectorUowProvider> commitProjectionProvider,
     CommitWork <TEventStoreUowProvider> commitEventStoreProvider,
     Func <DateTimeOffset> clock)
 {
     commitProjectionProvider
     (
         projectionProvider => commitEventStoreProvider
         (
             eventStoreProvider => handler
             (
                 message,
                 projectorsBySubscription,
                 notificationsByCorrelationsFunction(eventStoreProvider),
                 clock,
                 projectionProvider
             )
         )
     );
 }