wal-g
1package internal
2
3import (
4"archive/tar"
5"io"
6"sync/atomic"
7
8"github.com/wal-g/wal-g/internal/crypto"
9)
10
11// NOPTarBall mocks a tarball. Used for prefault logic.
12type NOPTarBall struct {
13number int
14partSize *int64
15tarWriter *tar.Writer
16}
17
18func (tarBall *NOPTarBall) Name() string {
19return "NOPTarBall"
20}
21
22func (tarBall *NOPTarBall) SetUp(crypter crypto.Crypter, params ...string) {}
23func (tarBall *NOPTarBall) CloseTar() error { return nil }
24
25func (tarBall *NOPTarBall) Size() int64 { return atomic.LoadInt64(tarBall.partSize) }
26func (tarBall *NOPTarBall) AddSize(i int64) { atomic.AddInt64(tarBall.partSize, i) }
27func (tarBall *NOPTarBall) TarWriter() *tar.Writer { return tarBall.tarWriter }
28func (tarBall *NOPTarBall) AwaitUploads() {}
29
30// NOPTarBallMaker creates a new NOPTarBall. Used
31// for testing purposes.
32type NOPTarBallMaker struct {
33number int
34partSize *int64
35}
36
37// Make creates a new NOPTarBall.
38func (tarBallMaker *NOPTarBallMaker) Make(inheritState bool) TarBall {
39tarBallMaker.number++
40return &NOPTarBall{
41number: tarBallMaker.number,
42partSize: tarBallMaker.partSize,
43tarWriter: tar.NewWriter(io.Discard),
44}
45}
46
47func NewNopTarBallMaker() TarBallMaker {
48size := int64(0)
49return &NOPTarBallMaker{0, &size}
50}
51