MCPcopy Index your code
hub / github.com/vmihailenco/msgpack / decodeInternedString

Method decodeInternedString

intern.go:130–185  ·  view source on GitHub ↗
(intern bool)

Source from the content-addressed store, hash-verified

128}
129
130func (d *Decoder) decodeInternedString(intern bool) (string, error) {
131 c, err := d.readCode()
132 if err != nil {
133 return "", err
134 }
135
136 if msgpcode.IsFixedString(c) {
137 n := int(c & msgpcode.FixedStrMask)
138 return d.decodeInternedStringWithLen(n, intern)
139 }
140
141 switch c {
142 case msgpcode.Nil:
143 return "", nil
144 case msgpcode.FixExt1, msgpcode.FixExt2, msgpcode.FixExt4:
145 typeID, extLen, err := d.extHeader(c)
146 if err != nil {
147 return "", err
148 }
149 if typeID != internedStringExtID {
150 err := fmt.Errorf("msgpack: got ext type=%d, wanted %d",
151 typeID, internedStringExtID)
152 return "", err
153 }
154
155 idx, err := d.decodeInternedStringIndex(extLen)
156 if err != nil {
157 return "", err
158 }
159
160 return d.internedStringAtIndex(idx)
161 case msgpcode.Str8, msgpcode.Bin8:
162 n, err := d.uint8()
163 if err != nil {
164 return "", err
165 }
166 return d.decodeInternedStringWithLen(int(n), intern)
167 case msgpcode.Str16, msgpcode.Bin16:
168 n, err := d.uint16()
169 if err != nil {
170 return "", err
171 }
172 return d.decodeInternedStringWithLen(int(n), intern)
173 case msgpcode.Str32, msgpcode.Bin32:
174 n, err := d.uint32()
175 if err != nil {
176 return "", err
177 }
178 return d.decodeInternedStringWithLen(int(n), intern)
179 }
180
181 return "", unexpectedCodeError{
182 code: c,
183 hint: "interned string",
184 }
185}
186
187func (d *Decoder) decodeInternedStringIndex(extLen int) (int, error) {

Callers 4

DecodeStringMethod · 0.95
decodeStringTempMethod · 0.95

Calls 9

readCodeMethod · 0.95
extHeaderMethod · 0.95
internedStringAtIndexMethod · 0.95
uint8Method · 0.95
uint16Method · 0.95
uint32Method · 0.95
IsFixedStringFunction · 0.92

Tested by

no test coverage detected