/// <summary> /// Trace requests / responses to the platform WebAPI event-source. /// </summary> /// <param name="clientBuilder"> /// The HTTP client builder. /// </param> /// <param name="messageComponents"> /// An optional combination of <see cref="TraceMessageComponents"/> flags indicating the message components to trace. /// /// Defaults to <see cref="TraceMessageComponents.All"/>. /// </param> /// <returns> /// The client builder (enables inline use / method chaining). /// </returns> public static HttpClientBuilder WithTracingToEtw(this HttpClientBuilder clientBuilder, TraceMessageComponents messageComponents = TraceMessageComponents.All) { if (clientBuilder == null) throw new ArgumentNullException(nameof(clientBuilder)); return clientBuilder.AddHandlerAfter<EtwTraceMessageHandler, ActivityCorrelationClientMessageHandler>( () => new EtwTraceMessageHandler(messageComponents) ); }
/// <summary> /// Create a new <see cref="TraceMessageHandler"/>. /// </summary> /// <param name="enabledComponents"> /// Components of messages to be traced. /// </param> public EtwTraceMessageHandler(TraceMessageComponents enabledComponents) : base(enabledComponents) { }
/// <summary> /// Determine whether the specified message component(s) be traced. /// </summary> /// <param name="messageComponent"> /// One or more <see cref="TraceMessageComponents"/> flags indicating the message component(s). /// </param> /// <returns> /// <c>true</c>, if the message component(s) should be traced; otherwise, <c>false</c>. /// </returns> protected bool ShouldTrace(TraceMessageComponents messageComponent) { switch (_enabledComponents) { case TraceMessageComponents.None: { return false; } case TraceMessageComponents.All: { return true; } default: { return (_enabledComponents & messageComponent) != 0; } } }
/// <summary> /// Create a new <see cref="TraceMessageHandler"/>. /// </summary> /// <param name="enabledComponents"> /// Components of messages to be traced. /// </param> protected TraceMessageHandler(TraceMessageComponents enabledComponents) { _enabledComponents = enabledComponents; }