Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ ContinueDeserialize< TValue >()

static TValue System.Text.Json.JsonSerializer.ContinueDeserialize< TValue > ( ref ReadBufferState bufferState,
ref JsonReaderState jsonReaderState,
ref ReadStack readStack,
JsonConverter converter,
JsonSerializerOptions options )
inlinestaticpackage

Definition at line 1076 of file JsonSerializer.cs.

1077 {
1078 if (bufferState.BytesInBuffer > bufferState.ClearMax)
1079 {
1080 bufferState.ClearMax = bufferState.BytesInBuffer;
1081 }
1082 int num = 0;
1083 if (bufferState.IsFirstIteration)
1084 {
1086 if (bufferState.Buffer.AsSpan().StartsWith(JsonConstants.Utf8Bom))
1087 {
1088 num += JsonConstants.Utf8Bom.Length;
1089 bufferState.BytesInBuffer -= JsonConstants.Utf8Bom.Length;
1090 }
1091 }
1092 TValue result = ReadCore<TValue>(ref jsonReaderState, bufferState.IsFinalBlock, new ReadOnlySpan<byte>(bufferState.Buffer, num, bufferState.BytesInBuffer), options, ref readStack, converter);
1093 int num2 = checked((int)readStack.BytesConsumed);
1095 if (!bufferState.IsFinalBlock)
1096 {
1097 if ((uint)bufferState.BytesInBuffer > (uint)bufferState.Buffer.Length / 2u)
1098 {
1099 byte[] buffer = bufferState.Buffer;
1100 int clearMax = bufferState.ClearMax;
1101 byte[] array = ArrayPool<byte>.Shared.Rent((bufferState.Buffer.Length < 1073741823) ? (bufferState.Buffer.Length * 2) : int.MaxValue);
1102 Buffer.BlockCopy(buffer, num2 + num, array, 0, bufferState.BytesInBuffer);
1104 bufferState.ClearMax = bufferState.BytesInBuffer;
1105 new Span<byte>(buffer, 0, clearMax).Clear();
1106 ArrayPool<byte>.Shared.Return(buffer);
1107 }
1108 else if (bufferState.BytesInBuffer != 0)
1109 {
1110 Buffer.BlockCopy(bufferState.Buffer, num2 + num, bufferState.Buffer, 0, bufferState.BytesInBuffer);
1111 }
1112 }
1113 return result;
1114 }
static TValue ReadCore< TValue >(JsonConverter jsonConverter, ref Utf8JsonReader reader, JsonSerializerOptions options, ref ReadStack state)

References System.array, System.Buffer.BlockCopy(), System.buffer, System.Collections.Generic.Dictionary< TKey, TValue >.Clear(), System.converter, System.Text.Json.Dictionary, System.options, System.Text.Json.JsonSerializer.ReadCore< TValue >(), and System.Text.Json.JsonConstants.Utf8Bom.

Referenced by System.Text.Json.JsonSerializer.ReadAll< TValue >(), and System.Text.Json.JsonSerializer.ReadAllAsync< TValue >().