mirror of
https://github.com/dolthub/dolt.git
synced 2026-03-17 18:01:42 -05:00
we don't need cancelable reader
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user