public object Run(PerformContext context, IJobPerformer performer) { if (context == null) throw new ArgumentNullException("context"); if (performer == null) throw new ArgumentNullException("performer"); var filterInfo = GetFilters(context.Job); try { return PerformJobWithFilters(context, performer, filterInfo.ServerFilters); } catch (OperationCanceledException) { throw; } catch (Exception ex) { var exceptionContext = new ServerExceptionContext(context, ex); InvokeServerExceptionFilters(exceptionContext, filterInfo.ServerExceptionFilters); if (!exceptionContext.ExceptionHandled) { throw; } } return null; }
public void Run(PerformContext context, IJobPerformer performer) { if (context == null) { throw new ArgumentNullException("context"); } if (performer == null) { throw new ArgumentNullException("performer"); } var filterInfo = GetFilters(context.Job); try { PerformJobWithFilters(context, performer, filterInfo.ServerFilters); } catch (OperationCanceledException) { throw; } catch (Exception ex) { var exceptionContext = new ServerExceptionContext(context, ex); InvokeServerExceptionFilters(exceptionContext, filterInfo.ServerExceptionFilters); if (!exceptionContext.ExceptionHandled) { throw; } } }
private static void PerformJobWithFilters( PerformContext context, IJobPerformer performer, IEnumerable <IServerFilter> filters) { var preContext = new PerformingContext(context); Func <PerformedContext> continuation = () => { performer.Perform(context.Activator, context.CancellationToken); return(new PerformedContext(context, false, null)); }; var thunk = filters.Reverse().Aggregate(continuation, (next, filter) => () => InvokePerformFilter(filter, preContext, next)); thunk(); }
private static void PerformJobWithFilters( PerformContext context, IJobPerformer performer, IEnumerable<IServerFilter> filters) { var preContext = new PerformingContext(context); Func<PerformedContext> continuation = () => { performer.Perform(context.Activator, context.CancellationToken); return new PerformedContext(context, false, null); }; var thunk = filters.Reverse().Aggregate(continuation, (next, filter) => () => InvokePerformFilter(filter, preContext, next)); thunk(); }
private object PerformJobWithFilters( PerformContext context, IJobPerformer performer, IEnumerable <IServerFilter> filters) { object result = null; var preContext = new PerformingContext(context); Func <PerformedContext> continuation = () => { result = performer.Perform(_activator, context.JobExecutionContext); return(new PerformedContext(context, result, false, null)); }; var thunk = filters.Reverse().Aggregate(continuation, (next, filter) => () => InvokePerformFilter(filter, preContext, next)); thunk(); return(result); }