Move code for sparse optimized copy to a dedicated method

Signed-off-by: Mario Loriedo <mario.loriedo@gmail.com>
This commit is contained in:
Mario Loriedo
2024-02-27 15:59:56 +01:00
parent f099250beb
commit 24a33a538c
4 changed files with 13 additions and 30 deletions

View File

@ -63,3 +63,13 @@ func (d *genericDecompressor) close() {
logrus.Errorf("Unable to close compressed file: %q", err) logrus.Errorf("Unable to close compressed file: %q", err)
} }
} }
func (d *genericDecompressor) sparseOptimizedCopy(w WriteSeekCloser, r io.Reader) error {
var err error
sparseWriter := NewSparseWriter(w)
defer func() {
err = sparseWriter.Close()
}()
_, err = io.Copy(sparseWriter, r)
return err
}

View File

@ -27,13 +27,5 @@ func (d *gzipDecompressor) decompress(w WriteSeekCloser, r io.Reader) error {
} }
}() }()
sparseWriter := NewSparseWriter(w) return d.sparseOptimizedCopy(w, gzReader)
defer func() {
if err := sparseWriter.Close(); err != nil {
logrus.Errorf("Unable to close uncompressed file: %q", err)
}
}()
_, err = io.Copy(sparseWriter, gzReader)
return err
} }

View File

@ -2,8 +2,6 @@ package compression
import ( import (
"io" "io"
"github.com/sirupsen/logrus"
) )
type uncompressedDecompressor struct { type uncompressedDecompressor struct {
@ -16,13 +14,5 @@ func newUncompressedDecompressor(compressedFilePath string) (*uncompressedDecomp
} }
func (d *uncompressedDecompressor) decompress(w WriteSeekCloser, r io.Reader) error { func (d *uncompressedDecompressor) decompress(w WriteSeekCloser, r io.Reader) error {
sparseWriter := NewSparseWriter(w) return d.sparseOptimizedCopy(w, r)
defer func() {
if err := sparseWriter.Close(); err != nil {
logrus.Errorf("Unable to close uncompressed file: %q", err)
}
}()
_, err := io.Copy(sparseWriter, r)
return err
} }

View File

@ -4,7 +4,6 @@ import (
"io" "io"
"github.com/klauspost/compress/zstd" "github.com/klauspost/compress/zstd"
"github.com/sirupsen/logrus"
) )
type zstdDecompressor struct { type zstdDecompressor struct {
@ -23,13 +22,5 @@ func (d *zstdDecompressor) decompress(w WriteSeekCloser, r io.Reader) error {
} }
defer zstdReader.Close() defer zstdReader.Close()
sparseWriter := NewSparseWriter(w) return d.sparseOptimizedCopy(w, zstdReader)
defer func() {
if err := sparseWriter.Close(); err != nil {
logrus.Errorf("Unable to close uncompressed file: %q", err)
}
}()
_, err = io.Copy(sparseWriter, zstdReader)
return err
} }