@@ -62,13 +62,13 @@ internal static int TryWriteResourceLogs(ref byte[] buffer, int writePosition, S
62
62
63
63
try
64
64
{
65
- writePosition = ProtobufSerializer . WriteTag ( buffer , writePosition , ProtobufOtlpLogFieldNumberConstants . LogsData_Resource_Logs , ProtobufWireType . LEN ) ;
65
+ writePosition + = ProtobufSerializer . WriteTag ( buffer . AsSpan ( writePosition ) , ProtobufOtlpLogFieldNumberConstants . LogsData_Resource_Logs , ProtobufWireType . LEN ) ;
66
66
int logsDataLengthPosition = writePosition ;
67
67
writePosition += ReserveSizeForLength ;
68
68
69
69
writePosition = WriteResourceLogs ( buffer , writePosition , sdkLimitOptions , experimentalOptions , resource , scopeLogs ) ;
70
70
71
- ProtobufSerializer . WriteReservedLength ( buffer , logsDataLengthPosition , writePosition - ( logsDataLengthPosition + ReserveSizeForLength ) ) ;
71
+ ProtobufSerializer . WriteReservedLength ( buffer . AsSpan ( logsDataLengthPosition ) , writePosition - ( logsDataLengthPosition + ReserveSizeForLength ) ) ;
72
72
73
73
// Serialization succeeded, return the final write position
74
74
return writePosition ;
@@ -77,7 +77,6 @@ internal static int TryWriteResourceLogs(ref byte[] buffer, int writePosition, S
77
77
{
78
78
// Reset write position and attempt to increase the buffer size
79
79
writePosition = entryWritePosition ;
80
-
81
80
if ( ! ProtobufSerializer . IncreaseBufferSize ( ref buffer , OtlpSignalType . Logs ) )
82
81
{
83
82
throw ;
@@ -129,12 +128,12 @@ internal static int WriteScopeLogs(byte[] buffer, int writePosition, SdkLimitOpt
129
128
{
130
129
foreach ( KeyValuePair < string , List < LogRecord > > entry in scopeLogs )
131
130
{
132
- writePosition = ProtobufSerializer . WriteTag ( buffer , writePosition , ProtobufOtlpLogFieldNumberConstants . ResourceLogs_Scope_Logs , ProtobufWireType . LEN ) ;
131
+ writePosition + = ProtobufSerializer . WriteTag ( buffer . AsSpan ( writePosition ) , ProtobufOtlpLogFieldNumberConstants . ResourceLogs_Scope_Logs , ProtobufWireType . LEN ) ;
133
132
int resourceLogsScopeLogsLengthPosition = writePosition ;
134
133
writePosition += ReserveSizeForLength ;
135
134
136
135
writePosition = WriteScopeLog ( buffer , writePosition , sdkLimitOptions , experimentalOptions , entry . Value [ 0 ] . Logger . Name , entry . Value ) ;
137
- ProtobufSerializer . WriteReservedLength ( buffer , resourceLogsScopeLogsLengthPosition , writePosition - ( resourceLogsScopeLogsLengthPosition + ReserveSizeForLength ) ) ;
136
+ ProtobufSerializer . WriteReservedLength ( buffer . AsSpan ( resourceLogsScopeLogsLengthPosition ) , writePosition - ( resourceLogsScopeLogsLengthPosition + ReserveSizeForLength ) ) ;
138
137
}
139
138
}
140
139
@@ -148,14 +147,13 @@ internal static int WriteScopeLog(byte[] buffer, int writePosition, SdkLimitOpti
148
147
var serializedLengthSize = ProtobufSerializer . ComputeVarInt64Size ( ( ulong ) numberOfUtf8CharsInString ) ;
149
148
150
149
// numberOfUtf8CharsInString + tagSize + length field size.
151
- writePosition = ProtobufSerializer . WriteTagAndLength ( buffer , writePosition , numberOfUtf8CharsInString + 1 + serializedLengthSize , ProtobufOtlpLogFieldNumberConstants . ScopeLogs_Scope , ProtobufWireType . LEN ) ;
152
- writePosition = ProtobufSerializer . WriteStringWithTag ( buffer , writePosition , ProtobufOtlpCommonFieldNumberConstants . InstrumentationScope_Name , numberOfUtf8CharsInString , value ) ;
150
+ writePosition + = ProtobufSerializer . WriteTagAndLength ( buffer . AsSpan ( writePosition ) , numberOfUtf8CharsInString + 1 + serializedLengthSize , ProtobufOtlpLogFieldNumberConstants . ScopeLogs_Scope , ProtobufWireType . LEN ) ;
151
+ writePosition + = ProtobufSerializer . WriteStringWithTag ( buffer . AsSpan ( writePosition ) , ProtobufOtlpCommonFieldNumberConstants . InstrumentationScope_Name , numberOfUtf8CharsInString , value ) ;
153
152
154
153
for ( int i = 0 ; i < logRecords . Count ; i ++ )
155
154
{
156
155
writePosition = WriteLogRecord ( buffer , writePosition , sdkLimitOptions , experimentalOptions , logRecords [ i ] ) ;
157
156
}
158
-
159
157
return writePosition ;
160
158
}
161
159
@@ -175,23 +173,23 @@ internal static int WriteLogRecord(byte[] buffer, int writePosition, SdkLimitOpt
175
173
176
174
ref var otlpTagWriterState = ref state . TagWriterState ;
177
175
178
- otlpTagWriterState . WritePosition = ProtobufSerializer . WriteTag ( otlpTagWriterState . Buffer , otlpTagWriterState . WritePosition , ProtobufOtlpLogFieldNumberConstants . ScopeLogs_Log_Records , ProtobufWireType . LEN ) ;
176
+ otlpTagWriterState . WritePosition + = ProtobufSerializer . WriteTag ( otlpTagWriterState . Buffer . AsSpan ( otlpTagWriterState . WritePosition ) , ProtobufOtlpLogFieldNumberConstants . ScopeLogs_Log_Records , ProtobufWireType . LEN ) ;
179
177
int logRecordLengthPosition = otlpTagWriterState . WritePosition ;
180
178
otlpTagWriterState . WritePosition += ReserveSizeForLength ;
181
179
182
180
var timestamp = ( ulong ) logRecord . Timestamp . ToUnixTimeNanoseconds ( ) ;
183
- otlpTagWriterState . WritePosition = ProtobufSerializer . WriteFixed64WithTag ( otlpTagWriterState . Buffer , otlpTagWriterState . WritePosition , ProtobufOtlpLogFieldNumberConstants . LogRecord_Time_Unix_Nano , timestamp ) ;
184
- otlpTagWriterState . WritePosition = ProtobufSerializer . WriteFixed64WithTag ( otlpTagWriterState . Buffer , otlpTagWriterState . WritePosition , ProtobufOtlpLogFieldNumberConstants . LogRecord_Observed_Time_Unix_Nano , timestamp ) ;
181
+ otlpTagWriterState . WritePosition + = ProtobufSerializer . WriteFixed64WithTag ( otlpTagWriterState . Buffer . AsSpan ( otlpTagWriterState . WritePosition ) , ProtobufOtlpLogFieldNumberConstants . LogRecord_Time_Unix_Nano , timestamp ) ;
182
+ otlpTagWriterState . WritePosition + = ProtobufSerializer . WriteFixed64WithTag ( otlpTagWriterState . Buffer . AsSpan ( otlpTagWriterState . WritePosition ) , ProtobufOtlpLogFieldNumberConstants . LogRecord_Observed_Time_Unix_Nano , timestamp ) ;
185
183
186
- otlpTagWriterState . WritePosition = ProtobufSerializer . WriteEnumWithTag ( otlpTagWriterState . Buffer , otlpTagWriterState . WritePosition , ProtobufOtlpLogFieldNumberConstants . LogRecord_Severity_Number , logRecord . Severity . HasValue ? ( int ) logRecord . Severity : 0 ) ;
184
+ otlpTagWriterState . WritePosition + = ProtobufSerializer . WriteEnumWithTag ( otlpTagWriterState . Buffer . AsSpan ( otlpTagWriterState . WritePosition ) , ProtobufOtlpLogFieldNumberConstants . LogRecord_Severity_Number , logRecord . Severity . HasValue ? ( int ) logRecord . Severity : 0 ) ;
187
185
188
186
if ( ! string . IsNullOrWhiteSpace ( logRecord . SeverityText ) )
189
187
{
190
- otlpTagWriterState . WritePosition = ProtobufSerializer . WriteStringWithTag ( otlpTagWriterState . Buffer , otlpTagWriterState . WritePosition , ProtobufOtlpLogFieldNumberConstants . LogRecord_Severity_Text , logRecord . SeverityText ! ) ;
188
+ otlpTagWriterState . WritePosition + = ProtobufSerializer . WriteStringWithTag ( otlpTagWriterState . Buffer . AsSpan ( otlpTagWriterState . WritePosition ) , ProtobufOtlpLogFieldNumberConstants . LogRecord_Severity_Text , logRecord . SeverityText ! ) ;
191
189
}
192
190
else if ( logRecord . Severity . HasValue )
193
191
{
194
- otlpTagWriterState . WritePosition = ProtobufSerializer . WriteStringWithTag ( otlpTagWriterState . Buffer , otlpTagWriterState . WritePosition , ProtobufOtlpLogFieldNumberConstants . LogRecord_Severity_Text , logRecord . Severity . Value . ToShortName ( ) ) ;
192
+ otlpTagWriterState . WritePosition + = ProtobufSerializer . WriteStringWithTag ( otlpTagWriterState . Buffer . AsSpan ( otlpTagWriterState . WritePosition ) , ProtobufOtlpLogFieldNumberConstants . LogRecord_Severity_Text , logRecord . Severity . Value . ToShortName ( ) ) ;
195
193
}
196
194
197
195
if ( experimentalOptions . EmitLogEventAttributes )
@@ -248,30 +246,29 @@ internal static int WriteLogRecord(byte[] buffer, int writePosition, SdkLimitOpt
248
246
249
247
if ( logRecord . TraceId != default && logRecord . SpanId != default )
250
248
{
251
- otlpTagWriterState . WritePosition = ProtobufSerializer . WriteTagAndLength ( otlpTagWriterState . Buffer , otlpTagWriterState . WritePosition , TraceIdSize , ProtobufOtlpLogFieldNumberConstants . LogRecord_Trace_Id , ProtobufWireType . LEN ) ;
249
+ otlpTagWriterState . WritePosition + = ProtobufSerializer . WriteTagAndLength ( otlpTagWriterState . Buffer . AsSpan ( otlpTagWriterState . WritePosition ) , TraceIdSize , ProtobufOtlpLogFieldNumberConstants . LogRecord_Trace_Id , ProtobufWireType . LEN ) ;
252
250
otlpTagWriterState . WritePosition = ProtobufOtlpTraceSerializer . WriteTraceId ( otlpTagWriterState . Buffer , otlpTagWriterState . WritePosition , logRecord . TraceId ) ;
253
251
254
- otlpTagWriterState . WritePosition = ProtobufSerializer . WriteTagAndLength ( otlpTagWriterState . Buffer , otlpTagWriterState . WritePosition , SpanIdSize , ProtobufOtlpLogFieldNumberConstants . LogRecord_Span_Id , ProtobufWireType . LEN ) ;
252
+ otlpTagWriterState . WritePosition + = ProtobufSerializer . WriteTagAndLength ( otlpTagWriterState . Buffer . AsSpan ( otlpTagWriterState . WritePosition ) , SpanIdSize , ProtobufOtlpLogFieldNumberConstants . LogRecord_Span_Id , ProtobufWireType . LEN ) ;
255
253
otlpTagWriterState . WritePosition = ProtobufOtlpTraceSerializer . WriteSpanId ( otlpTagWriterState . Buffer , otlpTagWriterState . WritePosition , logRecord . SpanId ) ;
256
254
257
- otlpTagWriterState . WritePosition = ProtobufSerializer . WriteFixed32WithTag ( otlpTagWriterState . Buffer , otlpTagWriterState . WritePosition , ProtobufOtlpLogFieldNumberConstants . LogRecord_Flags , ( uint ) logRecord . TraceFlags ) ;
255
+ otlpTagWriterState . WritePosition + = ProtobufSerializer . WriteFixed32WithTag ( otlpTagWriterState . Buffer . AsSpan ( otlpTagWriterState . WritePosition ) , ProtobufOtlpLogFieldNumberConstants . LogRecord_Flags , ( uint ) logRecord . TraceFlags ) ;
258
256
}
259
257
260
258
if ( logRecord . EventId . Name != null )
261
259
{
262
- otlpTagWriterState . WritePosition = ProtobufSerializer . WriteStringWithTag ( otlpTagWriterState . Buffer , otlpTagWriterState . WritePosition , ProtobufOtlpLogFieldNumberConstants . LogRecord_Event_Name , logRecord . EventId . Name ! ) ;
260
+ otlpTagWriterState . WritePosition + = ProtobufSerializer . WriteStringWithTag ( otlpTagWriterState . Buffer . AsSpan ( otlpTagWriterState . WritePosition ) , ProtobufOtlpLogFieldNumberConstants . LogRecord_Event_Name , logRecord . EventId . Name ! ) ;
263
261
}
264
262
265
263
logRecord . ForEachScope ( ProcessScope , state ) ;
266
264
267
265
if ( otlpTagWriterState . DroppedTagCount > 0 )
268
266
{
269
- otlpTagWriterState . WritePosition = ProtobufSerializer . WriteTag ( buffer , otlpTagWriterState . WritePosition , ProtobufOtlpLogFieldNumberConstants . LogRecord_Dropped_Attributes_Count , ProtobufWireType . VARINT ) ;
270
- otlpTagWriterState . WritePosition = ProtobufSerializer . WriteVarInt32 ( buffer , otlpTagWriterState . WritePosition , ( uint ) otlpTagWriterState . DroppedTagCount ) ;
267
+ otlpTagWriterState . WritePosition + = ProtobufSerializer . WriteTag ( buffer . AsSpan ( otlpTagWriterState . WritePosition ) , ProtobufOtlpLogFieldNumberConstants . LogRecord_Dropped_Attributes_Count , ProtobufWireType . VARINT ) ;
268
+ otlpTagWriterState . WritePosition + = ProtobufSerializer . WriteVarInt32 ( buffer . AsSpan ( otlpTagWriterState . WritePosition ) , ( uint ) otlpTagWriterState . DroppedTagCount ) ;
271
269
}
272
270
273
- ProtobufSerializer . WriteReservedLength ( otlpTagWriterState . Buffer , logRecordLengthPosition , otlpTagWriterState . WritePosition - ( logRecordLengthPosition + ReserveSizeForLength ) ) ;
274
-
271
+ ProtobufSerializer . WriteReservedLength ( otlpTagWriterState . Buffer . AsSpan ( logRecordLengthPosition ) , otlpTagWriterState . WritePosition - ( logRecordLengthPosition + ReserveSizeForLength ) ) ;
275
272
return otlpTagWriterState . WritePosition ;
276
273
277
274
static void ProcessScope ( LogRecordScope scope , SerializationState state )
@@ -312,10 +309,9 @@ private static int WriteLogRecordBody(byte[] buffer, int writePosition, ReadOnly
312
309
{
313
310
var numberOfUtf8CharsInString = ProtobufSerializer . GetNumberOfUtf8CharsInString ( value ) ;
314
311
var serializedLengthSize = ProtobufSerializer . ComputeVarInt64Size ( ( ulong ) numberOfUtf8CharsInString ) ;
315
-
316
312
// length = numberOfUtf8CharsInString + tagSize + length field size.
317
- writePosition = ProtobufSerializer . WriteTagAndLength ( buffer , writePosition , numberOfUtf8CharsInString + 1 + serializedLengthSize , ProtobufOtlpLogFieldNumberConstants . LogRecord_Body , ProtobufWireType . LEN ) ;
318
- writePosition = ProtobufSerializer . WriteStringWithTag ( buffer , writePosition , ProtobufOtlpCommonFieldNumberConstants . AnyValue_String_Value , numberOfUtf8CharsInString , value ) ;
313
+ writePosition + = ProtobufSerializer . WriteTagAndLength ( buffer . AsSpan ( writePosition ) , numberOfUtf8CharsInString + 1 + serializedLengthSize , ProtobufOtlpLogFieldNumberConstants . LogRecord_Body , ProtobufWireType . LEN ) ;
314
+ writePosition + = ProtobufSerializer . WriteStringWithTag ( buffer . AsSpan ( writePosition ) , ProtobufOtlpCommonFieldNumberConstants . AnyValue_String_Value , numberOfUtf8CharsInString , value ) ;
319
315
return writePosition ;
320
316
}
321
317
@@ -332,14 +328,14 @@ private static void AddLogAttribute(SerializationState state, string key, object
332
328
}
333
329
else
334
330
{
335
- state . TagWriterState . WritePosition = ProtobufSerializer . WriteTag ( state . TagWriterState . Buffer , state . TagWriterState . WritePosition , ProtobufOtlpLogFieldNumberConstants . LogRecord_Attributes , ProtobufWireType . LEN ) ;
331
+ state . TagWriterState . WritePosition + = ProtobufSerializer . WriteTag ( state . TagWriterState . Buffer . AsSpan ( state . TagWriterState . WritePosition ) , ProtobufOtlpLogFieldNumberConstants . LogRecord_Attributes , ProtobufWireType . LEN ) ;
336
332
int logAttributesLengthPosition = state . TagWriterState . WritePosition ;
337
333
state . TagWriterState . WritePosition += ReserveSizeForLength ;
338
334
339
335
ProtobufOtlpTagWriter . Instance . TryWriteTag ( ref state . TagWriterState , key , value , state . AttributeValueLengthLimit ) ;
340
336
341
337
var logAttributesLength = state . TagWriterState . WritePosition - ( logAttributesLengthPosition + ReserveSizeForLength ) ;
342
- ProtobufSerializer . WriteReservedLength ( state . TagWriterState . Buffer , logAttributesLengthPosition , logAttributesLength ) ;
338
+ ProtobufSerializer . WriteReservedLength ( state . TagWriterState . Buffer . AsSpan ( logAttributesLengthPosition ) , logAttributesLength ) ;
343
339
state . TagWriterState . TagCount ++ ;
344
340
}
345
341
}
0 commit comments