private void OnDynamicDiagnosticSourceInvokerInvalidated(DiagnosticSourceAssembly.IDynamicInvoker dynamicInvoker, object state)
        {
            // This listener method is just here for demo purposes. It does not perform any business logic (but it could).
            Guid sessionId = (state is Guid stateGuid) ? stateGuid : Guid.Empty;

            ConsoleWrite.LineLine($"This {this.GetType().Name} noticed that a dynamic DiagnosticSource invoker was invalidated (session {sessionId})."
                                  + $" Some errors may be temporarily observed until stubs are re-initialized.");
        }
        private void OnDynamicDiagnosticSourceInvokerInitialized(DiagnosticSourceAssembly.IDynamicInvoker dynamicInvoker)
        {
            ConsoleWrite.LineLine($"This {this.GetType().Name} noticed that an"
                                  + $" {nameof(DiagnosticSourceAssembly)}.{nameof(DiagnosticSourceAssembly.IDynamicInvoker)} became available."
                                  + $" DiagnosticSourceAssemblyName: \"{dynamicInvoker.DiagnosticSourceAssemblyName}\".");

            Guid sessionId = Guid.NewGuid();

            ConsoleWrite.LineLine($"Settng up {this.GetType().Name} listening session \"{sessionId}\".");
            SubscribeToAllSources();
            ConsoleWrite.LineLine($"Finished settng up {this.GetType().Name} listening session \"{sessionId}\".");

            dynamicInvoker.SubscribeInvalidatedListener(OnDynamicDiagnosticSourceInvokerInvalidated, sessionId);
        }
Пример #3
0
        private void OnDynamicDiagnosticSourceInvokerInitialized(DiagnosticSourceAssembly.IDynamicInvoker dynamicInvoker, object state)
        {
            Random rnd = (Random)state;

            ConsoleWrite.LineLine($"This {this.GetType().Name} noticed that an"
                                  + $" {nameof(DiagnosticSourceAssembly)}.{nameof(DiagnosticSourceAssembly.IDynamicInvoker)} became available."
                                  + $" DiagnosticSourceAssemblyName: \"{dynamicInvoker.DiagnosticSourceAssemblyName}\".");

            int sessionId = rnd.Next(1000);

            ConsoleWrite.LineLine($"Initializing new Diagnostic Source generator session \"{sessionId.ToString("000")}\".");
            CreateNewSource(ref _diagnosticSource);
            ConsoleWrite.LineLine($"Finsihed initializing new Diagnostic Source generator session \"{sessionId.ToString("000")}\".");

            dynamicInvoker.SubscribeInvalidatedListener(OnDynamicDiagnosticSourceInvokerInvalidated, sessionId);
        }
Пример #4
0
 private static void NotifyInitializationListeners(DiagnosticSourceAssembly.IDynamicInvoker initializedInvoker)
 {
     s_initializationListenersCollection.InvokeAll(initializedInvoker);
 }