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