MCPcopy Create free account
hub / github.com/brimdata/super / Deserialize

Method Deserialize

csup/header.go:40–62  ·  view source on GitHub ↗
(bytes []byte)

Source from the content-addressed store, hash-verified

38}
39
40func (h *Header) Deserialize(bytes []byte) error {
41 if len(bytes) != HeaderSize || bytes[0] != 'C' || bytes[1] != 'S' || bytes[2] != 'U' || bytes[3] != 'P' {
42 return errors.New("invalid CSUP header")
43 }
44 h.Version = binary.LittleEndian.Uint32(bytes[4:])
45 h.MetaSize = binary.LittleEndian.Uint64(bytes[8:])
46 h.TypeSize = binary.LittleEndian.Uint64(bytes[16:])
47 h.DataSize = binary.LittleEndian.Uint64(bytes[24:])
48 h.Root = binary.LittleEndian.Uint32(bytes[32:])
49 if h.Version != Version {
50 return fmt.Errorf("CSUP version mismatch: expected %d, found %d", Version, h.Version)
51 }
52 if h.MetaSize > MaxMetaSize {
53 return fmt.Errorf("CSUP metadata section too big: %d bytes", h.MetaSize)
54 }
55 if h.MetaSize > MaxTypeSize {
56 return fmt.Errorf("CSUP type section too big: %d bytes", h.TypeSize)
57 }
58 if h.DataSize > MaxDataSize {
59 return fmt.Errorf("CSUP data section too big: %d bytes", h.DataSize)
60 }
61 return nil
62}
63
64func (h *Header) ObjectSize() uint64 {
65 return HeaderSize + h.MetaSize + h.TypeSize + h.DataSize

Callers 2

readHeaderMethod · 0.95
ReadHeaderFunction · 0.95

Calls 1

NewMethod · 0.80

Tested by

no test coverage detected