代码拉取完成,页面将自动刷新
package netService
import (
"net"
"sync"
)
// receiveTask 客户端请求内容
type receiveUdpTask struct {
Conn *net.UDPConn //连接对象
RemoteAddr net.Addr //远程节点
ConnId uint64 //连接ID
Data []byte //客户端请求的数据
Count int //数据长度
OnCompleted func(receive *receiveUdpTask) //接收到一次数据(未分包开始处理不确定是否完成)
}
//回收
func (r *receiveUdpTask) recovery() {
r.Conn = nil
r.RemoteAddr = nil
r.ConnId = 0
r.Count = 0
r.OnCompleted = nil
}
// GetTaskId 获取连接id
func (r *receiveUdpTask) GetTaskId() uint64 {
return r.ConnId
}
// RunTask 处理数据
func (r *receiveUdpTask) RunTask() {
r.OnCompleted(r)
}
type receiveUdpTaskPool struct {
bufferSize uint
bytePool *sync.Pool
}
//udp 任务处理池
func newReceiveUdpTaskPool(bufferSize uint) *receiveUdpTaskPool {
pool := &receiveUdpTaskPool{
bufferSize: bufferSize,
bytePool: &sync.Pool{
New: func() interface{} {
data := make([]byte, bufferSize)
return &receiveUdpTask{
Data: data,
}
},
},
}
return pool
}
// Put 回收
func (b *receiveUdpTaskPool) Put(task *receiveUdpTask) {
task.recovery()
b.bytePool.Put(task)
}
// Get 获取
func (b *receiveUdpTaskPool) Get() *receiveUdpTask {
return b.bytePool.Get().(*receiveUdpTask)
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。