Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ SendManifest()

unsafe void System.Diagnostics.Tracing.EventSource.SendManifest ( byte[] rawManifest)
inlineprivateinherited

Definition at line 2024 of file EventSource.cs.

2025 {
2026 if (rawManifest == null)
2027 {
2028 return;
2029 }
2030 fixed (byte* ptr2 = rawManifest)
2031 {
2032 EventDescriptor eventDescriptor = new EventDescriptor(65534, 1, 0, 0, 254, 65534, 72057594037927935L);
2033 ManifestEnvelope manifestEnvelope = default(ManifestEnvelope);
2034 manifestEnvelope.Format = ManifestEnvelope.ManifestFormats.SimpleXmlFormat;
2035 manifestEnvelope.MajorVersion = 1;
2036 manifestEnvelope.MinorVersion = 0;
2037 manifestEnvelope.Magic = 91;
2038 int num = rawManifest.Length;
2039 manifestEnvelope.ChunkNumber = 0;
2040 EventProvider.EventData* ptr = stackalloc EventProvider.EventData[2];
2041 ptr->Ptr = (ulong)(&manifestEnvelope);
2042 ptr->Size = (uint)sizeof(ManifestEnvelope);
2043 ptr->Reserved = 0u;
2044 ptr[1].Ptr = (ulong)ptr2;
2045 ptr[1].Reserved = 0u;
2046 int num2 = 65280;
2047 while (true)
2048 {
2049 IL_00c7:
2050 manifestEnvelope.TotalChunks = (ushort)((num + (num2 - 1)) / num2);
2051 while (num > 0)
2052 {
2053 ptr[1].Size = (uint)Math.Min(num, num2);
2054 if (m_etwProvider != null && !m_etwProvider.WriteEvent(ref eventDescriptor, IntPtr.Zero, null, null, 2, (IntPtr)ptr))
2055 {
2056 if (EventProvider.GetLastWriteEventError() == EventProvider.WriteEventErrorCode.EventTooBig && manifestEnvelope.ChunkNumber == 0 && num2 > 256)
2057 {
2058 num2 /= 2;
2059 goto IL_00c7;
2060 }
2062 {
2063 ThrowEventSourceException("SendManifest");
2064 }
2065 break;
2066 }
2067 num -= num2;
2068 ptr[1].Ptr += (uint)num2;
2069 manifestEnvelope.ChunkNumber++;
2070 if (manifestEnvelope.ChunkNumber % 5 == 0)
2071 {
2072 Thread.Sleep(15);
2073 }
2074 }
2075 break;
2076 }
2077 }
2078 }
volatile OverrideEventProvider m_etwProvider
void ThrowEventSourceException(string eventName, Exception innerEx=null)
static void Sleep(int millisecondsTimeout)
Definition Thread.cs:658

References System.Diagnostics.Tracing.EventProvider.GetLastWriteEventError(), System.L, System.Diagnostics.Tracing.EventSource.m_etwProvider, System.Math.Min(), System.Threading.Thread.Sleep(), System.Diagnostics.Tracing.EventSource.ThrowEventSourceException(), System.Diagnostics.Tracing.EventSource.ThrowOnEventWriteErrors, and System.IntPtr.Zero.