refactor: Inject mtio package to allow for remote implementation

This commit is contained in:
Felix Pojtinger
2022-01-16 23:50:47 +01:00
parent 5bb79b6d9e
commit 25cacd34d8
36 changed files with 183 additions and 100 deletions
+5 -5
View File
@@ -9,7 +9,6 @@ import (
"path/filepath"
"github.com/pojntfx/stfs/internal/converters"
"github.com/pojntfx/stfs/internal/mtio"
"github.com/pojntfx/stfs/internal/records"
"github.com/pojntfx/stfs/pkg/compression"
"github.com/pojntfx/stfs/pkg/config"
@@ -19,6 +18,7 @@ import (
func Fetch(
reader config.DriveReaderConfig,
mt config.MagneticTapeIO,
pipes config.PipeConfig,
crypto config.CryptoConfig,
@@ -37,20 +37,20 @@ func Fetch(
var tr *tar.Reader
if reader.DriveIsRegular {
// Seek to record and block
if _, err := reader.Drive.Seek(int64((pipes.RecordSize*mtio.BlockSize*record)+block*mtio.BlockSize), io.SeekStart); err != nil {
if _, err := reader.Drive.Seek(int64((pipes.RecordSize*config.MagneticTapeBlockSize*record)+block*config.MagneticTapeBlockSize), io.SeekStart); err != nil {
return err
}
tr = tar.NewReader(reader.Drive)
} else {
// Seek to record
if err := mtio.SeekToRecordOnTape(reader.Drive.Fd(), int32(record)); err != nil {
if err := mt.SeekToRecordOnTape(reader.Drive.Fd(), int32(record)); err != nil {
return err
}
// Seek to block
br := bufio.NewReaderSize(reader.Drive, mtio.BlockSize*pipes.RecordSize)
if _, err := br.Read(make([]byte, block*mtio.BlockSize)); err != nil {
br := bufio.NewReaderSize(reader.Drive, config.MagneticTapeBlockSize*pipes.RecordSize)
if _, err := br.Read(make([]byte, block*config.MagneticTapeBlockSize)); err != nil {
return err
}