gtsocial-umbx

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

buffer_pool.go (663B)


      1 package logrus
      2 
      3 import (
      4 	"bytes"
      5 	"sync"
      6 )
      7 
      8 var (
      9 	bufferPool BufferPool
     10 )
     11 
     12 type BufferPool interface {
     13 	Put(*bytes.Buffer)
     14 	Get() *bytes.Buffer
     15 }
     16 
     17 type defaultPool struct {
     18 	pool *sync.Pool
     19 }
     20 
     21 func (p *defaultPool) Put(buf *bytes.Buffer) {
     22 	p.pool.Put(buf)
     23 }
     24 
     25 func (p *defaultPool) Get() *bytes.Buffer {
     26 	return p.pool.Get().(*bytes.Buffer)
     27 }
     28 
     29 // SetBufferPool allows to replace the default logrus buffer pool
     30 // to better meets the specific needs of an application.
     31 func SetBufferPool(bp BufferPool) {
     32 	bufferPool = bp
     33 }
     34 
     35 func init() {
     36 	SetBufferPool(&defaultPool{
     37 		pool: &sync.Pool{
     38 			New: func() interface{} {
     39 				return new(bytes.Buffer)
     40 			},
     41 		},
     42 	})
     43 }