/
setup.go
42 lines (27 loc) · 972 Bytes
/
setup.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
package udp
import (
"github.com/davyxu/cellnet"
"github.com/davyxu/cellnet/msglog"
"github.com/davyxu/cellnet/peer/udp"
"github.com/davyxu/cellnet/proc"
)
type UDPMessageTransmitter struct {
}
func (UDPMessageTransmitter) OnRecvMessage(ses cellnet.Session) (msg interface{}, err error) {
data := ses.Raw().(udp.DataReader).ReadData()
msg, err = recvPacket(data)
msglog.WriteRecvLogger(log, "udp", ses, msg)
return
}
func (UDPMessageTransmitter) OnSendMessage(ses cellnet.Session, msg interface{}) error {
writer := ses.(udp.DataWriter)
msglog.WriteSendLogger(log, "udp", ses, msg)
// 由于UDP session会被重用,这里使用peer的ContextSet为内存池分配
return sendPacket(writer, ses.Peer().(cellnet.ContextSet), msg)
}
func init() {
proc.RegisterProcessor("udp.ltv", func(bundle proc.ProcessorBundle, userCallback cellnet.EventCallback) {
bundle.SetTransmitter(new(UDPMessageTransmitter))
bundle.SetCallback(userCallback)
})
}