Moving BSTR conv to native code in SecureStringToBSTR.
[mono.git] / mcs / class / referencesource / System.Runtime.Serialization / System / Runtime / Serialization / Diagnostics / TraceUtility.cs
1 //-----------------------------------------------------------------------------
2 // Copyright (c) Microsoft Corporation.  All rights reserved.
3 //-----------------------------------------------------------------------------
4
5 namespace System.Runtime.Serialization.Diagnostics
6 {
7     using System.Collections.Generic;
8     using System.Diagnostics;
9     using System.Globalization;
10     using System.Runtime;
11     using System.Runtime.Diagnostics;
12     using System.ServiceModel.Diagnostics;
13
14     static class TraceUtility
15     {
16         static Dictionary<int, string> traceCodes = new Dictionary<int, string>(18)
17         {
18             { TraceCode.WriteObjectBegin, "WriteObjectBegin" },
19             { TraceCode.WriteObjectEnd, "WriteObjectEnd" },
20             { TraceCode.WriteObjectContentBegin, "WriteObjectContentBegin" },
21             { TraceCode.WriteObjectContentEnd, "WriteObjectContentEnd" },
22             { TraceCode.ReadObjectBegin, "ReadObjectBegin" },
23             { TraceCode.ReadObjectEnd, "ReadObjectEnd" },
24             { TraceCode.ElementIgnored, "ElementIgnored" },
25             { TraceCode.XsdExportBegin, "XsdExportBegin" },
26             { TraceCode.XsdExportEnd, "XsdExportEnd" },
27             { TraceCode.XsdImportBegin, "XsdImportBegin" },
28             { TraceCode.XsdImportEnd, "XsdImportEnd" },
29             { TraceCode.XsdExportError, "XsdExportError" },
30             { TraceCode.XsdImportError, "XsdImportError" },
31             { TraceCode.XsdExportAnnotationFailed, "XsdExportAnnotationFailed" },
32             { TraceCode.XsdImportAnnotationFailed, "XsdImportAnnotationFailed" },
33             { TraceCode.XsdExportDupItems, "XsdExportDupItems" },
34             { TraceCode.FactoryTypeNotFound, "FactoryTypeNotFound" },
35             { TraceCode.ObjectWithLargeDepth, "ObjectWithLargeDepth" },
36         };
37
38         internal static void Trace(TraceEventType severity, int traceCode, string traceDescription)
39         {
40             Trace(severity, traceCode, traceDescription, null);
41         }
42
43         internal static void Trace(TraceEventType severity, int traceCode, string traceDescription, TraceRecord record)
44         {
45             Trace(severity, traceCode, traceDescription, record, null);
46         }
47
48         internal static void Trace(TraceEventType severity, int traceCode, string traceDescription, TraceRecord record, Exception exception)
49         {
50             Fx.Assert(traceCodes.ContainsKey(traceCode), 
51                 string.Format(CultureInfo.InvariantCulture, "Unsupported trace code: Please add trace code 0x{0} to the dictionary TraceUtility.traceCodes in {1}", 
52                 traceCode.ToString("X", CultureInfo.InvariantCulture), typeof(TraceUtility)));
53 #if !MONO
54             string msdnTraceCode = System.ServiceModel.Diagnostics.LegacyDiagnosticTrace.GenerateMsdnTraceCode("System.Runtime.Serialization", traceCodes[traceCode]);
55 #else
56             string msdnTraceCode = "";
57 #endif
58             DiagnosticUtility.DiagnosticTrace.TraceEvent(severity, traceCode, msdnTraceCode, traceDescription, record, exception, null);
59         }
60     }
61 }