...
1
2
3
4
5
6 package memory
7
8 import (
9 v1 "github.com/google/go-containerregistry/pkg/v1"
10 lru "github.com/hashicorp/golang-lru"
11 )
12
13
14 type ArcCache struct {
15 store *lru.ARCCache
16 }
17
18
19 func New(limit int) (*ArcCache, error) {
20 cache, err := lru.NewARC(limit)
21 if err != nil {
22 return nil, err
23 }
24 return &ArcCache{cache}, nil
25 }
26
27
28 func (m *ArcCache) Get(h v1.Hash) (any, bool) {
29 return m.store.Get(h)
30 }
31
32
33 func (m *ArcCache) Keys() []any {
34 return m.store.Keys()
35 }
36
37
38 func (m *ArcCache) Exists(h v1.Hash) bool {
39 return m.store.Contains(h)
40 }
41
42
43 func (m *ArcCache) Add(h v1.Hash, obj any) {
44 m.store.Add(h, obj)
45 }
46
47
48 func (m *ArcCache) Len() int {
49 return m.store.Len()
50 }
51
52 func (m *ArcCache) Purge() {
53 m.store.Purge()
54 }
55
View as plain text