internal static void InterceptControllerWithProfilerOnActionExecuted(ActionExecutedContext context, TimeMeasureOptions options, TimeMeasureProfiler profiler) { profiler.Timer.Stop(); if (options.TimeMeasureCompletedThreshold == TimeSpan.Zero || profiler.Elapsed > options.TimeMeasureCompletedThreshold) { TimeMeasure.CompletedCallback?.Invoke(profiler); } }
/// <summary> /// Initializes a new instance of the <see cref="TimeMeasuringFilter" /> class. /// </summary> /// <param name="setup">The <see cref="TimeMeasureOptions" /> which need to be configured.</param> /// <param name="he">The dependency injected <see cref="IHostingEnvironment"/>.</param> public TimeMeasuringFilter(IOptions <TimeMeasuringOptions> setup, IHostingEnvironment he) : base(setup) { Profiler = new TimeMeasureProfiler(); Environment = he; }
internal static void InterceptControllerWithProfilerOnActionExecuting(ActionExecutingContext context, TimeMeasureOptions options, TimeMeasureProfiler profiler) { profiler.Timer.Start(); var descriptor = context.ActionDescriptor as ControllerActionDescriptor; if (descriptor != null) { var expectedObjects = context.ParseRuntimeParameters(descriptor); var verifiedObjects = context.ActionArguments.Values.ToArray(); if (verifiedObjects.Length == expectedObjects.Length) { expectedObjects = verifiedObjects; } var md = options.MethodDescriptor?.Invoke() ?? context.ParseMethodDescriptor(descriptor); profiler.Member = md.ToString(); profiler.Data = md.MergeParameters(options.RuntimeParameters ?? expectedObjects); } }
public TimeMeasureCoreFilter(Action <TimeMeasureOptions> setup = null) { Options = setup.ConfigureOptions(); Profiler = new TimeMeasureProfiler(); }