github.com/wI2L/jettison@v0.7.4/buffer.go (about)

     1  package jettison
     2  
     3  import "sync"
     4  
     5  const defaultBufCap = 4096
     6  
     7  var bufferPool sync.Pool // *buffer
     8  
     9  type buffer struct{ B []byte }
    10  
    11  // Reset resets the buffer to be empty.
    12  func (b *buffer) Reset() { b.B = b.B[:0] }
    13  
    14  // cachedBuffer returns an empty buffer
    15  // from a pool, or initialize a new one
    16  // with a default capacity.
    17  func cachedBuffer() *buffer {
    18  	v := bufferPool.Get()
    19  	if v != nil {
    20  		buf := v.(*buffer)
    21  		buf.Reset()
    22  		return buf
    23  	}
    24  	return &buffer{
    25  		B: make([]byte, 0, defaultBufCap),
    26  	}
    27  }