File tree 1 file changed +14
-5
lines changed
1 file changed +14
-5
lines changed Original file line number Diff line number Diff line change @@ -46,10 +46,7 @@ func (l *LRU) Set(key interface{}, value interface{}) error {
46
46
return errors .New ("Cannot store item that is larger than the cache capacity" )
47
47
}
48
48
49
- newSize := l .size + entrySize
50
- if newSize > l .convenienceCap {
51
- l .removeLastElement ()
52
- }
49
+ newSize := l .setSize (entrySize )
53
50
54
51
_ , ok := l .items [key ]
55
52
if ! ok {
@@ -59,14 +56,26 @@ func (l *LRU) Set(key interface{}, value interface{}) error {
59
56
size : entrySize ,
60
57
}
61
58
listEntry := l .used .PushFront (entry )
62
- l .size + = newSize
59
+ l .size = newSize
63
60
l .items [key ] = listEntry
64
61
}
65
62
66
63
return nil
67
64
68
65
}
69
66
67
+ func (l * LRU ) setSize (entrySize uintptr ) uintptr {
68
+
69
+ newSize := l .size + entrySize
70
+ if newSize <= l .convenienceCap {
71
+ return newSize
72
+ }
73
+
74
+ l .removeLastElement ()
75
+ return l .setSize (entrySize )
76
+
77
+ }
78
+
70
79
func (l * LRU ) removeLastElement () {
71
80
72
81
lastElement := l .used .Back ()
You can’t perform that action at this time.
0 commit comments