40 lines
1.2 KiB
Go
40 lines
1.2 KiB
Go
package cache
|
|
|
|
import "gopkg.in/src-d/go-git.v4/plumbing"
|
|
|
|
const (
|
|
Byte FileSize = 1 << (iota * 10)
|
|
KiByte
|
|
MiByte
|
|
GiByte
|
|
)
|
|
|
|
type FileSize int64
|
|
|
|
const DefaultMaxSize FileSize = 96 * MiByte
|
|
|
|
// Object is an interface to a object cache.
|
|
type Object interface {
|
|
// Put puts the given object into the cache. Whether this object will
|
|
// actually be put into the cache or not is implementation specific.
|
|
Put(o plumbing.EncodedObject)
|
|
// Get gets an object from the cache given its hash. The second return value
|
|
// is true if the object was returned, and false otherwise.
|
|
Get(k plumbing.Hash) (plumbing.EncodedObject, bool)
|
|
// Clear clears every object from the cache.
|
|
Clear()
|
|
}
|
|
|
|
// Buffer is an interface to a buffer cache.
|
|
type Buffer interface {
|
|
// Put puts a buffer into the cache. If the buffer is already in the cache,
|
|
// it will be marked as used. Otherwise, it will be inserted. Buffer might
|
|
// be evicted to make room for the new one.
|
|
Put(key int64, slice []byte)
|
|
// Get returns a buffer by its key. It marks the buffer as used. If the
|
|
// buffer is not in the cache, (nil, false) will be returned.
|
|
Get(key int64) ([]byte, bool)
|
|
// Clear clears every object from the cache.
|
|
Clear()
|
|
}
|