MCPcopy Create free account
hub / github.com/WICG/webpackage / decodeSectionLengthsCBOR

Function decodeSectionLengthsCBOR

go/bundle/decoder.go:52–82  ·  view source on GitHub ↗
(bs []byte)

Source from the content-addressed store, hash-verified

50}
51
52func decodeSectionLengthsCBOR(bs []byte) ([]sectionOffset, error) {
53 // section-lengths = [* (section-name: tstr, length: uint) ],
54
55 sos := []sectionOffset{}
56 dec := cbor.NewDecoder(bytes.NewBuffer(bs))
57
58 n, err := dec.DecodeArrayHeader()
59 if err != nil {
60 return nil, fmt.Errorf("bundle: Failed to decode sectionOffset array header: %v", err)
61 }
62
63 for i := uint64(0); i < n; i += 2 {
64 name, err := dec.DecodeTextString()
65 if err != nil {
66 return nil, fmt.Errorf("bundle.sectionLengths[%d]: Failed to decode sectionOffset name: %v", i, err)
67 }
68
69 if _, _, exists := FindSection(sos, name); exists {
70 return nil, fmt.Errorf("bundle.sectionLengths[%d]: Duplicate section in sectionOffset array: %q", i, name)
71 }
72
73 length, err := dec.DecodeUint()
74 if err != nil {
75 return nil, fmt.Errorf("bundle.sectionLengths[%d]: Failed to decode sectionOffset[%q].length: %v", i, name, err)
76 }
77
78 sos = append(sos, sectionOffset{Name: name, Length: length})
79 }
80
81 return sos, nil
82}
83
84var reIsAscii = regexp.MustCompile("^[[:ascii:]]*$")
85

Callers 1

loadMetadataFunction · 0.85

Calls 5

DecodeArrayHeaderMethod · 0.95
DecodeTextStringMethod · 0.95
DecodeUintMethod · 0.95
NewDecoderFunction · 0.92
FindSectionFunction · 0.85

Tested by

no test coverage detected