luci: go.chromium.org/luci/common/data/caching/cache Index | Files

package cache

import "go.chromium.org/luci/common/data/caching/cache"

Package cache implements both in-memory and on-disk caching.

Index

Package Files

cache.go doc.go lru.go

type Cache Uses

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.

func NewDisk Uses

func NewDisk(policies Policies, path string) (Cache, error)

NewDisk creates a disk based cache.

It may return both a valid Cache and an error if it failed to load the previous cache metadata. It is safe to ignore this error.

func NewMemory Uses

func NewMemory(policies Policies) Cache

NewMemory creates a purely in-memory cache.

type Policies Uses

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.

Package cache imports 13 packages (graph). Updated 2018-10-21. Refresh now. Tools for package owners.