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

Method DeserializeFromReader

go/fory/stream.go:122–139  ·  view source on GitHub ↗

DeserializeFromReader deserializes a single object from a stream. It is strictly stateless: the buffer and all read state are always reset before each call, discarding any prefetched data and type metadata. For sequential multi-object reads on the same stream, use NewInputStream instead.

(r io.Reader, v any)

Source from the content-addressed store, hash-verified

120// each call, discarding any prefetched data and type metadata.
121// For sequential multi-object reads on the same stream, use NewInputStream instead.
122func (f *Fory) DeserializeFromReader(r io.Reader, v any) error {
123 defer f.resetReadState()
124 // Always reset to enforce stateless semantics.
125 f.readCtx.buffer.ResetWithReader(r, 0)
126
127 readHeader(f.readCtx)
128 if f.readCtx.HasError() {
129 return f.readCtx.TakeError()
130 }
131
132 target := reflect.ValueOf(v).Elem()
133 f.readCtx.ReadValue(target, RefModeTracking, true)
134 if f.readCtx.HasError() {
135 return f.readCtx.TakeError()
136 }
137
138 return nil
139}

Callers 3

TestDecimalOOMFunction · 0.45

Calls 6

resetReadStateMethod · 0.95
readHeaderFunction · 0.85
ResetWithReaderMethod · 0.80
ReadValueMethod · 0.80
HasErrorMethod · 0.45
TakeErrorMethod · 0.45

Tested by 3

TestDecimalOOMFunction · 0.36