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

Method nextFrame

cmd/super/dev/dig/frames/command.go:127–168  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

125}
126
127func (m *metaReader) nextFrame() (any, error) {
128 r := m.reader
129 pos := r.pos
130 version, err := r.ReadByte()
131 if err != nil {
132 return nil, noEOF(err)
133 }
134 if version == 0xff {
135 return &Frame{Type: "EOS", Offset: pos}, nil
136
137 }
138 if err := bsupio.CheckVersion(version); err != nil {
139 return nil, err
140 }
141 code, err := r.ReadByte()
142 if err != nil {
143 return nil, noEOF(err)
144 }
145
146 var block any
147 if (code & 0x40) != 0 {
148 block, err = r.readComp(code)
149 if err != nil {
150 return nil, noEOF(err)
151 }
152 } else {
153 block, err = r.readUncomp(code)
154 if err != nil {
155 return nil, noEOF(err)
156 }
157 }
158 switch typ := (code >> 4) & 3; typ {
159 case 0:
160 return &Frame{Type: "types", Offset: pos, Block: block}, nil
161 case 1:
162 return &Frame{Type: "values", Offset: pos, Block: block}, nil
163 case 2:
164 return &Frame{Type: "control", Offset: pos, Block: block}, nil
165 default:
166 return nil, fmt.Errorf("encountered bad frame type: %d", typ)
167 }
168}
169
170type reader struct {
171 reader *bufio.Reader

Callers 1

ReadMethod · 0.95

Calls 5

CheckVersionFunction · 0.92
readCompMethod · 0.80
readUncompMethod · 0.80
noEOFFunction · 0.70
ReadByteMethod · 0.45

Tested by

no test coverage detected