MCPcopy
hub / github.com/tinylib/msgp / ReadExtension

Method ReadExtension

msgp/extension.go:377–400  ·  view source on GitHub ↗

ReadExtension reads the next object from the reader as an extension. ReadExtension will fail if the next object in the stream is not an extension, or if e.Type() is not the same as the wire type.

(e Extension)

Source from the content-addressed store, hash-verified

375// object in the stream is not an extension, or if
376// e.Type() is not the same as the wire type.
377func (m *Reader) ReadExtension(e Extension) error {
378 offset, length, extType, err := m.peekExtensionHeader()
379 if err != nil {
380 return err
381 }
382
383 if expectedType := e.ExtensionType(); extType != expectedType {
384 return errExt(extType, expectedType)
385 }
386 if uint32(length) > m.GetMaxElements() {
387 return ErrLimitExceeded
388 }
389
390 p, err := m.R.Peek(offset + length)
391 if err != nil {
392 return err
393 }
394 err = e.UnmarshalBinary(p[offset:])
395 if err == nil {
396 // consume the peeked bytes
397 _, err = m.R.Skip(offset + length)
398 }
399 return err
400}
401
402// ReadExtensionRaw reads the next object from the reader
403// as an extension. The returned slice is only

Callers 5

FuzzReaderFunction · 0.95
ReadIntfMethod · 0.95
TestReadWriteExtensionFunction · 0.95
rwExtensionFunction · 0.80

Calls 6

peekExtensionHeaderMethod · 0.95
GetMaxElementsMethod · 0.95
errExtFunction · 0.85
SkipMethod · 0.80
ExtensionTypeMethod · 0.65
UnmarshalBinaryMethod · 0.65

Tested by 3

FuzzReaderFunction · 0.76
TestReadWriteExtensionFunction · 0.76