buffer_pool.go 428 B

12345678910111213141516171819202122232425262728
  1. package quic
  2. import (
  3. "sync"
  4. "v2ray.com/core/common/bytespool"
  5. "github.com/lucas-clemente/quic-go/internal/protocol"
  6. )
  7. var bufferPool *sync.Pool
  8. func getPacketBuffer() *[]byte {
  9. b := bufferPool.Get().([]byte)
  10. return &b
  11. }
  12. func putPacketBuffer(buf *[]byte) {
  13. b := *buf
  14. if cap(b) < 2048 {
  15. return
  16. }
  17. bufferPool.Put(b[:cap(b)])
  18. }
  19. func init() {
  20. bufferPool = bytespool.GetPool(int32(protocol.MaxReceivePacketSize))
  21. }