blob: f7fa2e1282fb408a7b33f79eb30a53a422b362bb [file] [log] [blame]
package rtcache
import (
"context"
)
// ReadThroughCache defines a caching work queue with priorities. If the item identified by 'id'
// is not in the cache then it will call a provided ReadThroughFunc in order to calculate it.
type ReadThroughCache interface {
// Get returns the item identified by 'id' or an error if the item
// cannot be retrieved. If the item is not in the cache a worker function
// is called to retrieve it.
Get(ctx context.Context, id string) (interface{}, error)
// GetAll returns all items identified by 'ids' or an error if any of them
// cannot be retrieved. If any items are not in the cache, a worker function
// is called per item to retrieve them.
GetAll(ctx context.Context, ids []string) ([]interface{}, error)
// Len returns the number of items that are cached.
Len() int
// Keys returns the keys of the items that are cached.
Keys() []string
// Contains returns true if the identified item is currently cached.
Contains(id string) bool
// Remove removes the element with the given ids from the cache.
Remove(ids []string)
}
// ReadThroughFunc defines the function that is called when an item is not in the
// cache. 'ctx' and 'ids' are the same that were passed to Get(...). error might be wrapped.
type ReadThroughFunc func(ctx context.Context, ids []string) ([]interface{}, error)