/// <summary>
        /// Add HealthCheck actuator endpoint to OWIN Pipeline
        /// </summary>
        /// <param name="builder">OWIN <see cref="IAppBuilder" /></param>
        /// <param name="options">Options for configuring the thread dump endpoint</param>
        /// <param name="threadDumper">Class responsible for dumping threads</param>
        /// <param name="loggerFactory">For logging within the middleware</param>
        /// <param name="version">MediaType version of the response</param>
        /// <returns>OWIN <see cref="IAppBuilder" /> with Health Endpoint added</returns>
        public static IAppBuilder UseThreadDumpActuator(this IAppBuilder builder, IThreadDumpOptions options, IThreadDumper threadDumper, ILoggerFactory loggerFactory, MediaTypeVersion version)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            if (options == null)
            {
                throw new ArgumentNullException(nameof(options));
            }

            if (threadDumper == null)
            {
                throw new ArgumentNullException(nameof(threadDumper));
            }

            switch (version)
            {
            case MediaTypeVersion.V1:
                return(UseThreadDumpComponents(builder, options, threadDumper, loggerFactory));

            default:
                return(UseThreadDumpV2Components(builder, options, threadDumper, loggerFactory));
            }
        }
        /// <summary>
        /// Add HealthCheck actuator endpoint to OWIN Pipeline
        /// </summary>
        /// <param name="builder">OWIN <see cref="IAppBuilder" /></param>
        /// <param name="options">Options for configuring the thread dump endpoint</param>
        /// <param name="threadDumper">Class responsible for dumping threads</param>
        /// <param name="loggerFactory">For logging within the middleware</param>
        /// <returns>OWIN <see cref="IAppBuilder" /> with Health Endpoint added</returns>
        public static IAppBuilder UseThreadDumpActuator(this IAppBuilder builder, IThreadDumpOptions options, IThreadDumper threadDumper, ILoggerFactory loggerFactory = null)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            return(builder.UseThreadDumpActuator(options, threadDumper, loggerFactory, MediaTypeVersion.V1));
        }
        private static IAppBuilder UseThreadDumpV2Components(IAppBuilder builder, IThreadDumpOptions options, IThreadDumper threadDumper, ILoggerFactory loggerFactory)
        {
            var endpoint    = new ThreadDumpEndpoint_v2(options, threadDumper, loggerFactory?.CreateLogger <ThreadDumpEndpoint_v2>());
            var logger      = loggerFactory?.CreateLogger <EndpointOwinMiddleware <ThreadDumpResult> >();
            var mgmtOptions = ManagementOptions.Get();

            return(builder.Use <EndpointOwinMiddleware <ThreadDumpResult> >(endpoint, mgmtOptions, new List <HttpMethod> {
                HttpMethod.Get
            }, true, logger));
        }
        public ThreadDumpEndpoint(IThreadDumpOptions options, IThreadDumper threadDumper, ILogger <ThreadDumpEndpoint> logger = null)
            : base(options)
        {
            if (threadDumper == null)
            {
                throw new ArgumentNullException(nameof(threadDumper));
            }

            _threadDumper = threadDumper;
            _logger       = logger;
        }
Exemple #5
0
        /// <summary>
        /// Add HealthCheck actuator endpoint to OWIN Pipeline
        /// </summary>
        /// <param name="builder">OWIN <see cref="IAppBuilder" /></param>
        /// <param name="options">Options for configuring the thread dump endpoint</param>
        /// <param name="threadDumper">Class responsible for dumping threads</param>
        /// <param name="loggerFactory">For logging within the middleware</param>
        /// <returns>OWIN <see cref="IAppBuilder" /> with Health Endpoint added</returns>
        public static IAppBuilder UseThreadDumpActuator(this IAppBuilder builder, IThreadDumpOptions options, IThreadDumper threadDumper, ILoggerFactory loggerFactory = null)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            if (options == null)
            {
                throw new ArgumentNullException(nameof(options));
            }

            if (threadDumper == null)
            {
                throw new ArgumentNullException(nameof(threadDumper));
            }

            var endpoint = new ThreadDumpEndpoint(options, threadDumper, loggerFactory?.CreateLogger <ThreadDumpEndpoint>());
            var logger   = loggerFactory?.CreateLogger <EndpointOwinMiddleware <List <ThreadInfo> > >();

            return(builder.Use <EndpointOwinMiddleware <List <ThreadInfo> > >(endpoint, new List <HttpMethod> {
                HttpMethod.Get
            }, true, logger));
        }
 public ThreadDumpEndpoint_v2(IThreadDumpOptions options, IThreadDumper threadDumper, ILogger <ThreadDumpEndpoint_v2> logger = null)
     : base(options)
 {
     _threadDumper = threadDumper ?? throw new ArgumentNullException(nameof(threadDumper));
     _logger       = logger;
 }
Exemple #7
0
 public ThreadDumper(IThreadDumpOptions options, ILogger <ThreadDumper> logger = null)
 {
     _options = options ?? throw new ArgumentNullException(nameof(options));
     _logger  = logger;
 }