// Copyright 2023 The Go Authors. All rights reserved. | |
// Use of this source code is governed by a BSD-style | |
// license that can be found in the LICENSE file. | |
//go:build go1.21 | |
package quic | |
import ( | |
"net/netip" | |
"sync" | |
) | |
type datagram struct { | |
b []byte | |
addr netip.AddrPort | |
} | |
var datagramPool = sync.Pool{ | |
New: func() any { | |
return &datagram{ | |
b: make([]byte, maxUDPPayloadSize), | |
} | |
}, | |
} | |
func newDatagram() *datagram { | |
m := datagramPool.Get().(*datagram) | |
m.b = m.b[:cap(m.b)] | |
return m | |
} | |
func (m *datagram) recycle() { | |
if cap(m.b) != maxUDPPayloadSize { | |
return | |
} | |
datagramPool.Put(m) | |
} |