1package keysutil
2
3import lru "github.com/hashicorp/golang-lru"
4
5type TransitLRU struct {
6	size int
7	lru  *lru.TwoQueueCache
8}
9
10func NewTransitLRU(size int) (*TransitLRU, error) {
11	lru, err := lru.New2Q(size)
12	return &TransitLRU{lru: lru, size: size}, err
13}
14
15func (c *TransitLRU) Delete(key interface{}) {
16	c.lru.Remove(key)
17}
18
19func (c *TransitLRU) Load(key interface{}) (value interface{}, ok bool) {
20	return c.lru.Get(key)
21}
22
23func (c *TransitLRU) Store(key, value interface{}) {
24	c.lru.Add(key, value)
25}
26
27func (c *TransitLRU) Size() int {
28	return c.size
29}
30