aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorOphestra <cat@gensokyo.uk>2026-06-07 16:10:03 +0900
committerOphestra <cat@gensokyo.uk>2026-06-07 16:14:54 +0900
commit22e508fe17cdf6be6240e6b73ac5b90bc6bfd77e (patch)
treef4a2335664a6ea2448df8bf780432b59ac8a1661
parentb18ecf58326f9048afca885e2bf56d516578b1e4 (diff)
internal/pkg: expose measured reader to extern status
This is always required by the implementation. Signed-off-by: Ophestra <cat@gensokyo.uk>
-rw-r--r--internal/pkg/pkg.go12
-rw-r--r--internal/pkg/pkg_test.go4
2 files changed, 8 insertions, 8 deletions
diff --git a/internal/pkg/pkg.go b/internal/pkg/pkg.go
index 6542741f..e90bb72c 100644
--- a/internal/pkg/pkg.go
+++ b/internal/pkg/pkg.go
@@ -699,13 +699,13 @@ type External interface {
// Artifact returns the address of the [Checksum] of the cure outcome of
// an [Artifact] corresponding to id, or nil if this [Artifact] is not
// available in the external cache.
- Artifact(id unique.Handle[ID]) (*Checksum, error)
+ Artifact(ctx context.Context, id unique.Handle[ID]) (*Checksum, error)
// Checksum returns an [Artifact] producing the specified checksum.
Checksum(checksum unique.Handle[Checksum]) Artifact
// Status returns [io.ReadCloser] of the status file of an [Artifact]
// corresponding to id, or nil if this [Artifact] is not available or a
// status file is not present.
- Status(id unique.Handle[ID]) (io.ReadCloser, error)
+ Status(r *RContext, id unique.Handle[ID]) (io.ReadCloser, error)
}
// Cache is a support layer that implementations of [Artifact] can use to store
@@ -1833,7 +1833,7 @@ func (r *RContext) NewMeasuredReader(
}
// tryExtern attempts to obtain an [Artifact] outcome from extern.
-func (c *Cache) tryExtern(id unique.Handle[ID]) (
+func (c *Cache) tryExtern(ctx context.Context, id unique.Handle[ID]) (
unique.Handle[Checksum],
io.ReadCloser,
error,
@@ -1845,7 +1845,7 @@ func (c *Cache) tryExtern(id unique.Handle[ID]) (
return zeroChecksum, nil, nil
}
- v, err := c.extern.Artifact(id)
+ v, err := c.extern.Artifact(ctx, id)
if err != nil {
return zeroChecksum, nil, err
}
@@ -1862,7 +1862,7 @@ func (c *Cache) tryExtern(id unique.Handle[ID]) (
}
var status io.ReadCloser
- status, err = c.extern.Status(id)
+ status, err = c.extern.Status(&RContext{common{ctx, c}}, id)
return checksum, status, err
}
@@ -2205,7 +2205,7 @@ func (c *Cache) cure(a Artifact, curesExempt bool) (
externChecksum unique.Handle[Checksum]
externStatus io.ReadCloser
)
- if externChecksum, externStatus, err = c.tryExtern(id); err != nil {
+ if externChecksum, externStatus, err = c.tryExtern(ctx, id); err != nil {
if c.msg.IsVerbose() {
c.msg.Verbosef("extern %s: %v", reportName(ca, id), err)
}
diff --git a/internal/pkg/pkg_test.go b/internal/pkg/pkg_test.go
index 1239bed3..d4e9e855 100644
--- a/internal/pkg/pkg_test.go
+++ b/internal/pkg/pkg_test.go
@@ -204,7 +204,7 @@ type stubExtern struct {
status map[unique.Handle[pkg.ID]]string
}
-func (e stubExtern) Artifact(id unique.Handle[pkg.ID]) (*pkg.Checksum, error) {
+func (e stubExtern) Artifact(_ context.Context, id unique.Handle[pkg.ID]) (*pkg.Checksum, error) {
if checksum, ok := e.artifact[id]; ok {
return &checksum, nil
}
@@ -219,7 +219,7 @@ func (e stubExtern) Checksum(checksum unique.Handle[pkg.Checksum]) pkg.Artifact
return pkg.NewArchive(pkg.NewFile("", buf.Bytes()))
}
-func (e stubExtern) Status(id unique.Handle[pkg.ID]) (io.ReadCloser, error) {
+func (e stubExtern) Status(_ *pkg.RContext, id unique.Handle[pkg.ID]) (io.ReadCloser, error) {
if status, ok := e.status[id]; ok {
return io.NopCloser(strings.NewReader(status)), nil
}