dockerfiles/anylink/server/handler/pool.go

53 lines
833 B
Go
Raw Normal View History

2021-06-08 20:45:26 +08:00
package handler
import (
"sync"
"github.com/bjdgyc/anylink/sessdata"
)
var plPool = sync.Pool{
New: func() interface{} {
pl := sessdata.Payload{
Data: make([]byte, 0, BufferSize),
}
// fmt.Println("plPool-init", len(pl.Data), cap(pl.Data))
return &pl
},
}
func getPayload() *sessdata.Payload {
pl := plPool.Get().(*sessdata.Payload)
return pl
}
func putPayload(pl *sessdata.Payload) {
pl.LType = 0
pl.PType = 0
pl.Data = pl.Data[:0]
plPool.Put(pl)
}
var bytePool = sync.Pool{
New: func() interface{} {
b := make([]byte, 0, BufferSize)
// fmt.Println("bytePool-init")
return b
},
}
func getByteZero() []byte {
b := bytePool.Get().([]byte)
return b
}
func getByteFull() []byte {
b := bytePool.Get().([]byte)
b = b[:BufferSize]
return b
}
func putByte(b []byte) {
b = b[:0]
bytePool.Put(b)
}