()
| 41 | } |
| 42 | |
| 43 | func (b *Reader) fill() error { |
| 44 | if b.err != nil { |
| 45 | return b.err |
| 46 | } |
| 47 | if b.rpos > 0 { |
| 48 | n := copy(b.buf, b.buf[b.rpos:b.wpos]) |
| 49 | b.rpos = 0 |
| 50 | b.wpos = n |
| 51 | } |
| 52 | n, err := b.rd.Read(b.buf[b.wpos:]) |
| 53 | if err != nil { |
| 54 | b.err = err |
| 55 | } else if n == 0 { |
| 56 | b.err = io.ErrNoProgress |
| 57 | } else { |
| 58 | b.wpos += n |
| 59 | } |
| 60 | return b.err |
| 61 | } |
| 62 | |
| 63 | func (b *Reader) buffered() int { |
| 64 | return b.wpos - b.rpos |