Skip to content

Commit f54f29b

Browse files
committed
chore: factorize encode and decode
1 parent 2bfe70f commit f54f29b

File tree

1 file changed

+26
-14
lines changed

1 file changed

+26
-14
lines changed

internal/cache/cache.go

Lines changed: 26 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -57,13 +57,9 @@ func (c *Cache) Close() {
5757
}
5858

5959
func (c *Cache) Put(pkg *packages.Package, mode HashMode, key string, data any) error {
60-
var err error
61-
buf := &bytes.Buffer{}
62-
c.sw.TrackStage("gob", func() {
63-
err = gob.NewEncoder(buf).Encode(data)
64-
})
60+
buf, err := c.encode(data)
6561
if err != nil {
66-
return fmt.Errorf("failed to gob encode: %w", err)
62+
return err
6763
}
6864

6965
var aID cache.ActionID
@@ -123,14 +119,7 @@ func (c *Cache) Get(pkg *packages.Package, mode HashMode, key string, data any)
123119
return fmt.Errorf("failed to get data from low-level cache by key %s for package %s: %w", key, pkg.Name, err)
124120
}
125121

126-
c.sw.TrackStage("gob", func() {
127-
err = gob.NewDecoder(bytes.NewReader(b)).Decode(data)
128-
})
129-
if err != nil {
130-
return fmt.Errorf("failed to gob decode: %w", err)
131-
}
132-
133-
return nil
122+
return c.decode(b, data)
134123
}
135124

136125
func (c *Cache) pkgActionID(pkg *packages.Package, mode HashMode) (cache.ActionID, error) {
@@ -228,6 +217,29 @@ func (c *Cache) packageHash(pkg *packages.Package, mode HashMode) (string, error
228217
return hashRes[mode], nil
229218
}
230219

220+
func (c *Cache) encode(data any) (*bytes.Buffer, error) {
221+
buf := &bytes.Buffer{}
222+
err := c.sw.TrackStageErr("gob", func() error {
223+
return gob.NewEncoder(buf).Encode(data)
224+
})
225+
if err != nil {
226+
return nil, fmt.Errorf("failed to gob encode: %w", err)
227+
}
228+
229+
return buf, nil
230+
}
231+
232+
func (c *Cache) decode(b []byte, data any) error {
233+
err := c.sw.TrackStageErr("gob", func() error {
234+
return gob.NewDecoder(bytes.NewReader(b)).Decode(data)
235+
})
236+
if err != nil {
237+
return fmt.Errorf("failed to gob decode: %w", err)
238+
}
239+
240+
return nil
241+
}
242+
231243
func SetSalt(b *bytes.Buffer) {
232244
cache.SetSalt(b.Bytes())
233245
}

0 commit comments

Comments
 (0)