@@ -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 ;
@@ -129,12 +129,12 @@ internal static int WriteScopeLogs(byte[] buffer, int writePosition, SdkLimitOpt
129
129
{
130
130
foreach ( KeyValuePair < string , List < LogRecord > > entry in scopeLogs )
131
131
{
132
- writePosition = ProtobufSerializer . WriteTag ( buffer , writePosition , ProtobufOtlpLogFieldNumberConstants . ResourceLogs_Scope_Logs , ProtobufWireType . LEN ) ;
132
+ writePosition + = ProtobufSerializer . WriteTag ( buffer . AsSpan ( writePosition ) , ProtobufOtlpLogFieldNumberConstants . ResourceLogs_Scope_Logs , ProtobufWireType . LEN ) ;
133
133
int resourceLogsScopeLogsLengthPosition = writePosition ;
134
134
writePosition += ReserveSizeForLength ;
135
135
136
136
writePosition = WriteScopeLog ( buffer , writePosition , sdkLimitOptions , experimentalOptions , entry . Value [ 0 ] . Logger . Name , entry . Value ) ;
137
- ProtobufSerializer . WriteReservedLength ( buffer , resourceLogsScopeLogsLengthPosition , writePosition - ( resourceLogsScopeLogsLengthPosition + ReserveSizeForLength ) ) ;
137
+ ProtobufSerializer . WriteReservedLength ( buffer . AsSpan ( resourceLogsScopeLogsLengthPosition ) , writePosition - ( resourceLogsScopeLogsLengthPosition + ReserveSizeForLength ) ) ;
138
138
}
139
139
}
140
140
@@ -148,8 +148,8 @@ internal static int WriteScopeLog(byte[] buffer, int writePosition, SdkLimitOpti
148
148
var serializedLengthSize = ProtobufSerializer . ComputeVarInt64Size ( ( ulong ) numberOfUtf8CharsInString ) ;
149
149
150
150
// 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 ) ;
151
+ writePosition + = ProtobufSerializer . WriteTagAndLength ( buffer . AsSpan ( writePosition ) , numberOfUtf8CharsInString + 1 + serializedLengthSize , ProtobufOtlpLogFieldNumberConstants . ScopeLogs_Scope , ProtobufWireType . LEN ) ;
152
+ writePosition + = ProtobufSerializer . WriteStringWithTag ( buffer . AsSpan ( writePosition ) , ProtobufOtlpCommonFieldNumberConstants . InstrumentationScope_Name , numberOfUtf8CharsInString , value ) ;
153
153
154
154
for ( int i = 0 ; i < logRecords . Count ; i ++ )
155
155
{
@@ -175,23 +175,23 @@ internal static int WriteLogRecord(byte[] buffer, int writePosition, SdkLimitOpt
175
175
176
176
ref var otlpTagWriterState = ref state . TagWriterState ;
177
177
178
- otlpTagWriterState . WritePosition = ProtobufSerializer . WriteTag ( otlpTagWriterState . Buffer , otlpTagWriterState . WritePosition , ProtobufOtlpLogFieldNumberConstants . ScopeLogs_Log_Records , ProtobufWireType . LEN ) ;
178
+ otlpTagWriterState . WritePosition + = ProtobufSerializer . WriteTag ( otlpTagWriterState . Buffer . AsSpan ( otlpTagWriterState . WritePosition ) , ProtobufOtlpLogFieldNumberConstants . ScopeLogs_Log_Records , ProtobufWireType . LEN ) ;
179
179
int logRecordLengthPosition = otlpTagWriterState . WritePosition ;
180
180
otlpTagWriterState . WritePosition += ReserveSizeForLength ;
181
181
182
182
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 ) ;
183
+ otlpTagWriterState . WritePosition + = ProtobufSerializer . WriteFixed64WithTag ( otlpTagWriterState . Buffer . AsSpan ( otlpTagWriterState . WritePosition ) , ProtobufOtlpLogFieldNumberConstants . LogRecord_Time_Unix_Nano , timestamp ) ;
184
+ otlpTagWriterState . WritePosition + = ProtobufSerializer . WriteFixed64WithTag ( otlpTagWriterState . Buffer . AsSpan ( otlpTagWriterState . WritePosition ) , ProtobufOtlpLogFieldNumberConstants . LogRecord_Observed_Time_Unix_Nano , timestamp ) ;
185
185
186
- otlpTagWriterState . WritePosition = ProtobufSerializer . WriteEnumWithTag ( otlpTagWriterState . Buffer , otlpTagWriterState . WritePosition , ProtobufOtlpLogFieldNumberConstants . LogRecord_Severity_Number , logRecord . Severity . HasValue ? ( int ) logRecord . Severity : 0 ) ;
186
+ otlpTagWriterState . WritePosition + = ProtobufSerializer . WriteEnumWithTag ( otlpTagWriterState . Buffer . AsSpan ( otlpTagWriterState . WritePosition ) , ProtobufOtlpLogFieldNumberConstants . LogRecord_Severity_Number , logRecord . Severity . HasValue ? ( int ) logRecord . Severity : 0 ) ;
187
187
188
188
if ( ! string . IsNullOrWhiteSpace ( logRecord . SeverityText ) )
189
189
{
190
- otlpTagWriterState . WritePosition = ProtobufSerializer . WriteStringWithTag ( otlpTagWriterState . Buffer , otlpTagWriterState . WritePosition , ProtobufOtlpLogFieldNumberConstants . LogRecord_Severity_Text , logRecord . SeverityText ! ) ;
190
+ otlpTagWriterState . WritePosition + = ProtobufSerializer . WriteStringWithTag ( otlpTagWriterState . Buffer . AsSpan ( otlpTagWriterState . WritePosition ) , ProtobufOtlpLogFieldNumberConstants . LogRecord_Severity_Text , logRecord . SeverityText ! ) ;
191
191
}
192
192
else if ( logRecord . Severity . HasValue )
193
193
{
194
- otlpTagWriterState . WritePosition = ProtobufSerializer . WriteStringWithTag ( otlpTagWriterState . Buffer , otlpTagWriterState . WritePosition , ProtobufOtlpLogFieldNumberConstants . LogRecord_Severity_Text , logRecord . Severity . Value . ToShortName ( ) ) ;
194
+ otlpTagWriterState . WritePosition + = ProtobufSerializer . WriteStringWithTag ( otlpTagWriterState . Buffer . AsSpan ( otlpTagWriterState . WritePosition ) , ProtobufOtlpLogFieldNumberConstants . LogRecord_Severity_Text , logRecord . Severity . Value . ToShortName ( ) ) ;
195
195
}
196
196
197
197
if ( experimentalOptions . EmitLogEventAttributes )
@@ -248,30 +248,29 @@ internal static int WriteLogRecord(byte[] buffer, int writePosition, SdkLimitOpt
248
248
249
249
if ( logRecord . TraceId != default && logRecord . SpanId != default )
250
250
{
251
- otlpTagWriterState . WritePosition = ProtobufSerializer . WriteTagAndLength ( otlpTagWriterState . Buffer , otlpTagWriterState . WritePosition , TraceIdSize , ProtobufOtlpLogFieldNumberConstants . LogRecord_Trace_Id , ProtobufWireType . LEN ) ;
251
+ otlpTagWriterState . WritePosition + = ProtobufSerializer . WriteTagAndLength ( otlpTagWriterState . Buffer . AsSpan ( otlpTagWriterState . WritePosition ) , TraceIdSize , ProtobufOtlpLogFieldNumberConstants . LogRecord_Trace_Id , ProtobufWireType . LEN ) ;
252
252
otlpTagWriterState . WritePosition = ProtobufOtlpTraceSerializer . WriteTraceId ( otlpTagWriterState . Buffer , otlpTagWriterState . WritePosition , logRecord . TraceId ) ;
253
253
254
- otlpTagWriterState . WritePosition = ProtobufSerializer . WriteTagAndLength ( otlpTagWriterState . Buffer , otlpTagWriterState . WritePosition , SpanIdSize , ProtobufOtlpLogFieldNumberConstants . LogRecord_Span_Id , ProtobufWireType . LEN ) ;
254
+ otlpTagWriterState . WritePosition + = ProtobufSerializer . WriteTagAndLength ( otlpTagWriterState . Buffer . AsSpan ( otlpTagWriterState . WritePosition ) , SpanIdSize , ProtobufOtlpLogFieldNumberConstants . LogRecord_Span_Id , ProtobufWireType . LEN ) ;
255
255
otlpTagWriterState . WritePosition = ProtobufOtlpTraceSerializer . WriteSpanId ( otlpTagWriterState . Buffer , otlpTagWriterState . WritePosition , logRecord . SpanId ) ;
256
256
257
- otlpTagWriterState . WritePosition = ProtobufSerializer . WriteFixed32WithTag ( otlpTagWriterState . Buffer , otlpTagWriterState . WritePosition , ProtobufOtlpLogFieldNumberConstants . LogRecord_Flags , ( uint ) logRecord . TraceFlags ) ;
257
+ otlpTagWriterState . WritePosition + = ProtobufSerializer . WriteFixed32WithTag ( otlpTagWriterState . Buffer . AsSpan ( otlpTagWriterState . WritePosition ) , ProtobufOtlpLogFieldNumberConstants . LogRecord_Flags , ( uint ) logRecord . TraceFlags ) ;
258
258
}
259
259
260
260
if ( logRecord . EventId . Name != null )
261
261
{
262
- otlpTagWriterState . WritePosition = ProtobufSerializer . WriteStringWithTag ( otlpTagWriterState . Buffer , otlpTagWriterState . WritePosition , ProtobufOtlpLogFieldNumberConstants . LogRecord_Event_Name , logRecord . EventId . Name ! ) ;
262
+ otlpTagWriterState . WritePosition + = ProtobufSerializer . WriteStringWithTag ( otlpTagWriterState . Buffer . AsSpan ( otlpTagWriterState . WritePosition ) , ProtobufOtlpLogFieldNumberConstants . LogRecord_Event_Name , logRecord . EventId . Name ! ) ;
263
263
}
264
264
265
265
logRecord . ForEachScope ( ProcessScope , state ) ;
266
266
267
267
if ( otlpTagWriterState . DroppedTagCount > 0 )
268
268
{
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 ) ;
269
+ otlpTagWriterState . WritePosition + = ProtobufSerializer . WriteTag ( buffer . AsSpan ( otlpTagWriterState . WritePosition ) , ProtobufOtlpLogFieldNumberConstants . LogRecord_Dropped_Attributes_Count , ProtobufWireType . VARINT ) ;
270
+ otlpTagWriterState . WritePosition + = ProtobufSerializer . WriteVarInt32 ( buffer . AsSpan ( otlpTagWriterState . WritePosition ) , ( uint ) otlpTagWriterState . DroppedTagCount ) ;
271
271
}
272
272
273
- ProtobufSerializer . WriteReservedLength ( otlpTagWriterState . Buffer , logRecordLengthPosition , otlpTagWriterState . WritePosition - ( logRecordLengthPosition + ReserveSizeForLength ) ) ;
274
-
273
+ ProtobufSerializer . WriteReservedLength ( otlpTagWriterState . Buffer . AsSpan ( logRecordLengthPosition ) , otlpTagWriterState . WritePosition - ( logRecordLengthPosition + ReserveSizeForLength ) ) ;
275
274
return otlpTagWriterState . WritePosition ;
276
275
277
276
static void ProcessScope ( LogRecordScope scope , SerializationState state )
@@ -314,8 +313,9 @@ private static int WriteLogRecordBody(byte[] buffer, int writePosition, ReadOnly
314
313
var serializedLengthSize = ProtobufSerializer . ComputeVarInt64Size ( ( ulong ) numberOfUtf8CharsInString ) ;
315
314
316
315
// 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 ) ;
316
+
317
+ writePosition += ProtobufSerializer . WriteTagAndLength ( buffer . AsSpan ( writePosition ) , numberOfUtf8CharsInString + 1 + serializedLengthSize , ProtobufOtlpLogFieldNumberConstants . LogRecord_Body , ProtobufWireType . LEN ) ;
318
+ writePosition += ProtobufSerializer . WriteStringWithTag ( buffer . AsSpan ( writePosition ) , ProtobufOtlpCommonFieldNumberConstants . AnyValue_String_Value , numberOfUtf8CharsInString , value ) ;
319
319
return writePosition ;
320
320
}
321
321
@@ -332,14 +332,14 @@ private static void AddLogAttribute(SerializationState state, string key, object
332
332
}
333
333
else
334
334
{
335
- state . TagWriterState . WritePosition = ProtobufSerializer . WriteTag ( state . TagWriterState . Buffer , state . TagWriterState . WritePosition , ProtobufOtlpLogFieldNumberConstants . LogRecord_Attributes , ProtobufWireType . LEN ) ;
335
+ state . TagWriterState . WritePosition + = ProtobufSerializer . WriteTag ( state . TagWriterState . Buffer . AsSpan ( state . TagWriterState . WritePosition ) , ProtobufOtlpLogFieldNumberConstants . LogRecord_Attributes , ProtobufWireType . LEN ) ;
336
336
int logAttributesLengthPosition = state . TagWriterState . WritePosition ;
337
337
state . TagWriterState . WritePosition += ReserveSizeForLength ;
338
338
339
339
ProtobufOtlpTagWriter . Instance . TryWriteTag ( ref state . TagWriterState , key , value , state . AttributeValueLengthLimit ) ;
340
340
341
341
var logAttributesLength = state . TagWriterState . WritePosition - ( logAttributesLengthPosition + ReserveSizeForLength ) ;
342
- ProtobufSerializer . WriteReservedLength ( state . TagWriterState . Buffer , logAttributesLengthPosition , logAttributesLength ) ;
342
+ ProtobufSerializer . WriteReservedLength ( state . TagWriterState . Buffer . AsSpan ( logAttributesLengthPosition ) , logAttributesLength ) ;
343
343
state . TagWriterState . TagCount ++ ;
344
344
}
345
345
}
0 commit comments