Documentation
¶
Overview ¶
Package cache implements both in-memory and on-disk caching.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Cache ¶
type Cache interface {
io.Closer
// Keys returns the list of all cached digests in LRU order.
Keys() isolated.HexDigests
// Touch updates the LRU position of an item to ensure it is kept in the
// cache.
//
// Returns true if item is in cache.
Touch(digest isolated.HexDigest) bool
// Evict removes item from cache if it's there.
Evict(digest isolated.HexDigest)
// Add reads data from src and stores it in cache.
Add(digest isolated.HexDigest, src io.Reader) error
// Read returns contents of the cached item.
Read(digest isolated.HexDigest) (io.ReadCloser, error)
// Hardlink ensures file at |dest| has the same content as cached |digest|.
//
// Note that the behavior when dest already exists is undefined. It will work
// on all POSIX and may or may not fail on Windows depending on the
// implementation used. Do not rely on this behavior.
Hardlink(digest isolated.HexDigest, dest string, perm os.FileMode) error
}
Cache is a cache of objects.
All implementations must be thread-safe.
type Policies ¶
type Policies struct {
// MaxSize trims if the cache gets larger than this value. If 0, the cache is
// effectively a leak.
MaxSize units.Size
// MaxItems is the maximum number of items to keep in the cache. If 0, do not
// enforce a limit.
MaxItems int
// MinFreeSpace trims if disk free space becomes lower than this value. If 0,
// it unconditionally fills the disk. Only makes sense when using disk based
// cache.
//
// BUG: Implement Policies.MinFreeSpace.
MinFreeSpace units.Size
}
Policies is the policies to use on a cache to limit it's footprint.
It's a cache, not a leak.
Click to show internal directories.
Click to hide internal directories.