From dd97f278a0d4f561467577263055d0f84a1219a5 Mon Sep 17 00:00:00 2001 From: unclejack Date: Wed, 20 Aug 2014 23:50:42 +0300 Subject: [PATCH] pkg/ioutils: add ReaderErrWrapper to readers Docker-DCO-1.1-Signed-off-by: Cristian Staretu (github: unclejack) Upstream-commit: bd130e72a06dc3e8de521ce365bf4933f36b2417 Component: engine --- components/engine/pkg/ioutils/readers.go | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/components/engine/pkg/ioutils/readers.go b/components/engine/pkg/ioutils/readers.go index f059bb1666..22f46fbd92 100644 --- a/components/engine/pkg/ioutils/readers.go +++ b/components/engine/pkg/ioutils/readers.go @@ -22,6 +22,26 @@ func NewReadCloserWrapper(r io.Reader, closer func() error) io.ReadCloser { } } +type readerErrWrapper struct { + reader io.Reader + closer func() +} + +func (r *readerErrWrapper) Read(p []byte) (int, error) { + n, err := r.reader.Read(p) + if err != nil { + r.closer() + } + return n, err +} + +func NewReaderErrWrapper(r io.Reader, closer func()) io.Reader { + return &readerErrWrapper{ + reader: r, + closer: closer, + } +} + type bufReader struct { sync.Mutex buf *bytes.Buffer