github.com/nguyentm83/docker@v1.5.0/pkg/pools/pools_nopool.go (about) 1 // +build !go1.3 2 3 package pools 4 5 import ( 6 "bufio" 7 "io" 8 9 "github.com/docker/docker/pkg/ioutils" 10 ) 11 12 var ( 13 BufioReader32KPool *BufioReaderPool 14 BufioWriter32KPool *BufioWriterPool 15 ) 16 17 const buffer32K = 32 * 1024 18 19 type BufioReaderPool struct { 20 size int 21 } 22 23 func init() { 24 BufioReader32KPool = newBufioReaderPoolWithSize(buffer32K) 25 BufioWriter32KPool = newBufioWriterPoolWithSize(buffer32K) 26 } 27 28 func newBufioReaderPoolWithSize(size int) *BufioReaderPool { 29 return &BufioReaderPool{size: size} 30 } 31 32 func (bufPool *BufioReaderPool) Get(r io.Reader) *bufio.Reader { 33 return bufio.NewReaderSize(r, bufPool.size) 34 } 35 36 func (bufPool *BufioReaderPool) Put(b *bufio.Reader) { 37 b.Reset(nil) 38 } 39 40 func (bufPool *BufioReaderPool) NewReadCloserWrapper(buf *bufio.Reader, r io.Reader) io.ReadCloser { 41 return ioutils.NewReadCloserWrapper(r, func() error { 42 if readCloser, ok := r.(io.ReadCloser); ok { 43 return readCloser.Close() 44 } 45 return nil 46 }) 47 } 48 49 type BufioWriterPool struct { 50 size int 51 } 52 53 func newBufioWriterPoolWithSize(size int) *BufioWriterPool { 54 return &BufioWriterPool{size: size} 55 } 56 57 func (bufPool *BufioWriterPool) Get(w io.Writer) *bufio.Writer { 58 return bufio.NewWriterSize(w, bufPool.size) 59 } 60 61 func (bufPool *BufioWriterPool) Put(b *bufio.Writer) { 62 b.Reset(nil) 63 } 64 65 func (bufPool *BufioWriterPool) NewWriteCloserWrapper(buf *bufio.Writer, w io.Writer) io.WriteCloser { 66 return ioutils.NewWriteCloserWrapper(w, func() error { 67 buf.Flush() 68 if writeCloser, ok := w.(io.WriteCloser); ok { 69 return writeCloser.Close() 70 } 71 return nil 72 }) 73 }