Terraria
v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
TraceLoggingMetadataCollector.cs
Go to the documentation of this file.
1
using
System.Collections.Generic
;
2
3
namespace
System.Diagnostics.Tracing
;
4
5
internal
sealed
class
TraceLoggingMetadataCollector
6
{
7
private
sealed
class
Impl
8
{
9
internal
readonly
List<FieldMetadata>
fields
=
new
List<FieldMetadata>
();
10
11
internal
short
scratchSize
;
12
13
internal
sbyte
dataCount
;
14
15
internal
sbyte
pinCount
;
16
17
private
int
bufferNesting
;
18
19
private
bool
scalar
;
20
21
public
void
AddScalar
(
int
size)
22
{
23
checked
24
{
25
if
(
bufferNesting
== 0)
26
{
27
if
(!
scalar
)
28
{
29
dataCount
++;
30
}
31
scalar
=
true
;
32
scratchSize
= (
short
)(
scratchSize
+ size);
33
}
34
}
35
}
36
37
public
void
AddNonscalar
()
38
{
39
checked
40
{
41
if
(
bufferNesting
== 0)
42
{
43
scalar
=
false
;
44
pinCount
++;
45
dataCount
++;
46
}
47
}
48
}
49
50
public
void
BeginBuffered
()
51
{
52
if
(
bufferNesting
== 0)
53
{
54
AddNonscalar
();
55
}
56
bufferNesting
++;
57
}
58
59
public
void
EndBuffered
()
60
{
61
bufferNesting
--;
62
}
63
64
public
int
Encode
(
byte
[] metadata)
65
{
66
int
pos = 0;
67
foreach
(
FieldMetadata
field
in
fields
)
68
{
69
field
.Encode(
ref
pos, metadata);
70
}
71
return
pos;
72
}
73
}
74
75
private
readonly
Impl
impl
;
76
77
private
readonly
FieldMetadata
currentGroup
;
78
79
private
int
bufferedArrayFieldCount
=
int
.MinValue;
80
81
internal
EventFieldTags
Tags
{
get
;
set
; }
82
83
internal
int
ScratchSize
=>
impl
.
scratchSize
;
84
85
internal
int
DataCount
=>
impl
.
dataCount
;
86
87
internal
int
PinCount
=>
impl
.
pinCount
;
88
89
private
bool
BeginningBufferedArray
=>
bufferedArrayFieldCount
== 0;
90
91
internal
TraceLoggingMetadataCollector
()
92
{
93
impl
=
new
Impl
();
94
}
95
96
private
TraceLoggingMetadataCollector
(
TraceLoggingMetadataCollector
other
,
FieldMetadata
group
)
97
{
98
impl
=
other
.impl;
99
currentGroup
=
group
;
100
}
101
102
public
TraceLoggingMetadataCollector
AddGroup
(
string
name)
103
{
104
TraceLoggingMetadataCollector
result =
this
;
105
if
(name !=
null
||
BeginningBufferedArray
)
106
{
107
FieldMetadata
fieldMetadata
=
new
FieldMetadata
(name,
TraceLoggingDataType
.Struct,
Tags
,
BeginningBufferedArray
);
108
AddField
(
fieldMetadata
);
109
result =
new
TraceLoggingMetadataCollector
(
this
,
fieldMetadata
);
110
}
111
return
result;
112
}
113
114
public
void
AddScalar
(
string
name,
TraceLoggingDataType
type
)
115
{
116
int
size;
117
switch
(
type
& (
TraceLoggingDataType
)31)
118
{
119
case
TraceLoggingDataType
.Int8:
120
case
TraceLoggingDataType
.UInt8:
121
case
TraceLoggingDataType
.Char8:
122
size = 1;
123
break
;
124
case
TraceLoggingDataType
.Int16:
125
case
TraceLoggingDataType
.UInt16:
126
case
TraceLoggingDataType
.Char16:
127
size = 2;
128
break
;
129
case
TraceLoggingDataType
.Int32:
130
case
TraceLoggingDataType
.UInt32:
131
case
TraceLoggingDataType
.Float:
132
case
TraceLoggingDataType
.Boolean32:
133
case
TraceLoggingDataType
.HexInt32:
134
size = 4;
135
break
;
136
case
TraceLoggingDataType
.Int64:
137
case
TraceLoggingDataType
.UInt64:
138
case
TraceLoggingDataType
.Double:
139
case
TraceLoggingDataType
.FileTime:
140
case
TraceLoggingDataType
.HexInt64:
141
size = 8;
142
break
;
143
case
TraceLoggingDataType
.Guid:
144
case
TraceLoggingDataType
.SystemTime:
145
size = 16;
146
break
;
147
default
:
148
throw
new
ArgumentOutOfRangeException
(
"type"
);
149
}
150
impl
.
AddScalar
(size);
151
AddField
(
new
FieldMetadata
(name,
type
,
Tags
,
BeginningBufferedArray
));
152
}
153
154
public
void
AddNullTerminatedString
(
string
name,
TraceLoggingDataType
type
)
155
{
156
TraceLoggingDataType
traceLoggingDataType
=
type
& (
TraceLoggingDataType
)31;
157
if
(
traceLoggingDataType
!=
TraceLoggingDataType
.Utf16String)
158
{
159
throw
new
ArgumentOutOfRangeException
(
"type"
);
160
}
161
impl
.
AddNonscalar
();
162
AddField
(
new
FieldMetadata
(name,
type
,
Tags
,
BeginningBufferedArray
));
163
}
164
165
public
void
AddArray
(
string
name,
TraceLoggingDataType
type
)
166
{
167
switch
(
type
& (
TraceLoggingDataType
)31)
168
{
169
default
:
170
throw
new
ArgumentOutOfRangeException
(
"type"
);
171
case
TraceLoggingDataType
.Int8:
172
case
TraceLoggingDataType
.UInt8:
173
case
TraceLoggingDataType
.Int16:
174
case
TraceLoggingDataType
.UInt16:
175
case
TraceLoggingDataType
.Int32:
176
case
TraceLoggingDataType
.UInt32:
177
case
TraceLoggingDataType
.Int64:
178
case
TraceLoggingDataType
.UInt64:
179
case
TraceLoggingDataType
.Float:
180
case
TraceLoggingDataType
.Double:
181
case
TraceLoggingDataType
.Boolean32:
182
case
TraceLoggingDataType
.Guid:
183
case
TraceLoggingDataType
.FileTime:
184
case
TraceLoggingDataType
.HexInt32:
185
case
TraceLoggingDataType
.HexInt64:
186
case
TraceLoggingDataType
.Char8:
187
case
TraceLoggingDataType
.Char16:
188
if
(
BeginningBufferedArray
)
189
{
190
throw
new
NotSupportedException
(
SR
.
EventSource_NotSupportedNestedArraysEnums
);
191
}
192
impl
.
AddScalar
(2);
193
impl
.
AddNonscalar
();
194
AddField
(
new
FieldMetadata
(name,
type
,
Tags
, variableCount:
true
));
195
break
;
196
}
197
}
198
199
public
void
BeginBufferedArray
()
200
{
201
if
(
bufferedArrayFieldCount
>= 0)
202
{
203
throw
new
NotSupportedException
(
SR
.
EventSource_NotSupportedNestedArraysEnums
);
204
}
205
bufferedArrayFieldCount
= 0;
206
impl
.
BeginBuffered
();
207
}
208
209
public
void
EndBufferedArray
()
210
{
211
if
(
bufferedArrayFieldCount
!= 1)
212
{
213
throw
new
InvalidOperationException
(
SR
.
EventSource_IncorrentlyAuthoredTypeInfo
);
214
}
215
bufferedArrayFieldCount
=
int
.MinValue;
216
impl
.
EndBuffered
();
217
}
218
219
internal
byte
[]
GetMetadata
()
220
{
221
int
num =
impl
.
Encode
(
null
);
222
byte
[]
array
=
new
byte
[num];
223
impl
.
Encode
(
array
);
224
return
array
;
225
}
226
227
private
void
AddField
(
FieldMetadata
fieldMetadata
)
228
{
229
Tags
=
EventFieldTags
.None;
230
bufferedArrayFieldCount
++;
231
impl
.
fields
.
Add
(
fieldMetadata
);
232
if
(
currentGroup
!=
null
)
233
{
234
currentGroup
.
IncrementStructFieldCount
();
235
}
236
}
237
}
System.ArgumentOutOfRangeException
Definition
ArgumentOutOfRangeException.cs:9
System.Collections.Generic.Dictionary.Add
void Add(TKey key, TValue value)
Definition
Dictionary.cs:873
System.Collections.Generic.Dictionary
Definition
Dictionary.cs:14
System.Diagnostics.Tracing.FieldMetadata.IncrementStructFieldCount
void IncrementStructFieldCount()
Definition
FieldMetadata.cs:64
System.Diagnostics.Tracing.FieldMetadata
Definition
FieldMetadata.cs:6
System.Diagnostics.Tracing.TraceLoggingMetadataCollector.Impl.scalar
bool scalar
Definition
TraceLoggingMetadataCollector.cs:19
System.Diagnostics.Tracing.TraceLoggingMetadataCollector.Impl.BeginBuffered
void BeginBuffered()
Definition
TraceLoggingMetadataCollector.cs:50
System.Diagnostics.Tracing.TraceLoggingMetadataCollector.Impl.scratchSize
short scratchSize
Definition
TraceLoggingMetadataCollector.cs:11
System.Diagnostics.Tracing.TraceLoggingMetadataCollector.Impl.bufferNesting
int bufferNesting
Definition
TraceLoggingMetadataCollector.cs:17
System.Diagnostics.Tracing.TraceLoggingMetadataCollector.Impl.dataCount
sbyte dataCount
Definition
TraceLoggingMetadataCollector.cs:13
System.Diagnostics.Tracing.TraceLoggingMetadataCollector.Impl.Encode
int Encode(byte[] metadata)
Definition
TraceLoggingMetadataCollector.cs:64
System.Diagnostics.Tracing.TraceLoggingMetadataCollector.Impl.AddNonscalar
void AddNonscalar()
Definition
TraceLoggingMetadataCollector.cs:37
System.Diagnostics.Tracing.TraceLoggingMetadataCollector.Impl.pinCount
sbyte pinCount
Definition
TraceLoggingMetadataCollector.cs:15
System.Diagnostics.Tracing.TraceLoggingMetadataCollector.Impl.EndBuffered
void EndBuffered()
Definition
TraceLoggingMetadataCollector.cs:59
System.Diagnostics.Tracing.TraceLoggingMetadataCollector.Impl.AddScalar
void AddScalar(int size)
Definition
TraceLoggingMetadataCollector.cs:21
System.Diagnostics.Tracing.TraceLoggingMetadataCollector.Impl.fields
readonly List< FieldMetadata > fields
Definition
TraceLoggingMetadataCollector.cs:9
System.Diagnostics.Tracing.TraceLoggingMetadataCollector.Impl
Definition
TraceLoggingMetadataCollector.cs:8
System.Diagnostics.Tracing.TraceLoggingMetadataCollector.AddNullTerminatedString
void AddNullTerminatedString(string name, TraceLoggingDataType type)
Definition
TraceLoggingMetadataCollector.cs:154
System.Diagnostics.Tracing.TraceLoggingMetadataCollector.TraceLoggingMetadataCollector
TraceLoggingMetadataCollector()
Definition
TraceLoggingMetadataCollector.cs:91
System.Diagnostics.Tracing.TraceLoggingMetadataCollector.AddGroup
TraceLoggingMetadataCollector AddGroup(string name)
Definition
TraceLoggingMetadataCollector.cs:102
System.Diagnostics.Tracing.TraceLoggingMetadataCollector.GetMetadata
byte[] GetMetadata()
Definition
TraceLoggingMetadataCollector.cs:219
System.Diagnostics.Tracing.TraceLoggingMetadataCollector.Tags
EventFieldTags Tags
Definition
TraceLoggingMetadataCollector.cs:81
System.Diagnostics.Tracing.TraceLoggingMetadataCollector.BeginBufferedArray
void BeginBufferedArray()
Definition
TraceLoggingMetadataCollector.cs:199
System.Diagnostics.Tracing.TraceLoggingMetadataCollector.AddArray
void AddArray(string name, TraceLoggingDataType type)
Definition
TraceLoggingMetadataCollector.cs:165
System.Diagnostics.Tracing.TraceLoggingMetadataCollector.BeginningBufferedArray
bool BeginningBufferedArray
Definition
TraceLoggingMetadataCollector.cs:89
System.Diagnostics.Tracing.TraceLoggingMetadataCollector.impl
readonly Impl impl
Definition
TraceLoggingMetadataCollector.cs:75
System.Diagnostics.Tracing.TraceLoggingMetadataCollector.DataCount
int DataCount
Definition
TraceLoggingMetadataCollector.cs:85
System.Diagnostics.Tracing.TraceLoggingMetadataCollector.currentGroup
readonly FieldMetadata currentGroup
Definition
TraceLoggingMetadataCollector.cs:77
System.Diagnostics.Tracing.TraceLoggingMetadataCollector.AddField
void AddField(FieldMetadata fieldMetadata)
Definition
TraceLoggingMetadataCollector.cs:227
System.Diagnostics.Tracing.TraceLoggingMetadataCollector.ScratchSize
int ScratchSize
Definition
TraceLoggingMetadataCollector.cs:83
System.Diagnostics.Tracing.TraceLoggingMetadataCollector.AddScalar
void AddScalar(string name, TraceLoggingDataType type)
Definition
TraceLoggingMetadataCollector.cs:114
System.Diagnostics.Tracing.TraceLoggingMetadataCollector.TraceLoggingMetadataCollector
TraceLoggingMetadataCollector(TraceLoggingMetadataCollector other, FieldMetadata group)
Definition
TraceLoggingMetadataCollector.cs:96
System.Diagnostics.Tracing.TraceLoggingMetadataCollector.bufferedArrayFieldCount
int bufferedArrayFieldCount
Definition
TraceLoggingMetadataCollector.cs:79
System.Diagnostics.Tracing.TraceLoggingMetadataCollector.EndBufferedArray
void EndBufferedArray()
Definition
TraceLoggingMetadataCollector.cs:209
System.Diagnostics.Tracing.TraceLoggingMetadataCollector.PinCount
int PinCount
Definition
TraceLoggingMetadataCollector.cs:87
System.Diagnostics.Tracing.TraceLoggingMetadataCollector
Definition
TraceLoggingMetadataCollector.cs:6
System.InvalidOperationException
Definition
InvalidOperationException.cs:9
System.NotSupportedException
Definition
NotSupportedException.cs:9
System.SR.EventSource_NotSupportedNestedArraysEnums
static string EventSource_NotSupportedNestedArraysEnums
Definition
SR.cs:1264
System.SR.EventSource_IncorrentlyAuthoredTypeInfo
static string EventSource_IncorrentlyAuthoredTypeInfo
Definition
SR.cs:1226
System.SR
Definition
SR.cs:7
short
System.Collections.Generic
Definition
IHashKeyCollection.cs:1
System.Diagnostics.Tracing.TraceLoggingDataType
TraceLoggingDataType
Definition
TraceLoggingDataType.cs:4
System.Diagnostics.Tracing.EventFieldTags
EventFieldTags
Definition
EventFieldTags.cs:5
System.Diagnostics.Tracing
Definition
ActivityTracker.cs:4
System.ExceptionArgument.type
@ type
System.ExceptionArgument.other
@ other
System.ExceptionArgument.array
@ array
source
System.Private.CoreLib
System.Diagnostics.Tracing
TraceLoggingMetadataCollector.cs
Generated by
1.10.0