Terraria v1.4.4.9
Terraria source code documentation
All Classes Namespaces Files Functions Variables Enumerations Enumerator Properties Events Macros

◆ WriteMultiMergeInner()

unsafe void System.Diagnostics.Tracing.EventSource.WriteMultiMergeInner ( string eventName,
ref EventSourceOptions options,
TraceLoggingEventTypes eventTypes,
Guid * activityID,
Guid * childActivityID,
params object[] values )
inlineprivateinherited

Definition at line 2842 of file EventSource.cs.

2843 {
2844 int num = 0;
2845 byte level = (((options.valuesSet & 4u) != 0) ? options.level : eventTypes.level);
2846 byte opcode = (((options.valuesSet & 8u) != 0) ? options.opcode : eventTypes.opcode);
2847 EventTags tags = (((options.valuesSet & 2u) != 0) ? options.tags : eventTypes.Tags);
2848 EventKeywords keywords = ((((uint)options.valuesSet & (true ? 1u : 0u)) != 0) ? options.keywords : eventTypes.keywords);
2849 NameInfo nameInfo = eventTypes.GetNameInfo(eventName ?? eventTypes.Name, tags);
2850 if (nameInfo == null)
2851 {
2852 return;
2853 }
2854 num = nameInfo.identity;
2855 EventDescriptor eventDescriptor = new EventDescriptor(num, level, opcode, (long)keywords);
2857 int pinCount = eventTypes.pinCount;
2858 byte* scratch = stackalloc byte[(int)(uint)eventTypes.scratchSize];
2859 EventData* ptr = stackalloc EventData[eventTypes.dataCount + 3];
2860 for (int i = 0; i < eventTypes.dataCount + 3; i++)
2861 {
2862 ptr[i] = default(EventData);
2863 }
2864 GCHandle* ptr2 = stackalloc GCHandle[pinCount];
2865 for (int j = 0; j < pinCount; j++)
2866 {
2867 ptr2[j] = default(GCHandle);
2868 }
2871 {
2872 fixed (byte* pointer2 = nameInfo.nameMetadata)
2873 {
2874 fixed (byte* pointer3 = eventTypes.typeMetadata)
2875 {
2876 ptr->SetMetadata(pointer, providerMetadata.Length, 2);
2877 ptr[1].SetMetadata(pointer2, nameInfo.nameMetadata.Length, 1);
2878 ptr[2].SetMetadata(pointer3, eventTypes.typeMetadata.Length, 1);
2879 try
2880 {
2881 DataCollector.ThreadInstance.Enable(scratch, eventTypes.scratchSize, ptr + 3, eventTypes.dataCount, ptr2, pinCount);
2882 for (int k = 0; k < eventTypes.typeInfos.Length; k++)
2883 {
2884 TraceLoggingTypeInfo traceLoggingTypeInfo = eventTypes.typeInfos[k];
2885 traceLoggingTypeInfo.WriteData(traceLoggingTypeInfo.PropertyValueFactory(values[k]));
2886 }
2887 WriteEventRaw(eventName, ref eventDescriptor, orCreateEventHandle, activityID, childActivityID, (int)(DataCollector.ThreadInstance.Finish() - ptr), (IntPtr)ptr);
2888 }
2889 finally
2890 {
2891 WriteCleanup(ptr2, pinCount);
2892 }
2893 }
2894 }
2895 }
2896 }
readonly TraceLoggingEventHandleTable m_eventHandleTable
virtual ReadOnlySpan< byte > ProviderMetadata
volatile OverrideEventProvider m_eventPipeProvider
unsafe void WriteEventRaw(string eventName, ref EventDescriptor eventDescriptor, IntPtr eventHandle, Guid *activityID, Guid *relatedActivityID, int dataCount, IntPtr data)
static unsafe void WriteCleanup(GCHandle *pPins, int cPins)

References System.Diagnostics.Tracing.EventSource.m_eventHandleTable, System.Diagnostics.Tracing.EventSource.m_eventPipeProvider, System.options, System.pointer, System.Diagnostics.Tracing.EventSource.ProviderMetadata, System.Diagnostics.Tracing.DataCollector.ThreadInstance, System.values, System.Diagnostics.Tracing.EventSource.WriteCleanup(), and System.Diagnostics.Tracing.EventSource.WriteEventRaw().

Referenced by System.Diagnostics.Tracing.EventSource.WriteEventString(), and System.Diagnostics.Tracing.EventSource.WriteMultiMerge().