MCPcopy
hub / github.com/uptrace/uptrace / decodeStructField

Method decodeStructField

pkg/msgp/decoder.go:355–374  ·  view source on GitHub ↗
(b []byte, st *structType)

Source from the content-addressed store, hash-verified

353 return b, nil
354}
355func (d decoder) decodeStructField(b []byte, st *structType) (*structField, []byte, error) {
356 if fieldID, b, err := d.decodeStructFieldID(b); err == nil {
357 field := st.fieldByID(fieldID)
358 if field == nil && d.flags&AllowUnknownFields == 0 {
359 return nil, nil, fmt.Errorf("msgp: unknown struct field id: %d", fieldID)
360 }
361 return field, b, nil
362 } else if err != errInvalidFieldID {
363 return nil, nil, errInvalidFieldID
364 }
365 fieldName, b, err := ParseBytes(b, ZeroCopyBytes)
366 if err != nil {
367 return nil, nil, err
368 }
369 field, ok := st.fieldMap[string(fieldName)]
370 if !ok && d.flags&AllowUnknownFields == 0 {
371 return nil, nil, fmt.Errorf("msgp: unknown struct field name: %q", string(fieldName))
372 }
373 return field, b, nil
374}
375
376var errInvalidFieldID = errors.New("invalid struct field id")
377

Callers 1

decodeStructMethod · 0.95

Calls 3

decodeStructFieldIDMethod · 0.95
fieldByIDMethod · 0.80
ParseBytesFunction · 0.70

Tested by

no test coverage detected