37 lines
688 B
Go
37 lines
688 B
Go
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
|
|
}
|