stdcopy: improve perf by avoiding buffer growth

Docker-DCO-1.1-Signed-off-by: Cristian Staretu <cristian.staretu@gmail.com> (github: unclejack)
Upstream-commit: 277aa9c67415b9b76ab17daea583b51f8560a6a5
Component: engine
This commit is contained in:
unclejack
2014-09-17 18:06:17 +03:00
parent ba4bc005be
commit 1aa081f9b0
+12 -4
View File
@@ -29,14 +29,22 @@ type StdWriter struct {
}
func (w *StdWriter) Write(buf []byte) (n int, err error) {
var n1, n2 int
if w == nil || w.Writer == nil {
return 0, errors.New("Writer not instanciated")
}
binary.BigEndian.PutUint32(w.prefix[4:], uint32(len(buf)))
buf = append(w.prefix[:], buf...)
n, err = w.Writer.Write(buf)
return n - StdWriterPrefixLen, err
n1, err = w.Writer.Write(w.prefix[:])
if err != nil {
n = n1 - StdWriterPrefixLen
} else {
n2, err = w.Writer.Write(buf)
n = n1 + n2 - StdWriterPrefixLen
}
if n < 0 {
n = 0
}
return
}
// NewStdWriter instanciates a new Writer.