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

Function readMapRefAndType

go/fory/map.go:609–638  ·  view source on GitHub ↗

readMapRefAndType handles reference and type reading for maps. Returns true if a reference was resolved.

(ctx *ReadContext, refMode RefMode, readType bool, value reflect.Value)

Source from the content-addressed store, hash-verified

607// readMapRefAndType handles reference and type reading for maps.
608// Returns true if a reference was resolved.
609func readMapRefAndType(ctx *ReadContext, refMode RefMode, readType bool, value reflect.Value) bool {
610 buf := ctx.Buffer()
611 ctxErr := ctx.Err()
612 switch refMode {
613 case RefModeTracking:
614 refID, err := ctx.RefResolver().TryPreserveRefId(buf)
615 if err != nil {
616 ctx.SetError(FromError(err))
617 return false
618 }
619 if refID < int32(NotNullValueFlag) {
620 obj := ctx.RefResolver().GetReadObject(refID)
621 if obj.IsValid() {
622 value.Set(obj)
623 }
624 return true
625 }
626 case RefModeNullOnly:
627 flag := buf.ReadInt8(ctxErr)
628 if flag == NullFlag {
629 return true
630 }
631 }
632 if readType {
633 if !ctx.readExpectedTypeID(MAP) {
634 return false
635 }
636 }
637 return false
638}
639
640func unwrapInterface(v reflect.Value) reflect.Value {
641 // For map serialization, we need to unwrap interfaces including nil ones

Callers 9

ReadMethod · 0.85
ReadMethod · 0.85
ReadMethod · 0.85
ReadMethod · 0.85
ReadMethod · 0.85
ReadMethod · 0.85
ReadMethod · 0.85
ReadMethod · 0.85
ReadMethod · 0.85

Calls 11

FromErrorFunction · 0.85
TryPreserveRefIdMethod · 0.80
GetReadObjectMethod · 0.80
readExpectedTypeIDMethod · 0.80
int32Function · 0.50
BufferMethod · 0.45
ErrMethod · 0.45
RefResolverMethod · 0.45
SetErrorMethod · 0.45
SetMethod · 0.45
ReadInt8Method · 0.45

Tested by

no test coverage detected