move Backend interface to backend package
This commit is contained in:
parent
ceb0774af1
commit
1b8a67fe76
105 changed files with 822 additions and 775 deletions
|
@ -6,22 +6,22 @@ import (
|
|||
"sync"
|
||||
|
||||
"github.com/cenkalti/backoff/v4"
|
||||
"github.com/restic/restic/internal/backend"
|
||||
"github.com/restic/restic/internal/errors"
|
||||
"github.com/restic/restic/internal/restic"
|
||||
)
|
||||
|
||||
// make sure that connectionLimitedBackend implements restic.Backend
|
||||
var _ restic.Backend = &connectionLimitedBackend{}
|
||||
// make sure that connectionLimitedBackend implements backend.Backend
|
||||
var _ backend.Backend = &connectionLimitedBackend{}
|
||||
|
||||
// connectionLimitedBackend limits the number of concurrent operations.
|
||||
type connectionLimitedBackend struct {
|
||||
restic.Backend
|
||||
backend.Backend
|
||||
sem semaphore
|
||||
freezeLock sync.Mutex
|
||||
}
|
||||
|
||||
// NewBackend creates a backend that limits the concurrent operations on the underlying backend
|
||||
func NewBackend(be restic.Backend) restic.Backend {
|
||||
func NewBackend(be backend.Backend) backend.Backend {
|
||||
sem, err := newSemaphore(be.Connections())
|
||||
if err != nil {
|
||||
panic(err)
|
||||
|
@ -35,9 +35,9 @@ func NewBackend(be restic.Backend) restic.Backend {
|
|||
|
||||
// typeDependentLimit acquire a token unless the FileType is a lock file. The returned function
|
||||
// must be called to release the token.
|
||||
func (be *connectionLimitedBackend) typeDependentLimit(t restic.FileType) func() {
|
||||
func (be *connectionLimitedBackend) typeDependentLimit(t backend.FileType) func() {
|
||||
// allow concurrent lock file operations to ensure that the lock refresh is always possible
|
||||
if t == restic.LockFile {
|
||||
if t == backend.LockFile {
|
||||
return func() {}
|
||||
}
|
||||
be.sem.GetToken()
|
||||
|
@ -59,7 +59,7 @@ func (be *connectionLimitedBackend) Unfreeze() {
|
|||
}
|
||||
|
||||
// Save adds new Data to the backend.
|
||||
func (be *connectionLimitedBackend) Save(ctx context.Context, h restic.Handle, rd restic.RewindReader) error {
|
||||
func (be *connectionLimitedBackend) Save(ctx context.Context, h backend.Handle, rd backend.RewindReader) error {
|
||||
if err := h.Valid(); err != nil {
|
||||
return backoff.Permanent(err)
|
||||
}
|
||||
|
@ -75,7 +75,7 @@ func (be *connectionLimitedBackend) Save(ctx context.Context, h restic.Handle, r
|
|||
|
||||
// Load runs fn with a reader that yields the contents of the file at h at the
|
||||
// given offset.
|
||||
func (be *connectionLimitedBackend) Load(ctx context.Context, h restic.Handle, length int, offset int64, fn func(rd io.Reader) error) error {
|
||||
func (be *connectionLimitedBackend) Load(ctx context.Context, h backend.Handle, length int, offset int64, fn func(rd io.Reader) error) error {
|
||||
if err := h.Valid(); err != nil {
|
||||
return backoff.Permanent(err)
|
||||
}
|
||||
|
@ -96,22 +96,22 @@ func (be *connectionLimitedBackend) Load(ctx context.Context, h restic.Handle, l
|
|||
}
|
||||
|
||||
// Stat returns information about a file in the backend.
|
||||
func (be *connectionLimitedBackend) Stat(ctx context.Context, h restic.Handle) (restic.FileInfo, error) {
|
||||
func (be *connectionLimitedBackend) Stat(ctx context.Context, h backend.Handle) (backend.FileInfo, error) {
|
||||
if err := h.Valid(); err != nil {
|
||||
return restic.FileInfo{}, backoff.Permanent(err)
|
||||
return backend.FileInfo{}, backoff.Permanent(err)
|
||||
}
|
||||
|
||||
defer be.typeDependentLimit(h.Type)()
|
||||
|
||||
if ctx.Err() != nil {
|
||||
return restic.FileInfo{}, ctx.Err()
|
||||
return backend.FileInfo{}, ctx.Err()
|
||||
}
|
||||
|
||||
return be.Backend.Stat(ctx, h)
|
||||
}
|
||||
|
||||
// Remove deletes a file from the backend.
|
||||
func (be *connectionLimitedBackend) Remove(ctx context.Context, h restic.Handle) error {
|
||||
func (be *connectionLimitedBackend) Remove(ctx context.Context, h backend.Handle) error {
|
||||
if err := h.Valid(); err != nil {
|
||||
return backoff.Permanent(err)
|
||||
}
|
||||
|
@ -125,6 +125,6 @@ func (be *connectionLimitedBackend) Remove(ctx context.Context, h restic.Handle)
|
|||
return be.Backend.Remove(ctx, h)
|
||||
}
|
||||
|
||||
func (be *connectionLimitedBackend) Unwrap() restic.Backend {
|
||||
func (be *connectionLimitedBackend) Unwrap() backend.Backend {
|
||||
return be.Backend
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue