github.com/MerlinKodo/quic-go@v0.39.2/internal/wire/pool.go (about) 1 package wire 2 3 import ( 4 "sync" 5 6 "github.com/MerlinKodo/quic-go/internal/protocol" 7 ) 8 9 var pool sync.Pool 10 11 func init() { 12 pool.New = func() interface{} { 13 return &StreamFrame{ 14 Data: make([]byte, 0, protocol.MaxPacketBufferSize), 15 fromPool: true, 16 } 17 } 18 } 19 20 func GetStreamFrame() *StreamFrame { 21 f := pool.Get().(*StreamFrame) 22 return f 23 } 24 25 func putStreamFrame(f *StreamFrame) { 26 if !f.fromPool { 27 return 28 } 29 if protocol.ByteCount(cap(f.Data)) != protocol.MaxPacketBufferSize { 30 panic("wire.PutStreamFrame called with packet of wrong size!") 31 } 32 pool.Put(f) 33 }