refactor: Use explicit interface instead of os.File for drive backend

This commit is contained in:
Felix Pojtinger
2022-01-07 22:27:14 +01:00
parent 972aa8b430
commit 1a0cb33571
9 changed files with 32 additions and 29 deletions
+6 -2
View File
@@ -4,7 +4,6 @@ import (
"context"
"io"
"io/fs"
"os"
"time"
)
@@ -18,8 +17,13 @@ type DriveWriterConfig struct {
DriveIsRegular bool
}
type Drive interface {
io.ReadSeeker
Fd() uintptr
}
type DriveConfig struct {
Drive *os.File
Drive Drive
DriveIsRegular bool
}
+1 -1
View File
@@ -8,5 +8,5 @@ import (
func Eject(
state config.DriveConfig,
) error {
return mtio.EjectTape(state.Drive)
return mtio.EjectTape(state.Drive.Fd())
}
+1 -1
View File
@@ -8,5 +8,5 @@ import (
func Tell(
state config.DriveConfig,
) (int64, error) {
return mtio.GetCurrentRecordFromTape(state.Drive)
return mtio.GetCurrentRecordFromTape(state.Drive.Fd())
}
+1 -1
View File
@@ -46,7 +46,7 @@ func Fetch(
tr = tar.NewReader(reader.Drive)
} else {
// Seek to record
if err := mtio.SeekToRecordOnTape(drive.Drive, int32(record)); err != nil {
if err := mtio.SeekToRecordOnTape(drive.Drive.Fd(), int32(record)); err != nil {
return err
}
+3 -3
View File
@@ -150,7 +150,7 @@ func Index(
}
} else {
// Seek to record
if err := mtio.SeekToRecordOnTape(drive.Drive, int32(record)); err != nil {
if err := mtio.SeekToRecordOnTape(drive.Drive.Fd(), int32(record)); err != nil {
return err
}
@@ -172,13 +172,13 @@ func Index(
hdr, err := tr.Next()
if err != nil {
if err == io.EOF {
if err := mtio.GoToNextFileOnTape(drive.Drive); err != nil {
if err := mtio.GoToNextFileOnTape(drive.Drive.Fd()); err != nil {
// EOD
break
}
record, err = mtio.GetCurrentRecordFromTape(drive.Drive)
record, err = mtio.GetCurrentRecordFromTape(drive.Drive.Fd())
if err != nil {
return err
}
+3 -3
View File
@@ -132,7 +132,7 @@ func Query(
}
} else {
// Seek to record
if err := mtio.SeekToRecordOnTape(state.Drive, int32(record)); err != nil {
if err := mtio.SeekToRecordOnTape(state.Drive.Fd(), int32(record)); err != nil {
return []*tar.Header{}, err
}
@@ -153,13 +153,13 @@ func Query(
hdr, err := tr.Next()
if err != nil {
if err == io.EOF {
if err := mtio.GoToNextFileOnTape(state.Drive); err != nil {
if err := mtio.GoToNextFileOnTape(state.Drive.Fd()); err != nil {
// EOD
break
}
record, err = mtio.GetCurrentRecordFromTape(state.Drive)
record, err = mtio.GetCurrentRecordFromTape(state.Drive.Fd())
if err != nil {
return []*tar.Header{}, err
}
+2 -2
View File
@@ -40,7 +40,7 @@ func OpenTapeWriteOnly(drive string, recordSize int, overwrite bool) (f *os.File
}
// Seek to the start of the tape
if err := mtio.SeekToRecordOnTape(f, 0); err != nil {
if err := mtio.SeekToRecordOnTape(f.Fd(), 0); err != nil {
return nil, false, err
}
@@ -65,7 +65,7 @@ func OpenTapeWriteOnly(drive string, recordSize int, overwrite bool) (f *os.File
if !overwrite {
// Go to end of tape
if err := mtio.GoToEndOfTape(f); err != nil {
if err := mtio.GoToEndOfTape(f.Fd()); err != nil {
return nil, false, err
}
}