@@ -60,13 +60,12 @@ internal static int TryWriteResourceLogs(ref byte[] buffer, int writePosition, S
60
60
61
61
try
62
62
{
63
- writePosition = ProtobufSerializer . WriteTag ( buffer , writePosition , ProtobufOtlpLogFieldNumberConstants . LogsData_Resource_Logs , ProtobufWireType . LEN ) ;
63
+ writePosition + = ProtobufSerializer . WriteTag ( buffer . AsSpan ( writePosition ) , ProtobufOtlpLogFieldNumberConstants . LogsData_Resource_Logs , ProtobufWireType . LEN ) ;
64
64
int logsDataLengthPosition = writePosition ;
65
65
writePosition += ReserveSizeForLength ;
66
66
67
67
writePosition = WriteResourceLogs ( buffer , writePosition , sdkLimitOptions , experimentalOptions , resource , scopeLogs ) ;
68
-
69
- ProtobufSerializer . WriteReservedLength ( buffer , logsDataLengthPosition , writePosition - ( logsDataLengthPosition + ReserveSizeForLength ) ) ;
68
+ ProtobufSerializer . WriteReservedLength ( buffer . AsSpan ( logsDataLengthPosition ) , writePosition - ( logsDataLengthPosition + ReserveSizeForLength ) ) ;
70
69
}
71
70
catch ( Exception ex ) when ( ex is IndexOutOfRangeException || ex is ArgumentException )
72
71
{
@@ -121,12 +120,12 @@ internal static int WriteScopeLogs(byte[] buffer, int writePosition, SdkLimitOpt
121
120
{
122
121
foreach ( KeyValuePair < string , List < LogRecord > > entry in scopeLogs )
123
122
{
124
- writePosition = ProtobufSerializer . WriteTag ( buffer , writePosition , ProtobufOtlpLogFieldNumberConstants . ResourceLogs_Scope_Logs , ProtobufWireType . LEN ) ;
123
+ writePosition + = ProtobufSerializer . WriteTag ( buffer . AsSpan ( writePosition ) , ProtobufOtlpLogFieldNumberConstants . ResourceLogs_Scope_Logs , ProtobufWireType . LEN ) ;
125
124
int resourceLogsScopeLogsLengthPosition = writePosition ;
126
125
writePosition += ReserveSizeForLength ;
127
126
128
127
writePosition = WriteScopeLog ( buffer , writePosition , sdkLimitOptions , experimentalOptions , entry . Value [ 0 ] . Logger . Name , entry . Value ) ;
129
- ProtobufSerializer . WriteReservedLength ( buffer , resourceLogsScopeLogsLengthPosition , writePosition - ( resourceLogsScopeLogsLengthPosition + ReserveSizeForLength ) ) ;
128
+ ProtobufSerializer . WriteReservedLength ( buffer . AsSpan ( resourceLogsScopeLogsLengthPosition ) , writePosition - ( resourceLogsScopeLogsLengthPosition + ReserveSizeForLength ) ) ;
130
129
}
131
130
}
132
131
@@ -140,14 +139,13 @@ internal static int WriteScopeLog(byte[] buffer, int writePosition, SdkLimitOpti
140
139
var serializedLengthSize = ProtobufSerializer . ComputeVarInt64Size ( ( ulong ) numberOfUtf8CharsInString ) ;
141
140
142
141
// numberOfUtf8CharsInString + tagSize + length field size.
143
- writePosition = ProtobufSerializer . WriteTagAndLength ( buffer , writePosition , numberOfUtf8CharsInString + 1 + serializedLengthSize , ProtobufOtlpLogFieldNumberConstants . ScopeLogs_Scope , ProtobufWireType . LEN ) ;
144
- writePosition = ProtobufSerializer . WriteStringWithTag ( buffer , writePosition , ProtobufOtlpCommonFieldNumberConstants . InstrumentationScope_Name , numberOfUtf8CharsInString , value ) ;
142
+ writePosition + = ProtobufSerializer . WriteTagAndLength ( buffer . AsSpan ( writePosition ) , numberOfUtf8CharsInString + 1 + serializedLengthSize , ProtobufOtlpLogFieldNumberConstants . ScopeLogs_Scope , ProtobufWireType . LEN ) ;
143
+ writePosition + = ProtobufSerializer . WriteStringWithTag ( buffer . AsSpan ( writePosition ) , ProtobufOtlpCommonFieldNumberConstants . InstrumentationScope_Name , numberOfUtf8CharsInString , value ) ;
145
144
146
145
for ( int i = 0 ; i < logRecords . Count ; i ++ )
147
146
{
148
147
writePosition = WriteLogRecord ( buffer , writePosition , sdkLimitOptions , experimentalOptions , logRecords [ i ] ) ;
149
148
}
150
-
151
149
return writePosition ;
152
150
}
153
151
@@ -167,23 +165,23 @@ internal static int WriteLogRecord(byte[] buffer, int writePosition, SdkLimitOpt
167
165
168
166
ref var otlpTagWriterState = ref state . TagWriterState ;
169
167
170
- otlpTagWriterState . WritePosition = ProtobufSerializer . WriteTag ( otlpTagWriterState . Buffer , otlpTagWriterState . WritePosition , ProtobufOtlpLogFieldNumberConstants . ScopeLogs_Log_Records , ProtobufWireType . LEN ) ;
168
+ otlpTagWriterState . WritePosition + = ProtobufSerializer . WriteTag ( otlpTagWriterState . Buffer . AsSpan ( otlpTagWriterState . WritePosition ) , ProtobufOtlpLogFieldNumberConstants . ScopeLogs_Log_Records , ProtobufWireType . LEN ) ;
171
169
int logRecordLengthPosition = otlpTagWriterState . WritePosition ;
172
170
otlpTagWriterState . WritePosition += ReserveSizeForLength ;
173
171
174
172
var timestamp = ( ulong ) logRecord . Timestamp . ToUnixTimeNanoseconds ( ) ;
175
- otlpTagWriterState . WritePosition = ProtobufSerializer . WriteFixed64WithTag ( otlpTagWriterState . Buffer , otlpTagWriterState . WritePosition , ProtobufOtlpLogFieldNumberConstants . LogRecord_Time_Unix_Nano , timestamp ) ;
176
- otlpTagWriterState . WritePosition = ProtobufSerializer . WriteFixed64WithTag ( otlpTagWriterState . Buffer , otlpTagWriterState . WritePosition , ProtobufOtlpLogFieldNumberConstants . LogRecord_Observed_Time_Unix_Nano , timestamp ) ;
173
+ otlpTagWriterState . WritePosition + = ProtobufSerializer . WriteFixed64WithTag ( otlpTagWriterState . Buffer . AsSpan ( otlpTagWriterState . WritePosition ) , ProtobufOtlpLogFieldNumberConstants . LogRecord_Time_Unix_Nano , timestamp ) ;
174
+ otlpTagWriterState . WritePosition + = ProtobufSerializer . WriteFixed64WithTag ( otlpTagWriterState . Buffer . AsSpan ( otlpTagWriterState . WritePosition ) , ProtobufOtlpLogFieldNumberConstants . LogRecord_Observed_Time_Unix_Nano , timestamp ) ;
177
175
178
- otlpTagWriterState . WritePosition = ProtobufSerializer . WriteEnumWithTag ( otlpTagWriterState . Buffer , otlpTagWriterState . WritePosition , ProtobufOtlpLogFieldNumberConstants . LogRecord_Severity_Number , logRecord . Severity . HasValue ? ( int ) logRecord . Severity : 0 ) ;
176
+ otlpTagWriterState . WritePosition + = ProtobufSerializer . WriteEnumWithTag ( otlpTagWriterState . Buffer . AsSpan ( otlpTagWriterState . WritePosition ) , ProtobufOtlpLogFieldNumberConstants . LogRecord_Severity_Number , logRecord . Severity . HasValue ? ( int ) logRecord . Severity : 0 ) ;
179
177
180
178
if ( ! string . IsNullOrWhiteSpace ( logRecord . SeverityText ) )
181
179
{
182
- otlpTagWriterState . WritePosition = ProtobufSerializer . WriteStringWithTag ( otlpTagWriterState . Buffer , otlpTagWriterState . WritePosition , ProtobufOtlpLogFieldNumberConstants . LogRecord_Severity_Text , logRecord . SeverityText ! ) ;
180
+ otlpTagWriterState . WritePosition + = ProtobufSerializer . WriteStringWithTag ( otlpTagWriterState . Buffer . AsSpan ( otlpTagWriterState . WritePosition ) , ProtobufOtlpLogFieldNumberConstants . LogRecord_Severity_Text , logRecord . SeverityText ! ) ;
183
181
}
184
182
else if ( logRecord . Severity . HasValue )
185
183
{
186
- otlpTagWriterState . WritePosition = ProtobufSerializer . WriteStringWithTag ( otlpTagWriterState . Buffer , otlpTagWriterState . WritePosition , ProtobufOtlpLogFieldNumberConstants . LogRecord_Severity_Text , logRecord . Severity . Value . ToShortName ( ) ) ;
184
+ otlpTagWriterState . WritePosition + = ProtobufSerializer . WriteStringWithTag ( otlpTagWriterState . Buffer . AsSpan ( otlpTagWriterState . WritePosition ) , ProtobufOtlpLogFieldNumberConstants . LogRecord_Severity_Text , logRecord . Severity . Value . ToShortName ( ) ) ;
187
185
}
188
186
189
187
if ( experimentalOptions . EmitLogEventAttributes )
@@ -240,30 +238,29 @@ internal static int WriteLogRecord(byte[] buffer, int writePosition, SdkLimitOpt
240
238
241
239
if ( logRecord . TraceId != default && logRecord . SpanId != default )
242
240
{
243
- otlpTagWriterState . WritePosition = ProtobufSerializer . WriteTagAndLength ( otlpTagWriterState . Buffer , otlpTagWriterState . WritePosition , TraceIdSize , ProtobufOtlpLogFieldNumberConstants . LogRecord_Trace_Id , ProtobufWireType . LEN ) ;
241
+ otlpTagWriterState . WritePosition + = ProtobufSerializer . WriteTagAndLength ( otlpTagWriterState . Buffer . AsSpan ( otlpTagWriterState . WritePosition ) , TraceIdSize , ProtobufOtlpLogFieldNumberConstants . LogRecord_Trace_Id , ProtobufWireType . LEN ) ;
244
242
otlpTagWriterState . WritePosition = ProtobufOtlpTraceSerializer . WriteTraceId ( otlpTagWriterState . Buffer , otlpTagWriterState . WritePosition , logRecord . TraceId ) ;
245
243
246
- otlpTagWriterState . WritePosition = ProtobufSerializer . WriteTagAndLength ( otlpTagWriterState . Buffer , otlpTagWriterState . WritePosition , SpanIdSize , ProtobufOtlpLogFieldNumberConstants . LogRecord_Span_Id , ProtobufWireType . LEN ) ;
244
+ otlpTagWriterState . WritePosition + = ProtobufSerializer . WriteTagAndLength ( otlpTagWriterState . Buffer . AsSpan ( otlpTagWriterState . WritePosition ) , SpanIdSize , ProtobufOtlpLogFieldNumberConstants . LogRecord_Span_Id , ProtobufWireType . LEN ) ;
247
245
otlpTagWriterState . WritePosition = ProtobufOtlpTraceSerializer . WriteSpanId ( otlpTagWriterState . Buffer , otlpTagWriterState . WritePosition , logRecord . SpanId ) ;
248
246
249
- otlpTagWriterState . WritePosition = ProtobufSerializer . WriteFixed32WithTag ( otlpTagWriterState . Buffer , otlpTagWriterState . WritePosition , ProtobufOtlpLogFieldNumberConstants . LogRecord_Flags , ( uint ) logRecord . TraceFlags ) ;
247
+ otlpTagWriterState . WritePosition + = ProtobufSerializer . WriteFixed32WithTag ( otlpTagWriterState . Buffer . AsSpan ( otlpTagWriterState . WritePosition ) , ProtobufOtlpLogFieldNumberConstants . LogRecord_Flags , ( uint ) logRecord . TraceFlags ) ;
250
248
}
251
249
252
250
if ( logRecord . EventId . Name != null )
253
251
{
254
- otlpTagWriterState . WritePosition = ProtobufSerializer . WriteStringWithTag ( otlpTagWriterState . Buffer , otlpTagWriterState . WritePosition , ProtobufOtlpLogFieldNumberConstants . LogRecord_Event_Name , logRecord . EventId . Name ! ) ;
252
+ otlpTagWriterState . WritePosition + = ProtobufSerializer . WriteStringWithTag ( otlpTagWriterState . Buffer . AsSpan ( otlpTagWriterState . WritePosition ) , ProtobufOtlpLogFieldNumberConstants . LogRecord_Event_Name , logRecord . EventId . Name ! ) ;
255
253
}
256
254
257
255
logRecord . ForEachScope ( ProcessScope , state ) ;
258
256
259
257
if ( otlpTagWriterState . DroppedTagCount > 0 )
260
258
{
261
- otlpTagWriterState . WritePosition = ProtobufSerializer . WriteTag ( buffer , otlpTagWriterState . WritePosition , ProtobufOtlpLogFieldNumberConstants . LogRecord_Dropped_Attributes_Count , ProtobufWireType . VARINT ) ;
262
- otlpTagWriterState . WritePosition = ProtobufSerializer . WriteVarInt32 ( buffer , otlpTagWriterState . WritePosition , ( uint ) otlpTagWriterState . DroppedTagCount ) ;
259
+ otlpTagWriterState . WritePosition + = ProtobufSerializer . WriteTag ( buffer . AsSpan ( otlpTagWriterState . WritePosition ) , ProtobufOtlpLogFieldNumberConstants . LogRecord_Dropped_Attributes_Count , ProtobufWireType . VARINT ) ;
260
+ otlpTagWriterState . WritePosition + = ProtobufSerializer . WriteVarInt32 ( buffer . AsSpan ( otlpTagWriterState . WritePosition ) , ( uint ) otlpTagWriterState . DroppedTagCount ) ;
263
261
}
264
262
265
- ProtobufSerializer . WriteReservedLength ( otlpTagWriterState . Buffer , logRecordLengthPosition , otlpTagWriterState . WritePosition - ( logRecordLengthPosition + ReserveSizeForLength ) ) ;
266
-
263
+ ProtobufSerializer . WriteReservedLength ( otlpTagWriterState . Buffer . AsSpan ( logRecordLengthPosition ) , otlpTagWriterState . WritePosition - ( logRecordLengthPosition + ReserveSizeForLength ) ) ;
267
264
return otlpTagWriterState . WritePosition ;
268
265
269
266
static void ProcessScope ( LogRecordScope scope , SerializationState state )
@@ -304,10 +301,9 @@ private static int WriteLogRecordBody(byte[] buffer, int writePosition, ReadOnly
304
301
{
305
302
var numberOfUtf8CharsInString = ProtobufSerializer . GetNumberOfUtf8CharsInString ( value ) ;
306
303
var serializedLengthSize = ProtobufSerializer . ComputeVarInt64Size ( ( ulong ) numberOfUtf8CharsInString ) ;
307
-
308
304
// length = numberOfUtf8CharsInString + tagSize + length field size.
309
- writePosition = ProtobufSerializer . WriteTagAndLength ( buffer , writePosition , numberOfUtf8CharsInString + 1 + serializedLengthSize , ProtobufOtlpLogFieldNumberConstants . LogRecord_Body , ProtobufWireType . LEN ) ;
310
- writePosition = ProtobufSerializer . WriteStringWithTag ( buffer , writePosition , ProtobufOtlpCommonFieldNumberConstants . AnyValue_String_Value , numberOfUtf8CharsInString , value ) ;
305
+ writePosition + = ProtobufSerializer . WriteTagAndLength ( buffer . AsSpan ( writePosition ) , numberOfUtf8CharsInString + 1 + serializedLengthSize , ProtobufOtlpLogFieldNumberConstants . LogRecord_Body , ProtobufWireType . LEN ) ;
306
+ writePosition + = ProtobufSerializer . WriteStringWithTag ( buffer . AsSpan ( writePosition ) , ProtobufOtlpCommonFieldNumberConstants . AnyValue_String_Value , numberOfUtf8CharsInString , value ) ;
311
307
return writePosition ;
312
308
}
313
309
@@ -324,14 +320,14 @@ private static void AddLogAttribute(SerializationState state, string key, object
324
320
}
325
321
else
326
322
{
327
- state . TagWriterState . WritePosition = ProtobufSerializer . WriteTag ( state . TagWriterState . Buffer , state . TagWriterState . WritePosition , ProtobufOtlpLogFieldNumberConstants . LogRecord_Attributes , ProtobufWireType . LEN ) ;
323
+ state . TagWriterState . WritePosition + = ProtobufSerializer . WriteTag ( state . TagWriterState . Buffer . AsSpan ( state . TagWriterState . WritePosition ) , ProtobufOtlpLogFieldNumberConstants . LogRecord_Attributes , ProtobufWireType . LEN ) ;
328
324
int logAttributesLengthPosition = state . TagWriterState . WritePosition ;
329
325
state . TagWriterState . WritePosition += ReserveSizeForLength ;
330
326
331
327
ProtobufOtlpTagWriter . Instance . TryWriteTag ( ref state . TagWriterState , key , value , state . AttributeValueLengthLimit ) ;
332
328
333
329
var logAttributesLength = state . TagWriterState . WritePosition - ( logAttributesLengthPosition + ReserveSizeForLength ) ;
334
- ProtobufSerializer . WriteReservedLength ( state . TagWriterState . Buffer , logAttributesLengthPosition , logAttributesLength ) ;
330
+ ProtobufSerializer . WriteReservedLength ( state . TagWriterState . Buffer . AsSpan ( logAttributesLengthPosition ) , logAttributesLength ) ;
335
331
state . TagWriterState . TagCount ++ ;
336
332
}
337
333
}
0 commit comments