123456789101112131415161718192021222324252627282930 |
- // Package readers provides io.Reader related utilities.
- package readers
- import (
- "context"
- "io"
- )
- // NewContextReader creates a reader, that returns any errors that ctx gives
- func NewContextReader(ctx context.Context, r io.Reader) io.Reader {
- return &contextReader{
- ctx: ctx,
- r: r,
- }
- }
- type contextReader struct {
- ctx context.Context
- r io.Reader
- }
- // Read bytes as per io.Reader interface
- func (cr *contextReader) Read(p []byte) (n int, err error) {
- err = cr.ctx.Err()
- if err != nil {
- return 0, err
- }
- return cr.r.Read(p)
- }
|