func (fs *FragmentStorage) Entry(i uint64) (pb.Entry, error) { fs.fents.Seek(int64(i*SegmentSize), 0) lengthByte := make([]byte, 4) entry := pb.Entry{} n, err := fs.fents.Read(lengthByte) if err != nil || n != 4 { if err != nil { return entry, err } return entry, ErrEntryLength } len := binary.BigEndian.Uint32(lengthByte) payload := make([]byte, int(len)) n, err = fs.fents.Read(payload) if err != nil || n != int(len) { if err != nil { return entry, err } return entry, ErrEntryContentShort } return entry, entry.Unmarshal(payload) }