//------------------------------------------------------------------------------ // // This code was generated by a tool. // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. // //------------------------------------------------------------------------------ namespace System.ServiceModel.Web.Diagnostics.Application { using System.Runtime; using System.Runtime.Diagnostics; using System.Security; internal partial class TD { static System.Resources.ResourceManager resourceManager; static System.Globalization.CultureInfo resourceCulture; [System.Security.SecurityCriticalAttribute()] static System.Runtime.Diagnostics.EventDescriptor[] eventDescriptors; static object syncLock = new object(); // Double-checked locking pattern requires volatile for read/write synchronization static volatile bool eventDescriptorsCreated; private TD() { } [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification="This is an auto-generated code, some ETW/TraceSource mixed code would use it.")] static System.Resources.ResourceManager ResourceManager { get { if (object.ReferenceEquals(resourceManager, null)) { resourceManager = new System.Resources.ResourceManager("System.ServiceModel.Web.Diagnostics.Application.TD", typeof(TD).Assembly); } return resourceManager; } } [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification="This template is shared across all assemblies, some of which use this accessor.")] internal static System.Globalization.CultureInfo Culture { get { return resourceCulture; } set { resourceCulture = value; } } /// /// Check if trace definition is enabled /// Event description ID=5203, Level=verbose, Channel=Debug /// internal static bool JsonMessageDecodingStartIsEnabled() { return (FxTrace.ShouldTraceVerbose && TD.IsEtwEventEnabled(0)); } /// /// Gets trace definition like: JsonMessageEncoder started decoding the message. /// Event description ID=5203, Level=verbose, Channel=Debug /// internal static void JsonMessageDecodingStart() { TracePayload payload = FxTrace.Trace.GetSerializedPayload(null, null, null); if (TD.IsEtwEventEnabled(0)) { TD.WriteEtwEvent(0, null, payload.AppDomainFriendlyName); } } /// /// Check if trace definition is enabled /// Event description ID=5204, Level=verbose, Channel=Debug /// internal static bool JsonMessageEncodingStartIsEnabled() { return (FxTrace.ShouldTraceVerbose && TD.IsEtwEventEnabled(1)); } /// /// Gets trace definition like: JsonMessageEncoder started encoding the message. /// Event description ID=5204, Level=verbose, Channel=Debug /// /// The event trace activity internal static void JsonMessageEncodingStart(System.Runtime.Diagnostics.EventTraceActivity eventTraceActivity) { TracePayload payload = FxTrace.Trace.GetSerializedPayload(null, null, null); if (TD.IsEtwEventEnabled(1)) { TD.WriteEtwEvent(1, eventTraceActivity, payload.AppDomainFriendlyName); } } /// /// Creates the event descriptors array /// // Critical = Sets the SecurityCritical member eventDescriptors // Safe = We control what the event descriptors contain [System.Security.SecuritySafeCriticalAttribute()] static void CreateEventDescriptors() { System.Runtime.Diagnostics.EventDescriptor[] descriptors = new System.Runtime.Diagnostics.EventDescriptor[] { new System.Runtime.Diagnostics.EventDescriptor(5203, 0, (byte)TraceChannel.Debug, (byte)TraceEventLevel.Verbose, (byte)TraceEventOpcode.Start, 0x9fb, 0x1000000000001000), new System.Runtime.Diagnostics.EventDescriptor(5204, 0, (byte)TraceChannel.Debug, (byte)TraceEventLevel.Verbose, (byte)TraceEventOpcode.Start, 0x9fc, 0x1000000000001000)}; ushort[] e2eEvents = new ushort[] { 5204}; FxTrace.UpdateEventDefinitions(descriptors, e2eEvents); eventDescriptors = descriptors; } /// /// Ensures that the event descriptors array is initialized /// static void EnsureEventDescriptors() { if (eventDescriptorsCreated) { return; } System.Threading.Monitor.Enter(syncLock); try { if (eventDescriptorsCreated) { return; } CreateEventDescriptors(); eventDescriptorsCreated = true; } finally { System.Threading.Monitor.Exit(syncLock); } } /// /// Check if ETW tracing is enabled for the particular event /// /// The index of the event descriptor static bool IsEtwEventEnabled(int eventIndex) { if (FxTrace.Trace.IsEtwProviderEnabled) { EnsureEventDescriptors(); return FxTrace.IsEventEnabled(eventIndex); } return false; } /// /// Writes ETW trace event /// /// The index of the event descriptor> /// A parameter of the ETW event> /// A parameter of the ETW event> // Critical = Calls SecurityCritical method EtwProvider.WriteEvent // Safe = We only allow setting of provider id from SecurityCritical code, access to EventDescriptors is SecurityCritical, and ETW limits buffer sizes. [System.Security.SecuritySafeCriticalAttribute()] static bool WriteEtwEvent(int eventIndex, System.Runtime.Diagnostics.EventTraceActivity eventParam0, string eventParam1) { EnsureEventDescriptors(); return FxTrace.Trace.EtwProvider.WriteEvent(ref eventDescriptors[eventIndex], eventParam0, eventParam1); } } }