Docker-DCO-1.1-Signed-off-by: Cristian Staretu <cristian.staretu@gmail.com> (github: unclejack)
| ... | ... |
@@ -22,6 +22,26 @@ func NewReadCloserWrapper(r io.Reader, closer func() error) io.ReadCloser {
|
| 22 | 22 |
} |
| 23 | 23 |
} |
| 24 | 24 |
|
| 25 |
+type readerErrWrapper struct {
|
|
| 26 |
+ reader io.Reader |
|
| 27 |
+ closer func() |
|
| 28 |
+} |
|
| 29 |
+ |
|
| 30 |
+func (r *readerErrWrapper) Read(p []byte) (int, error) {
|
|
| 31 |
+ n, err := r.reader.Read(p) |
|
| 32 |
+ if err != nil {
|
|
| 33 |
+ r.closer() |
|
| 34 |
+ } |
|
| 35 |
+ return n, err |
|
| 36 |
+} |
|
| 37 |
+ |
|
| 38 |
+func NewReaderErrWrapper(r io.Reader, closer func()) io.Reader {
|
|
| 39 |
+ return &readerErrWrapper{
|
|
| 40 |
+ reader: r, |
|
| 41 |
+ closer: closer, |
|
| 42 |
+ } |
|
| 43 |
+} |
|
| 44 |
+ |
|
| 25 | 45 |
type bufReader struct {
|
| 26 | 46 |
sync.Mutex |
| 27 | 47 |
buf *bytes.Buffer |