public static IObservable <IEnumerable <TTarget> > ApplyEvent <TEvent, TTarget, TContext>( this IObservable <TEvent> source, IEventProcessor <TTarget, TContext, TEvent> eventProcessor, TContext context, IEventProcessorTrace <TTarget, TContext, TEvent> trace = null ) where TEvent : IEvent { return(source.Where(change => eventProcessor.CanExecute(change, context)) .Select(change => { return eventProcessor.Execute(change, context, trace); })); }
public static IObservable <IChangeSet <IEnumerable <TTarget>, TKey> > ApplyEvent <TEvent, TKey, TTarget, TContext>( this IObservable <IChangeSet <TEvent, TKey> > source, IEventProcessor <TTarget, TContext, TEvent> eventProcessor, TContext context, IEventProcessorTrace <TTarget, TContext, TEvent> trace = null ) where TEvent : IEvent { return(source .Filter(change => eventProcessor.CanExecute(change, context)) .Transform(change => { return eventProcessor.Execute(change, context, trace); })); }
public static IObservable <IChangeSet <TEvent, TKey> > RaiseEvent <TEvent, TKey, TTarget, TContext>( this IObservable <IChangeSet <TEvent, TKey> > source, IEventProcessor <TTarget, TContext, TEvent> eventProcessor, TContext context, IEventProcessorTrace <TTarget, TContext, TEvent> trace = null ) where TEvent : IEvent { return(source .Filter(change => eventProcessor.CanExecute(change, context)) .Do(changes => { foreach (var change in changes) { eventProcessor.Execute(change.Current, context, trace); } })); }