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

Method Read

csharp/src/Fory/OptionalSerializer.cs:80–111  ·  view source on GitHub ↗
(ReadContext context, RefMode refMode, bool readTypeInfo)

Source from the content-addressed store, hash-verified

78 }
79
80 public override T? Read(ReadContext context, RefMode refMode, bool readTypeInfo)
81 {
82 Serializer<T> wrappedSerializer = context.TypeResolver.GetSerializer<T>();
83 switch (refMode)
84 {
85 case RefMode.None:
86 return wrappedSerializer.Read(context, RefMode.None, readTypeInfo);
87 case RefMode.NullOnly:
88 {
89 sbyte refFlag = context.Reader.ReadInt8();
90 if (refFlag == (sbyte)RefFlag.Null)
91 {
92 return null;
93 }
94
95 return wrappedSerializer.Read(context, RefMode.None, readTypeInfo);
96 }
97 case RefMode.Tracking:
98 {
99 sbyte refFlag = context.Reader.ReadInt8();
100 if (refFlag == (sbyte)RefFlag.Null)
101 {
102 return null;
103 }
104
105 context.Reader.MoveBack(1);
106 return wrappedSerializer.Read(context, RefMode.Tracking, readTypeInfo);
107 }
108 default:
109 throw new InvalidDataException($"unsupported ref mode {refMode}");
110 }
111 }
112}

Callers

nothing calls this directly

Calls 3

MoveBackMethod · 0.80
ReadMethod · 0.65
ReadInt8Method · 0.45

Tested by

no test coverage detected