1
0
mirror of https://github.com/fumiama/WireGold.git synced 2026-06-09 18:40:36 +08:00
Files
WireGold/gold/head/pool.go
2025-02-25 19:38:16 +09:00

38 lines
671 B
Go

package head
import (
"github.com/fumiama/orbyte"
"github.com/fumiama/orbyte/pbuf"
)
type packetPooler struct {
orbyte.Pooler[Packet]
}
func (packetPooler) New(_ any, pooled Packet) Packet {
return pooled
}
func (packetPooler) Parse(obj any, _ Packet) Packet {
return obj.(Packet)
}
func (packetPooler) Reset(p *Packet) {
p.idxdatsz = 0
p.data = pbuf.Bytes{}
p.a, p.b = 0, 0
p.rembytes = 0
}
func (packetPooler) Copy(dst, src *Packet) {
*dst = *src
dst.data = src.data.Copy()
}
var packetPool = orbyte.NewPool[Packet](packetPooler{})
// selectPacket 从池中取出一个 Packet
func selectPacket() *orbyte.Item[Packet] {
return packetPool.New(nil)
}