MCPcopy Create free account
hub / github.com/Restream/reindexer / Decode

Method Decode

cjson/decoder.go:902–944  ·  view source on GitHub ↗
(cjson []byte, dest any)

Source from the content-addressed store, hash-verified

900}
901
902func (dec *Decoder) Decode(cjson []byte, dest any) (err error) {
903
904 dec.state.lock.RLock()
905 defer dec.state.lock.RUnlock()
906
907 ser := &Serializer{buf: cjson}
908
909 defer func() {
910 if ret := recover(); ret != nil {
911 if dec.loggerOwner != nil {
912 if logger := dec.loggerOwner.GetLogger(); logger != nil {
913 logger.Printf(bindings.ERROR,
914 "Interface: %#v\nRead position: %d\nTags(v%d): %v\nTags cache: %+v\nData dump:\n%s\nError: %v\nTagsMatcher: { state_token: 0x%08X, version: %d }\n",
915 dest,
916 ser.Pos(),
917 dec.state.Version,
918 dec.state.tagsMatcher.Names,
919 dec.state.structCache,
920 hex.Dump(ser.Bytes()),
921 ret,
922 uint32(dec.state.StateToken),
923 dec.state.Version,
924 )
925 }
926 }
927 switch v := ret.(type) {
928 case error:
929 err = v
930 default:
931 err = fmt.Errorf("rq: Decode error: %v", ret)
932 }
933 }
934 }()
935
936 fieldsoutcnt := make([]int, MaxIndexes)
937 ctagsPath := make([]int16, 0, 16)
938
939 dec.decodeValue(nil, ser, reflect.ValueOf(dest), fieldsoutcnt, ctagsPath)
940 // if !ser.Eof() {
941 // panic(fmt.Errorf("Internal error - left unparsed data"))
942 // }
943 return err
944}

Calls 7

PosMethod · 0.95
BytesMethod · 0.95
decodeValueMethod · 0.95
GetLoggerMethod · 0.65
PrintfMethod · 0.65
RLockMethod · 0.45
DumpMethod · 0.45