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

Method DecodeCPtr

cjson/decoder.go:846–893  ·  view source on GitHub ↗
(cptr uintptr, dest any)

Source from the content-addressed store, hash-verified

844}
845
846func (dec *Decoder) DecodeCPtr(cptr uintptr, dest any) (err error) {
847
848 pl := &payloadIface{p: cptr, t: &dec.state.payloadType}
849
850 dec.state.lock.RLock()
851 defer dec.state.lock.RUnlock()
852
853 tuple := pl.getBytes(0, 0)
854 ser := &Serializer{buf: tuple}
855
856 defer func() {
857 if ret := recover(); ret != nil {
858 if dec.loggerOwner != nil {
859 if logger := dec.loggerOwner.GetLogger(); logger != nil {
860 logger.Printf(bindings.ERROR,
861 "Interface: %#v\nRead position: %d\nTags(v%d): %v\nPayload Type: %+v\nPayload Value: %v\nTags cache: %+v\nData dump:\n%s\nError: %v\nTagsMatcher: { state_token: 0x%08X, version: %d }\n",
862 dest,
863 ser.Pos(),
864 dec.state.Version,
865 dec.state.tagsMatcher.Names,
866 dec.state.payloadType.Fields,
867 pl.getAsMap(),
868 dec.state.structCache,
869 hex.Dump(ser.Bytes()),
870 ret,
871 uint32(dec.state.StateToken),
872 dec.state.Version,
873 )
874 }
875 }
876 switch v := ret.(type) {
877 case error:
878 err = v
879 default:
880 err = fmt.Errorf("rq: DecodeCPtr error: %v", ret)
881 }
882 }
883 }()
884
885 fieldsoutcnt := make([]int, MaxIndexes)
886 ctagsPath := make([]int16, 0, 16)
887
888 dec.decodeValue(pl, ser, reflect.ValueOf(dest), fieldsoutcnt, ctagsPath)
889 if !ser.Eof() {
890 panic(fmt.Errorf("internal error - left unparsed data"))
891 }
892 return err
893}
894
895func (dec *Decoder) Finalize() {
896 if dec.ser != nil {

Callers 1

unpackItemFunction · 0.95

Calls 10

getBytesMethod · 0.95
PosMethod · 0.95
getAsMapMethod · 0.95
BytesMethod · 0.95
decodeValueMethod · 0.95
EofMethod · 0.95
GetLoggerMethod · 0.65
PrintfMethod · 0.65
RLockMethod · 0.45
DumpMethod · 0.45

Tested by

no test coverage detected