コード例 #1
0
 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);
     }
 }
コード例 #2
0
 /// <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;
 }
コード例 #3
0
        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);
            }
        }
コード例 #4
0
 public TimeMeasureCoreFilter(Action <TimeMeasureOptions> setup = null)
 {
     Options  = setup.ConfigureOptions();
     Profiler = new TimeMeasureProfiler();
 }