add: cancel transfer

This commit is contained in:
2026-02-04 15:06:41 +08:00
parent c2f3c2c3df
commit 68533dad31
9 changed files with 529 additions and 221 deletions

View File

@@ -0,0 +1,21 @@
package transfer
import (
"context"
"io"
)
// ContextReader 带有 Context 的 Reader
type ContextReader struct {
ctx context.Context
r io.Reader
}
func (cr *ContextReader) Read(p []byte) (n int, err error) {
select {
case <-cr.ctx.Done():
return 0, cr.ctx.Err() // 返回 context.Canceled 错误
default:
return cr.r.Read(p)
}
}