wal-g

Форк
0
/
nop_tarball.go 
50 строк · 1.3 Кб
1
package internal
2

3
import (
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.
12
type NOPTarBall struct {
13
	number    int
14
	partSize  *int64
15
	tarWriter *tar.Writer
16
}
17

18
func (tarBall *NOPTarBall) Name() string {
19
	return "NOPTarBall"
20
}
21

22
func (tarBall *NOPTarBall) SetUp(crypter crypto.Crypter, params ...string) {}
23
func (tarBall *NOPTarBall) CloseTar() error                                { return nil }
24

25
func (tarBall *NOPTarBall) Size() int64            { return atomic.LoadInt64(tarBall.partSize) }
26
func (tarBall *NOPTarBall) AddSize(i int64)        { atomic.AddInt64(tarBall.partSize, i) }
27
func (tarBall *NOPTarBall) TarWriter() *tar.Writer { return tarBall.tarWriter }
28
func (tarBall *NOPTarBall) AwaitUploads()          {}
29

30
// NOPTarBallMaker creates a new NOPTarBall. Used
31
// for testing purposes.
32
type NOPTarBallMaker struct {
33
	number   int
34
	partSize *int64
35
}
36

37
// Make creates a new NOPTarBall.
38
func (tarBallMaker *NOPTarBallMaker) Make(inheritState bool) TarBall {
39
	tarBallMaker.number++
40
	return &NOPTarBall{
41
		number:    tarBallMaker.number,
42
		partSize:  tarBallMaker.partSize,
43
		tarWriter: tar.NewWriter(io.Discard),
44
	}
45
}
46

47
func NewNopTarBallMaker() TarBallMaker {
48
	size := int64(0)
49
	return &NOPTarBallMaker{0, &size}
50
}
51

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.