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

◆ WriteEventString()

unsafe void System.Diagnostics.Tracing.EventSource.WriteEventString ( string msgString)
inlineprivateinherited

Definition at line 1568 of file EventSource.cs.

1569 {
1570 bool flag = true;
1571 flag &= m_etwProvider == null;
1572 if (flag & (m_eventPipeProvider == null))
1573 {
1574 return;
1575 }
1576 EventLevel eventLevel = EventLevel.LogAlways;
1577 long keywords = -1L;
1579 {
1580 EventSourceOptions eventSourceOptions = default(EventSourceOptions);
1581 eventSourceOptions.Keywords = (EventKeywords)keywords;
1582 eventSourceOptions.Level = eventLevel;
1583 EventSourceOptions options = eventSourceOptions;
1584 TraceLoggingEventTypes eventTypes = GetTrimSafeTraceLoggingEventTypes();
1585 WriteMultiMergeInner("EventSourceMessage", ref options, eventTypes, null, null, msgString);
1586 return;
1587 }
1588 if (m_rawManifest == null && m_outOfBandMessageCount == 1)
1589 {
1590 ManifestBuilder manifestBuilder = new ManifestBuilder(Name, Guid, Name, null, EventManifestOptions.None);
1591 manifestBuilder.StartEvent("EventSourceMessage", new EventAttribute(0)
1592 {
1593 Level = eventLevel,
1594 Task = (EventTask)65534
1595 });
1596 manifestBuilder.AddEventParameter(typeof(string), "message");
1597 manifestBuilder.EndEvent();
1598 SendManifest(manifestBuilder.CreateManifest());
1599 }
1600 fixed (char* ptr = msgString)
1601 {
1602 EventDescriptor eventDescriptor = new EventDescriptor(0, 0, 0, (byte)eventLevel, 0, 0, keywords);
1603 EventProvider.EventData eventData = default(EventProvider.EventData);
1604 eventData.Ptr = (ulong)ptr;
1605 eventData.Size = (uint)(2 * (msgString.Length + 1));
1606 eventData.Reserved = 0u;
1607 if (m_etwProvider != null)
1608 {
1609 m_etwProvider.WriteEvent(ref eventDescriptor, IntPtr.Zero, null, null, 1, (IntPtr)(&eventData));
1610 }
1611 if (m_eventPipeProvider == null)
1612 {
1613 return;
1614 }
1616 {
1617 if (m_createEventLock == null)
1618 {
1619 Interlocked.CompareExchange(ref m_createEventLock, new object(), null);
1620 }
1622 {
1624 {
1625 string eventName = "EventSourceMessage";
1626 EventParameterInfo eventParameterInfo = default(EventParameterInfo);
1627 eventParameterInfo.SetInfo("message", typeof(string));
1628 byte[] array = EventPipeMetadataGenerator.Instance.GenerateMetadata(0, eventName, keywords, (uint)eventLevel, 0u, EventOpcode.Info, new EventParameterInfo[1] { eventParameterInfo });
1629 uint metadataLength = ((array != null) ? ((uint)array.Length) : 0u);
1630 fixed (byte* pMetadata = array)
1631 {
1632 m_writeEventStringEventHandle = m_eventPipeProvider.m_eventProvider.DefineEventHandle(0u, eventName, keywords, 0u, (uint)eventLevel, pMetadata, metadataLength);
1633 }
1634 }
1635 }
1636 }
1637 m_eventPipeProvider.WriteEvent(ref eventDescriptor, m_writeEventStringEventHandle, null, null, 1, (IntPtr)(&eventData));
1638 }
1639 [UnconditionalSuppressMessage("ReflectionAnalysis", "IL2026:RequiresUnreferencedCode", Justification = "The call to TraceLoggingEventTypes with the below parameter values are trim safe")]
1640 static TraceLoggingEventTypes GetTrimSafeTraceLoggingEventTypes()
1641 {
1642 return new TraceLoggingEventTypes("EventSourceMessage", EventTags.None, typeof(string));
1643 }
1644 }
unsafe void WriteMultiMergeInner(string eventName, ref EventSourceOptions options, TraceLoggingEventTypes eventTypes, Guid *activityID, Guid *childActivityID, params object[] values)
volatile OverrideEventProvider m_eventPipeProvider
volatile OverrideEventProvider m_etwProvider
static int CompareExchange(ref int location1, int value, int comparand)

References System.array, System.Threading.Interlocked.CompareExchange(), System.Diagnostics.Tracing.EventPipeMetadataGenerator.Instance, System.L, System.Diagnostics.Tracing.EventSource.m_createEventLock, System.Diagnostics.Tracing.EventSource.m_etwProvider, System.Diagnostics.Tracing.EventSource.m_eventPipeProvider, System.Diagnostics.Tracing.EventSource.m_outOfBandMessageCount, System.Diagnostics.Tracing.EventSource.m_rawManifest, System.Diagnostics.Tracing.EventSource.m_writeEventStringEventHandle, System.Diagnostics.Tracing.EventSource.Name, System.options, System.Diagnostics.Tracing.EventSource.SelfDescribingEvents, System.Diagnostics.Tracing.SendManifest, System.Diagnostics.Tracing.EventSource.WriteMultiMergeInner(), and System.IntPtr.Zero.

Referenced by System.Diagnostics.Tracing.EventSource.ReportOutOfBandMessage().