diff --git a/proxyreader.go b/proxyreader.go index 193ef0a..5a46ea7 100644 --- a/proxyreader.go +++ b/proxyreader.go @@ -54,21 +54,20 @@ return n, err } -func (b *Bar) newProxyReader(r io.Reader, hasEwma bool) (rc io.ReadCloser) { +func (b *Bar) newProxyReader(r io.Reader, hasEwma bool) io.ReadCloser { pr := proxyReader{toReadCloser(r), b} + if hasEwma { + epr := ewmaProxyReader{pr} + if wt, ok := r.(io.WriterTo); ok { + pwt := proxyWriterTo{pr, wt} + return ewmaProxyWriterTo{epr, pwt} + } + return epr + } if wt, ok := r.(io.WriterTo); ok { - pw := proxyWriterTo{pr, wt} - if hasEwma { - rc = ewmaProxyWriterTo{ewmaProxyReader{pr}, pw} - } else { - rc = pw - } - } else if hasEwma { - rc = ewmaProxyReader{pr} - } else { - rc = pr + return proxyWriterTo{pr, wt} } - return rc + return pr } func toReadCloser(r io.Reader) io.ReadCloser {