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

Function readArrayRefAndType

go/fory/array.go:40–68  ·  view source on GitHub ↗

readArrayRefAndType handles reference and type reading for array serializers. Returns true if a reference was resolved (value already set), false if data should be read.

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

Source from the content-addressed store, hash-verified

38// readArrayRefAndType handles reference and type reading for array serializers.
39// Returns true if a reference was resolved (value already set), false if data should be read.
40func readArrayRefAndType(ctx *ReadContext, refMode RefMode, readType bool, value reflect.Value) bool {
41 buf := ctx.Buffer()
42 err := ctx.Err()
43 if refMode != RefModeNone {
44 refID, refErr := ctx.RefResolver().TryPreserveRefId(buf)
45 if refErr != nil {
46 ctx.SetError(FromError(refErr))
47 return false
48 }
49 if refID < int32(NotNullValueFlag) {
50 obj := ctx.RefResolver().GetReadObject(refID)
51 if obj.IsValid() {
52 value.Set(obj)
53 }
54 return true
55 }
56 }
57 if readType {
58 typeID := uint32(buf.ReadUint8(err))
59 if ctx.HasError() {
60 return false
61 }
62 if typeID != uint32(LIST) {
63 ctx.SetError(DeserializationErrorf("array type mismatch: expected LIST (%d), got %d", LIST, typeID))
64 return false
65 }
66 }
67 return false
68}
69
70// Array serializers
71

Callers 15

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
ReadMethod · 0.85
ReadMethod · 0.85
ReadMethod · 0.85

Calls 13

FromErrorFunction · 0.85
DeserializationErrorfFunction · 0.85
TryPreserveRefIdMethod · 0.80
GetReadObjectMethod · 0.80
ReadUint8Method · 0.80
int32Function · 0.50
uint32Function · 0.50
BufferMethod · 0.45
ErrMethod · 0.45
RefResolverMethod · 0.45
SetErrorMethod · 0.45
SetMethod · 0.45

Tested by

no test coverage detected