| package xio | |
| import ( | |
| "context" | |
| "io" | |
| ) | |
| type readerFunc func(p []byte) (n int, err error) | |
| func (rf readerFunc) Read(p []byte) (n int, err error) { return rf(p) } | |
| func Copy(ctx context.Context, dst io.Writer, src io.Reader) (int64, error) { | |
| return io.Copy(dst, readerFunc(func(p []byte) (int, error) { | |
| select { | |
| case <-ctx.Done(): | |
| return 0, ctx.Err() | |
| default: | |
| return src.Read(p) | |
| } | |
| })) | |
| } | |