1package wire 2 3import ( 4 "sync" 5 6 "github.com/lucas-clemente/quic-go/internal/protocol" 7) 8 9var pool sync.Pool 10 11func init() { 12 pool.New = func() interface{} { 13 return &StreamFrame{ 14 Data: make([]byte, 0, protocol.MaxPacketBufferSize), 15 fromPool: true, 16 } 17 } 18} 19 20func GetStreamFrame() *StreamFrame { 21 f := pool.Get().(*StreamFrame) 22 return f 23} 24 25func 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} 34