diff options
Diffstat (limited to 'objectstore/packed/new.go')
| -rw-r--r-- | objectstore/packed/new.go | 23 |
1 files changed, 15 insertions, 8 deletions
diff --git a/objectstore/packed/new.go b/objectstore/packed/new.go index 407bc1d0..c8e7338e 100644 --- a/objectstore/packed/new.go +++ b/objectstore/packed/new.go @@ -1,24 +1,31 @@ package packed import ( + "fmt" "os" "codeberg.org/lindenii/furgit/objectid" ) // New creates a packed-object store rooted at an objects/pack directory. -func New(root *os.Root, algo objectid.Algorithm) (*Store, error) { +func New(root *os.Root, algo objectid.Algorithm, opts Options) (*Store, error) { if algo.Size() == 0 { return nil, objectid.ErrInvalidAlgorithm } + switch opts.RefreshPolicy { + case RefreshPolicyOnMissing, RefreshPolicyNever: + default: + return nil, fmt.Errorf("objectstore/packed: invalid refresh policy %d", opts.RefreshPolicy) + } + return &Store{ - root: root, - algo: algo, - candidateByPack: make(map[string]packCandidate), - candidateNodeByPack: make(map[string]*packCandidateNode), - idxByPack: make(map[string]*idxFile), - packs: make(map[string]*packFile), - deltaCache: newDeltaCache(defaultDeltaCacheMaxBytes), + root: root, + algo: algo, + refreshPolicy: opts.RefreshPolicy, + mruNodeByPack: make(map[string]*packCandidateNode), + idxByPack: make(map[string]*idxFile), + packs: make(map[string]*packFile), + deltaCache: newDeltaCache(defaultDeltaCacheMaxBytes), }, nil } |
