bfs commit (exprimental)

This commit is contained in:
刘祥超
2024-04-26 18:44:29 +08:00
parent ef057b106e
commit f262e76f96
10 changed files with 250 additions and 89 deletions

View File

@@ -10,21 +10,25 @@ import (
)
type FileReader struct {
bFile *BlocksFile
fp *os.File
header *FileHeader
bFile *BlocksFile
fp *os.File
fileHeader *FileHeader
pos int64
}
func NewFileReader(bFile *BlocksFile, fp *os.File, header *FileHeader) *FileReader {
func NewFileReader(bFile *BlocksFile, fp *os.File, fileHeader *FileHeader) *FileReader {
return &FileReader{
bFile: bFile,
fp: fp,
header: header,
bFile: bFile,
fp: fp,
fileHeader: fileHeader,
}
}
func (this *FileReader) FileHeader() *FileHeader {
return this.fileHeader
}
func (this *FileReader) Read(b []byte) (n int, err error) {
n, err = this.ReadAt(b, this.pos)
this.pos += int64(n)
@@ -33,12 +37,12 @@ func (this *FileReader) Read(b []byte) (n int, err error) {
}
func (this *FileReader) ReadAt(b []byte, offset int64) (n int, err error) {
if offset >= this.header.MaxOffset() {
if offset >= this.fileHeader.MaxOffset() {
err = io.EOF
return
}
blockInfo, ok := this.header.BlockAt(offset)
blockInfo, ok := this.fileHeader.BlockAt(offset)
if !ok {
err = errors.New("could not find block at '" + types.String(offset) + "'")
return