Commit b31162d8 authored by Russ Cox's avatar Russ Cox

cmd/go/internal/cache: add GetBytes, PutBytes

These are convenience function for small cached items.

Change-Id: Iba92b7826a9fd6979e627687f2ce72d4b4799385
Reviewed-on: https://go-review.googlesource.com/75292Reviewed-by: 's avatarDavid Crawshaw <crawshaw@golang.org>
parent b66a2948
......@@ -118,6 +118,21 @@ func (c *Cache) Get(id ActionID) (OutputID, int64, error) {
return buf, size, nil
}
// GetBytes looks up the action ID in the cache and returns
// the corresponding output bytes.
// GetBytes should only be used for data that can be expected to fit in memory.
func (c *Cache) GetBytes(id ActionID) ([]byte, error) {
out, _, err := c.Get(id)
if err != nil {
return nil, err
}
data, _ := ioutil.ReadFile(c.OutputFile(out))
if sha256.Sum256(data) != out {
return nil, errMissing
}
return data, nil
}
// OutputFile returns the name of the cache file storing output with the given OutputID.
func (c *Cache) OutputFile(out OutputID) string {
return c.fileName(out, "d")
......@@ -161,6 +176,12 @@ func (c *Cache) Put(id ActionID, file io.ReadSeeker) (OutputID, int64, error) {
return out, size, c.putIndexEntry(id, out, size)
}
// PutBytes stores the given bytes in the cache as the output for the action ID.
func (c *Cache) PutBytes(id ActionID, data []byte) error {
_, _, err := c.Put(id, bytes.NewReader(data))
return err
}
// copyFile copies file into the cache, expecting it to have the given
// output ID and size, if that file is not present already.
func (c *Cache) copyFile(file io.ReadSeeker, out OutputID, size int64) error {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment