summaryrefslogtreecommitdiffstats
path: root/vendor/github.com/philhofer
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/philhofer')
-rw-r--r--vendor/github.com/philhofer/fwd/reader.go17
-rw-r--r--vendor/github.com/philhofer/fwd/writer.go24
2 files changed, 33 insertions, 8 deletions
diff --git a/vendor/github.com/philhofer/fwd/reader.go b/vendor/github.com/philhofer/fwd/reader.go
index 75be62ab09..6918d3e211 100644
--- a/vendor/github.com/philhofer/fwd/reader.go
+++ b/vendor/github.com/philhofer/fwd/reader.go
@@ -50,11 +50,24 @@ func NewReader(r io.Reader) *Reader {
}
// NewReaderSize returns a new *Reader that
-// reads from 'r' and has a buffer size 'n'
+// reads from 'r' and has a buffer size 'n'.
func NewReaderSize(r io.Reader, n int) *Reader {
+ buf := make([]byte, 0, max(n, minReaderSize))
+ return NewReaderBuf(r, buf)
+}
+
+// NewReaderBuf returns a new *Reader that
+// reads from 'r' and uses 'buf' as a buffer.
+// 'buf' is not used when has smaller capacity than 16,
+// custom buffer is allocated instead.
+func NewReaderBuf(r io.Reader, buf []byte) *Reader {
+ if cap(buf) < minReaderSize {
+ buf = make([]byte, 0, minReaderSize)
+ }
+ buf = buf[:0]
rd := &Reader{
r: r,
- data: make([]byte, 0, max(minReaderSize, n)),
+ data: buf,
}
if s, ok := r.(io.Seeker); ok {
rd.rs = s
diff --git a/vendor/github.com/philhofer/fwd/writer.go b/vendor/github.com/philhofer/fwd/writer.go
index 2dc392a91b..4d6ea15b33 100644
--- a/vendor/github.com/philhofer/fwd/writer.go
+++ b/vendor/github.com/philhofer/fwd/writer.go
@@ -29,16 +29,28 @@ func NewWriter(w io.Writer) *Writer {
}
}
-// NewWriterSize returns a new writer
-// that writes to 'w' and has a buffer
-// that is 'size' bytes.
-func NewWriterSize(w io.Writer, size int) *Writer {
- if wr, ok := w.(*Writer); ok && cap(wr.buf) >= size {
+// NewWriterSize returns a new writer that
+// writes to 'w' and has a buffer size 'n'.
+func NewWriterSize(w io.Writer, n int) *Writer {
+ if wr, ok := w.(*Writer); ok && cap(wr.buf) >= n {
return wr
}
+ buf := make([]byte, 0, max(n, minWriterSize))
+ return NewWriterBuf(w, buf)
+}
+
+// NewWriterBuf returns a new writer
+// that writes to 'w' and has 'buf' as a buffer.
+// 'buf' is not used when has smaller capacity than 18,
+// custom buffer is allocated instead.
+func NewWriterBuf(w io.Writer, buf []byte) *Writer {
+ if cap(buf) < minWriterSize {
+ buf = make([]byte, 0, minWriterSize)
+ }
+ buf = buf[:0]
return &Writer{
w: w,
- buf: make([]byte, 0, max(size, minWriterSize)),
+ buf: buf,
}
}