Root Zanli
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
opt
/
go
/
pkg
/
mod
/
golang.org
/
x
/
net@v0.33.0
/
quic
/
Filename :
dgram.go
back
Copy
// 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 localAddr netip.AddrPort peerAddr netip.AddrPort ecn ecnBits } // Explicit Congestion Notification bits. // // https://www.rfc-editor.org/rfc/rfc3168.html#section-5 type ecnBits byte const ( ecnMask = 0b000000_11 ecnNotECT = 0b000000_00 ecnECT1 = 0b000000_01 ecnECT0 = 0b000000_10 ecnCE = 0b000000_11 ) var datagramPool = sync.Pool{ New: func() any { return &datagram{ b: make([]byte, maxUDPPayloadSize), } }, } func newDatagram() *datagram { m := datagramPool.Get().(*datagram) *m = datagram{ b: m.b[:cap(m.b)], } return m } func (m *datagram) recycle() { if cap(m.b) != maxUDPPayloadSize { return } datagramPool.Put(m) }