mirror of https://github.com/golang/go.git
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/75292 Reviewed-by: David Crawshaw <crawshaw@golang.org>
This commit is contained in:
parent
b66a294813
commit
b31162d878
|
|
@ -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 {
|
||||
|
|
|
|||
Loading…
Reference in New Issue