we don't need cancelable reader

This commit is contained in:
Dhruv Sringari
2022-04-14 11:30:30 -07:00
parent 3b0dd86d18
commit a2135f7817

View File

@@ -178,7 +178,6 @@ func (s3or *s3ObjectReader) readRange(ctx context.Context, name addr, p []byte,
}
}
}
//cancelableReader := NewCancelableReader(ctx, result.Body)
n, err = io.ReadFull(result.Body, p)
return n, sz, err
}
@@ -210,53 +209,3 @@ func isConnReset(err error) bool {
scErr, ok := nErr.Err.(*os.SyscallError)
return ok && scErr.Err == syscall.ECONNRESET
}
type CancelableReader struct {
ctx context.Context
data chan []byte
err error
r io.Reader
}
func (c *CancelableReader) begin() {
buf := make([]byte, 1024)
for {
if c.ctx.Err() != nil {
return
}
n, err := c.r.Read(buf)
if n > 0 {
tmp := make([]byte, n)
copy(tmp, buf[:n])
c.data <- tmp
}
if err != nil {
c.err = err
close(c.data)
return
}
}
}
func (c *CancelableReader) Read(p []byte) (int, error) {
select {
case <-c.ctx.Done():
return 0, c.ctx.Err()
case d, ok := <-c.data:
if !ok {
return 0, c.err
}
copy(p, d)
return len(d), nil
}
}
func NewCancelableReader(ctx context.Context, r io.Reader) *CancelableReader {
c := &CancelableReader{
r: r,
ctx: ctx,
data: make(chan []byte),
}
go c.begin()
return c
}