package wal

import (
	"encoding/binary"
	"io"
)

type entryHeader struct {
	requestNumber uint32
	shardId       uint32
	length        uint32
}

func (self *entryHeader) Write(w io.Writer) (int, error) {
	size := 0

	for _, n := range []uint32{self.requestNumber, self.shardId, self.length} {
		if err := binary.Write(w, binary.BigEndian, n); err != nil {
			return size, err
		}
		size += 4
	}
	return size, nil
}

func (self *entryHeader) Read(r io.Reader) (int, error) {
	size := 0

	for _, n := range []*uint32{&self.requestNumber, &self.shardId, &self.length} {
		if err := binary.Read(r, binary.BigEndian, n); err != nil {
			return size, err
		}
		size += 4
	}
	return size, nil
}