MCPcopy Create free account
hub / github.com/ethstorage/es-node / readHeader

Method readHeader

ethstorage/data_file.go:285–353  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

283}
284
285func (df *DataFile) readHeader() error {
286 header := DataFileHeader{}
287
288 b := make([]byte, HEADER_SIZE)
289 n, err := df.file.ReadAt(b, 0)
290 if err != nil {
291 return err
292 }
293 if n != int(HEADER_SIZE) {
294 return fmt.Errorf("not full header read")
295 }
296
297 buf := bytes.NewBuffer(b)
298 if err := binary.Read(buf, binary.BigEndian, &header.magic); err != nil {
299 return err
300 }
301 if err := binary.Read(buf, binary.BigEndian, &header.version); err != nil {
302 return err
303 }
304 if err := binary.Read(buf, binary.BigEndian, &header.chunkIdxStart); err != nil {
305 return err
306 }
307 if err := binary.Read(buf, binary.BigEndian, &header.chunkIdxLen); err != nil {
308 return err
309 }
310 if err := binary.Read(buf, binary.BigEndian, &header.encodeType); err != nil {
311 return err
312 }
313 if err := binary.Read(buf, binary.BigEndian, &header.maxKvSize); err != nil {
314 return err
315 }
316 if err := binary.Read(buf, binary.BigEndian, &header.chunkSize); err != nil {
317 return err
318 }
319 if err := binary.Read(buf, binary.BigEndian, &header.metaSize); err != nil {
320 return err
321 }
322 n, err = buf.Read(header.miner[:])
323 if err != nil {
324 return err
325 }
326 if n != len(header.miner) {
327 return fmt.Errorf("short read for header.miner, n=%d", n)
328 }
329 if err := binary.Read(buf, binary.BigEndian, &header.status); err != nil {
330 return err
331 }
332
333 // Sanity check
334 if header.magic != MAGIC {
335 return fmt.Errorf("magic error")
336 }
337 if header.version > VERSION {
338 return fmt.Errorf("unsupported version")
339 }
340 if header.encodeType > ENCODE_END {
341 return fmt.Errorf("unknown mask type")
342 }

Callers 1

OpenDataFileFunction · 0.95

Calls 1

ReadMethod · 0.65

Tested by

no test coverage detected