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

Method readElement

javascript/packages/core/lib/gen/map.ts:256–297  ·  view source on GitHub ↗
(header: number, serializer: Serializer | null)

Source from the content-addressed store, hash-verified

254 }
255
256 private readElement(header: number, serializer: Serializer | null) {
257 const includeNone = header & MapFlags.HAS_NULL;
258 // IMPORTANT: map readers must obey the sender-written key/value ref bit in
259 // the wire header. Local TypeScript metadata must not override that
260 // decision while reading. Shared xlang tests intentionally deserialize one
261 // ref policy and then serialize another local payload. DO NOT REMOVE this
262 // comment.
263 const trackingRef = header & MapFlags.TRACKING_REF;
264
265 if (includeNone) {
266 return null;
267 }
268 if (!trackingRef) {
269 serializer
270 = serializer == null
271 ? AnyHelper.detectSerializer(this.readContext)
272 : serializer;
273 return this.readSerializerWithDepth(serializer!, false);
274 }
275
276 const flag = this.readContext.reader.readInt8();
277 switch (flag) {
278 case RefFlags.RefValueFlag:
279 serializer
280 = serializer == null
281 ? AnyHelper.detectSerializer(this.readContext)
282 : serializer;
283 return this.readSerializerWithDepth(serializer!, true);
284 case RefFlags.RefFlag:
285 return this.readContext.getReadRef(
286 this.readContext.reader.readVarUInt32(),
287 );
288 case RefFlags.NullFlag:
289 return null;
290 case RefFlags.NotNullValueFlag:
291 serializer
292 = serializer == null
293 ? AnyHelper.detectSerializer(this.readContext)
294 : serializer;
295 return this.readSerializerWithDepth(serializer!, false);
296 }
297 }
298
299 read(fromRef: boolean): any {
300 let count = this.readContext.reader.readVarUint32Small7();

Callers 1

readMethod · 0.95

Calls 5

detectSerializerMethod · 0.80
getReadRefMethod · 0.65
readInt8Method · 0.45
readVarUInt32Method · 0.45

Tested by

no test coverage detected