MCPcopy Create free account
hub / github.com/apache/fory / ReadPayload

Method ReadPayload

csharp/src/Fory/UnknownCaseSerializer.cs:37–73  ·  view source on GitHub ↗
(ReadContext context, int caseId)

Source from the content-addressed store, hash-verified

35 }
36
37 [MethodImpl(MethodImplOptions.NoInlining)]
38 public static UnknownCase ReadPayload(ReadContext context, int caseId)
39 {
40 RefFlag flag = context.RefReader.ReadRefFlag(context.Reader);
41 switch (flag)
42 {
43 case RefFlag.Null:
44 return UnknownCase.FromRuntime(caseId, (uint)TypeId.Unknown, null);
45 case RefFlag.Ref:
46 {
47 uint refId = context.RefReader.ReadRefId(context.Reader);
48 return UnknownCase.FromRuntime(caseId, (uint)TypeId.Unknown, context.RefReader.GetRefValue(refId));
49 }
50 case RefFlag.RefValue:
51 {
52 uint reservedRefId = context.RefReader.ReserveRefId();
53 context.SetReservedRefId(reservedRefId);
54 try
55 {
56 (uint typeId, object? value) = ReadNonNullPayload(context);
57 context.StoreRef(value);
58 return UnknownCase.FromRuntime(caseId, typeId, value);
59 }
60 finally
61 {
62 context.ClearReservedRefId();
63 }
64 }
65 case RefFlag.NotNullValue:
66 {
67 (uint typeId, object? value) = ReadNonNullPayload(context);
68 return UnknownCase.FromRuntime(caseId, typeId, value);
69 }
70 default:
71 throw new RefException($"invalid ref flag {(sbyte)flag}");
72 }
73 }
74
75 private static bool WriteTypedPayload(WriteContext context, TypeId typeId, object? value)
76 {

Callers

nothing calls this directly

Calls 8

FromRuntimeMethod · 0.80
ReadRefIdMethod · 0.80
GetRefValueMethod · 0.80
SetReservedRefIdMethod · 0.80
StoreRefMethod · 0.80
ClearReservedRefIdMethod · 0.80
ReadRefFlagMethod · 0.45
ReserveRefIdMethod · 0.45

Tested by

no test coverage detected