<?xml version="1.0"?>
<doc>
    <assembly>
        <name>Altium.Core.Diagnostics.ExceptionHandling</name>
    </assembly>
    <members>
        <member name="T:Altium.Core.Diagnostics.ExceptionHandling.Infrastructure.GlobalLoggingState">
            <summary>
            Configures the application exception logging state.
            </summary>
        </member>
        <member name="P:Altium.Core.Diagnostics.ExceptionHandling.Infrastructure.GlobalLoggingState.ExceptionLoggerFactory">
            <summary>
            The configured exception logger factory.
            </summary>
        </member>
        <member name="P:Altium.Core.Diagnostics.ExceptionHandling.Infrastructure.GlobalLoggingState.IsExceptionLoggerFactorySet">
            <summary>
            Checks whether the exception logger factory is configured.
            </summary>
        </member>
        <member name="P:Altium.Core.Diagnostics.ExceptionHandling.Infrastructure.GlobalLoggingState.ExceptionFilterFactory">
            <summary>
            The configured exception filter factory.
            Default filter: <see cref="T:Altium.Core.Diagnostics.ExceptionHandling.Services.Filtering.NullExceptionFilter"/>, produced via <see cref="T:Altium.Core.Diagnostics.ExceptionHandling.Services.Filtering.GenericExceptionFilterFactory`1"/>.
            </summary>
        </member>
        <member name="M:Altium.Core.Diagnostics.ExceptionHandling.Infrastructure.GlobalLoggingState.Set(Altium.Core.Diagnostics.ExceptionHandling.Services.Logging.IExceptionLoggerFactory)">
            <summary>
            Sets the global exception logger factory to the provided value.
            </summary>
            <param name="loggerFactory">The factory to use.</param>
        </member>
        <member name="M:Altium.Core.Diagnostics.ExceptionHandling.Infrastructure.GlobalLoggingState.Set(Altium.Core.Diagnostics.ExceptionHandling.Services.Filtering.IExceptionFilterFactory)">
            <summary>
            Sets the global exception filter factory to the provided value.
            </summary>
            <param name="filterFactory">The factory to use.</param>
        </member>
        <member name="T:Altium.Core.Diagnostics.ExceptionHandling.Services.Filtering.GenericExceptionFilterFactory`1">
            <summary>
            Creates any filter that has a parameterless constructor.
            </summary>
            <typeparam name="TExceptionFilter">The type of filter to create.</typeparam>
        </member>
        <member name="P:Altium.Core.Diagnostics.ExceptionHandling.Services.Filtering.GenericExceptionFilterFactory`1.Instance">
            <summary>
            The instance to be used without DI.
            </summary>
        </member>
        <member name="M:Altium.Core.Diagnostics.ExceptionHandling.Services.Filtering.GenericExceptionFilterFactory`1.CreateFilter">
            <inheritdoc cref="M:Altium.Core.Diagnostics.ExceptionHandling.Services.Filtering.IExceptionFilterFactory.CreateFilter"/>
        </member>
        <member name="T:Altium.Core.Diagnostics.ExceptionHandling.Services.Filtering.IExceptionFilter">
            <summary>
            The extensibility point that allows any global error-handling logic to ignore specific exceptions
            determined by the application at runtime.
            </summary>
        </member>
        <member name="M:Altium.Core.Diagnostics.ExceptionHandling.Services.Filtering.IExceptionFilter.IsLoggable(System.Exception)">
            <summary>
            Determines whether to log the exception.
            </summary>
            <param name="exception">The exception to inspect.</param>
            <returns>If False, error handlers must not log the exception. Otherwise, it must be logged. </returns>
            <remarks>This has no effect on exception handling.</remarks>
        </member>
        <member name="M:Altium.Core.Diagnostics.ExceptionHandling.Services.Filtering.IExceptionFilter.IsSuppressible(System.Exception)">
            <summary>
            Determines whether to suppress the exception.
            </summary>
            <param name="exception">The exception to inspect.</param>
            <returns>If False, error handlers must not try to suppress the exception (if they can),
            passing it right through and potentially crashing the application.
            If True, error handlers must try to suppress the exception, if they are capable of it.
            If null, error handlers should decide by themselves how to proceed.</returns>
            <remarks>This has no effect on exception logging.</remarks>
        </member>
        <member name="T:Altium.Core.Diagnostics.ExceptionHandling.Services.Filtering.IExceptionFilterFactory">
            <summary>
            Creates exception filters. If the filter does not have any parameters in the constructor and does not require
            custom initialization, consider using <see cref="T:Altium.Core.Diagnostics.ExceptionHandling.Services.Filtering.GenericExceptionFilterFactory`1"/>.
            </summary>
        </member>
        <member name="M:Altium.Core.Diagnostics.ExceptionHandling.Services.Filtering.IExceptionFilterFactory.CreateFilter">
            <summary>
            Provides an instance of an exception filter.
            </summary>
        </member>
        <member name="T:Altium.Core.Diagnostics.ExceptionHandling.Services.Filtering.NullExceptionFilter">
            <summary>
            The default exception filter: logs everything and lets the handlers decide whether to suppress the exception.
            </summary>
        </member>
        <member name="M:Altium.Core.Diagnostics.ExceptionHandling.Services.Filtering.NullExceptionFilter.IsLoggable(System.Exception)">
            <inheritdoc cref="M:Altium.Core.Diagnostics.ExceptionHandling.Services.Filtering.IExceptionFilter.IsLoggable(System.Exception)"/>
        </member>
        <member name="M:Altium.Core.Diagnostics.ExceptionHandling.Services.Filtering.NullExceptionFilter.IsSuppressible(System.Exception)">
            <inheritdoc cref="M:Altium.Core.Diagnostics.ExceptionHandling.Services.Filtering.IExceptionFilter.IsSuppressible(System.Exception)"/>
        </member>
        <member name="T:Altium.Core.Diagnostics.ExceptionHandling.Services.Handling.AppDomainDiagnosticsService">
            <inheritdoc cref="T:Altium.Core.Diagnostics.ExceptionHandling.Services.Handling.IAppDomainDiagnosticsService"/>
        </member>
        <member name="P:Altium.Core.Diagnostics.ExceptionHandling.Services.Handling.AppDomainDiagnosticsService.Instance">
            <summary>
            The instance to be used without DI.
            </summary>
        </member>
        <member name="M:Altium.Core.Diagnostics.ExceptionHandling.Services.Handling.AppDomainDiagnosticsService.Setup">
            <inheritdoc cref="M:Altium.Core.Diagnostics.ExceptionHandling.Services.Handling.IAppDomainDiagnosticsService.Setup"/>
        </member>
        <member name="M:Altium.Core.Diagnostics.ExceptionHandling.Services.Handling.AppDomainDiagnosticsService.ExceptionErrorHandler(System.Object,System.UnhandledExceptionEventArgs)">
            <summary>
            Handles the exceptions by logging their message using the provided logger.
            To configure the current AppDomain to use this method, invoke the <see cref="M:Altium.Core.Diagnostics.ExceptionHandling.Services.Handling.AppDomainDiagnosticsService.Setup"/> method.
            </summary>
        </member>
        <member name="T:Altium.Core.Diagnostics.ExceptionHandling.Services.Handling.ExceptionHandlingService">
            <inheritdoc cref="T:Altium.Core.Diagnostics.ExceptionHandling.Services.Handling.IExceptionHandlingService"/>
        </member>
        <member name="M:Altium.Core.Diagnostics.ExceptionHandling.Services.Handling.ExceptionHandlingService.#ctor">
            <summary>
            Constructor for the lazy instance and static context.
            </summary>
        </member>
        <member name="M:Altium.Core.Diagnostics.ExceptionHandling.Services.Handling.ExceptionHandlingService.#ctor(Altium.Core.Diagnostics.ExceptionHandling.Services.Logging.IExceptionLogger,Altium.Core.Diagnostics.ExceptionHandling.Services.Filtering.IExceptionFilter)">
            <summary>
            Constructor for DI.
            </summary>
        </member>
        <member name="P:Altium.Core.Diagnostics.ExceptionHandling.Services.Handling.ExceptionHandlingService.Instance">
            <summary>
            The instance to be used without DI.
            </summary>
        </member>
        <member name="M:Altium.Core.Diagnostics.ExceptionHandling.Services.Handling.ExceptionHandlingService.PerformBootstrap(System.Action)">
            <inheritdoc cref="M:Altium.Core.Diagnostics.ExceptionHandling.Services.Handling.IExceptionHandlingService.PerformBootstrap(System.Action)"/>
        </member>
        <member name="T:Altium.Core.Diagnostics.ExceptionHandling.Services.Handling.IAppDomainDiagnosticsService">
            <summary>
            Provides the methods needed to setup AppDomain-level exception logging.
            Does not provide exception handling, i.e. the logged exceptions will still always be propagated.
            </summary>
        </member>
        <member name="M:Altium.Core.Diagnostics.ExceptionHandling.Services.Handling.IAppDomainDiagnosticsService.Setup">
            <summary>
            Configures the current AppDomain to use custom exception logging.
            The exceptions are logged by the logger produced via
            the configured <see cref="T:Altium.Core.Diagnostics.ExceptionHandling.Services.Logging.IExceptionLoggerFactory"/> as long as they can be logged according to
            the configured <see cref="T:Altium.Core.Diagnostics.ExceptionHandling.Services.Filtering.IExceptionFilter"/>.
            </summary>
        </member>
        <member name="T:Altium.Core.Diagnostics.ExceptionHandling.Services.Handling.IExceptionHandlingService">
            <summary>
            Provides the methods needed to execute arbitrary logic with common exception handling.
            </summary>
        </member>
        <member name="M:Altium.Core.Diagnostics.ExceptionHandling.Services.Handling.IExceptionHandlingService.PerformBootstrap(System.Action)">
            <summary>
            Invokes the specified application bootstrap action, handling any exceptions that it might throw.
            The caught exceptions are logger into the logger produced by the configured <see cref="T:Altium.Core.Diagnostics.ExceptionHandling.Services.Logging.IExceptionLoggerFactory"/>.
            </summary>
            <param name="action">The application bootstrap action to invoke.</param>
            <returns>
            True if the invocation completed successfully. Otherwise, False.
            </returns>
            <remarks>
            Will rethrow those exceptions that the configured <see cref="T:Altium.Core.Diagnostics.ExceptionHandling.Services.Filtering.IExceptionFilter"/> explicitly forbids
            suppressing.
            </remarks>
        </member>
        <member name="T:Altium.Core.Diagnostics.ExceptionHandling.Services.Logging.IExceptionLogger">
            <summary>
            The bridging abstraction meant to decouple error handling from logging targets and other diagnostic libraries.
            </summary>
            <remarks>
            Consumers of this library are free to either implement this interface as a wrapper for their existing
            logging systems, or rely on the provided default implementation: <see cref="T:Altium.Core.Diagnostics.ExceptionHandling.Services.Logging.StdErrExceptionLogger"/>.
            </remarks>
        </member>
        <member name="M:Altium.Core.Diagnostics.ExceptionHandling.Services.Logging.IExceptionLogger.LogException(System.String,System.Exception)">
            <summary>
            Logs an exception with the specified message.
            The format and content of the final message are implementation-dependent.
            </summary>
        </member>
        <member name="T:Altium.Core.Diagnostics.ExceptionHandling.Services.Logging.IExceptionLoggerFactory">
            <summary>
            The factory that the exception handling services use to create the exception logger.
            </summary>
        </member>
        <member name="M:Altium.Core.Diagnostics.ExceptionHandling.Services.Logging.IExceptionLoggerFactory.CreateLogger">
            <summary>
            Creates the logger. Can be a reusable single instance.
            </summary>
        </member>
        <member name="T:Altium.Core.Diagnostics.ExceptionHandling.Services.Logging.StdErrExceptionLogger">
            <summary>
            The default implementation of <see cref="T:Altium.Core.Diagnostics.ExceptionHandling.Services.Logging.IExceptionLogger"/> bridge:
            it only outputs the exception information into the standard error stream.
            </summary>
            <remarks>
            Before using custom loggers, consider capturing the standard error output of the application and sending it to
            the diagnostic storage, without any code on the application side.
            </remarks>
        </member>
        <member name="P:Altium.Core.Diagnostics.ExceptionHandling.Services.Logging.StdErrExceptionLogger.Instance">
            <summary>
            The instance to be used as a parameter to the exception handling infrastructure.
            </summary>
        </member>
        <member name="M:Altium.Core.Diagnostics.ExceptionHandling.Services.Logging.StdErrExceptionLogger.LogException(System.String,System.Exception)">
            <summary>
            Logs the exception into the standard error stream.
            </summary>
            <param name="message">The prefix of an error message.</param>
            <param name="exception">The exception to be logged as a string.</param>
        </member>
        <member name="T:Altium.Core.Diagnostics.ExceptionHandling.Services.Logging.StdErrExceptionLoggerFactory">
            <inheritdoc cref="T:Altium.Core.Diagnostics.ExceptionHandling.Services.Logging.IExceptionLoggerFactory"/>
        </member>
        <member name="P:Altium.Core.Diagnostics.ExceptionHandling.Services.Logging.StdErrExceptionLoggerFactory.Instance">
            <summary>
            The instance to be used without DI.
            </summary>
        </member>
        <member name="M:Altium.Core.Diagnostics.ExceptionHandling.Services.Logging.StdErrExceptionLoggerFactory.CreateLogger">
            <inheritdoc cref="M:Altium.Core.Diagnostics.ExceptionHandling.Services.Logging.IExceptionLoggerFactory.CreateLogger"/>
        </member>
    </members>
</doc>
