150 lines
5.3 KiB
Go
150 lines
5.3 KiB
Go
package baseserver
|
||
|
||
import (
|
||
"log"
|
||
"rocommon"
|
||
"rocommon/socket"
|
||
gatemodel "roserver/gate/model"
|
||
)
|
||
|
||
func init() {
|
||
log.SetFlags(log.Lshortfile | log.LstdFlags)
|
||
log.Println("base server init hooker [RegisterProcessRPC]")
|
||
|
||
//gate处理前端
|
||
socket.RegisterProcessRPC("gate.frontend",
|
||
func(b rocommon.ProcessorRPCBundle, userCb rocommon.EventCallBack, arg ...interface{}) {
|
||
b.SetTransmitter(new(gatemodel.DirectTCPMessageProcessor)) //直接传递数据或者返回数据给client,例如pingack
|
||
|
||
b.SetHooker(socket.NewMultiTCPEventHook(
|
||
new(gatemodel.FrontendTCPEventHook), //gate消息处理
|
||
new(socket.TCPEventHook), //基础消息处理
|
||
))
|
||
b.SetCallback(socket.QueueEventCall(userCb))
|
||
})
|
||
//gate websocket前端处理
|
||
socket.RegisterProcessRPC("gatews.frontend",
|
||
func(b rocommon.ProcessorRPCBundle, userCb rocommon.EventCallBack, arg ...interface{}) {
|
||
b.SetTransmitter(new(gatemodel.DirectWSMessageTransmitter)) //直接传递数据或者返回数据给client,例如pingack
|
||
|
||
b.SetHooker(socket.NewMultiTCPEventHook(
|
||
new(gatemodel.FrontendTCPEventHook), //gate消息处理
|
||
new(socket.TCPEventHook), //基础消息处理
|
||
))
|
||
b.SetCallback(socket.QueueEventCall(userCb))
|
||
})
|
||
|
||
//gate连接后端的处理
|
||
socket.RegisterProcessRPC("gate.backend",
|
||
func(b rocommon.ProcessorRPCBundle, userCb rocommon.EventCallBack, arg ...interface{}) {
|
||
b.SetTransmitter(new(socket.TCPMessageProcessor)) //pb 解析数据
|
||
|
||
b.SetHooker(socket.NewMultiTCPEventHook(
|
||
new(ServerTCPEventHook), //服务器间互联消息处理
|
||
new(gatemodel.BroadcasterTCPEventHook), //gate消息处理
|
||
new(socket.TCPEventHook), //基础消息处理
|
||
))
|
||
b.SetCallback(socket.QueueEventCall(userCb))
|
||
})
|
||
|
||
//todo...
|
||
//回调处理器绑定
|
||
//后端服务器处理
|
||
socket.RegisterProcessRPC("game.backend",
|
||
func(b rocommon.ProcessorRPCBundle, userCb rocommon.EventCallBack, arg ...interface{}) {
|
||
b.SetTransmitter(new(socket.TCPMessageProcessor)) //pb解析数据
|
||
|
||
b.SetHooker(socket.NewMultiTCPEventHook(
|
||
new(ServerTCPEventHook), //服务器间互联消息处理
|
||
new(BackendTCPEventHook), //game服务器处理gate透传过来的消息
|
||
new(socket.TCPEventHook), //基础消息处理
|
||
))
|
||
b.SetCallback(socket.QueueEventCall(userCb))
|
||
})
|
||
|
||
//todo...
|
||
//db处理game的请求
|
||
socket.RegisterProcessRPC("db.backend",
|
||
func(b rocommon.ProcessorRPCBundle, userCb rocommon.EventCallBack, arg ...interface{}) {
|
||
b.SetTransmitter(new(socket.TCPMessageProcessor))
|
||
|
||
b.SetHooker(socket.MultiTCPEventHook{
|
||
new(ServerTCPEventHook), //服务器间互联消息处理
|
||
new(ServiceTCPEventHook), //和db服务器相关的协议处理
|
||
new(socket.TCPEventHook), //基础消息处理
|
||
})
|
||
b.SetCallback(socket.QueueEventCall(userCb))
|
||
})
|
||
|
||
//auth处理gate请求,后续的登陆验证
|
||
socket.RegisterProcessRPC("auth.backend",
|
||
func(b rocommon.ProcessorRPCBundle, userCb rocommon.EventCallBack, arg ...interface{}) {
|
||
b.SetTransmitter(new(socket.TCPMessageProcessor))
|
||
|
||
b.SetHooker(socket.MultiTCPEventHook{
|
||
new(ServerTCPEventHook), //服务器间互联消息处理
|
||
new(BackendTCPEventHook), //和gate服务器相关的协议处理
|
||
new(socket.TCPEventHook), //基础消息处理
|
||
})
|
||
b.SetCallback(socket.QueueEventCall(userCb))
|
||
})
|
||
|
||
//social处理聊天,好友,邮件等信息
|
||
socket.RegisterProcessRPC("social.backend",
|
||
func(b rocommon.ProcessorRPCBundle, userCb rocommon.EventCallBack, arg ...interface{}) {
|
||
b.SetTransmitter(new(socket.TCPMessageProcessor))
|
||
|
||
b.SetHooker(socket.MultiTCPEventHook{
|
||
new(ServerTCPEventHook), //服务器间互联消息处理
|
||
new(BackendTCPEventHook), //和game服务器相关的协议处理
|
||
new(socket.TCPEventHook), //基础消息处理
|
||
})
|
||
b.SetCallback(socket.QueueEventCall(userCb))
|
||
})
|
||
|
||
//aoi同步处理
|
||
socket.RegisterProcessRPC("aoi.backend",
|
||
func(b rocommon.ProcessorRPCBundle, userCb rocommon.EventCallBack, arg ...interface{}) {
|
||
b.SetTransmitter(new(socket.TCPMessageProcessor))
|
||
|
||
b.SetHooker(socket.MultiTCPEventHook{
|
||
new(ServerTCPEventHook), //服务器间互联消息处理
|
||
new(BackendTCPEventHook),
|
||
new(socket.TCPEventHook), //基础消息处理
|
||
})
|
||
b.SetCallback(socket.QueueEventCall(userCb))
|
||
})
|
||
|
||
//common
|
||
socket.RegisterProcessRPC("common.backend",
|
||
func(b rocommon.ProcessorRPCBundle, userCb rocommon.EventCallBack, arg ...interface{}) {
|
||
b.SetTransmitter(new(socket.TCPMessageProcessor))
|
||
|
||
b.SetHooker(socket.MultiTCPEventHook{
|
||
new(ServerTCPEventHook), //服务器间互联消息处理
|
||
new(BackendTCPEventHook),
|
||
new(socket.TCPEventHook), //基础消息处理
|
||
})
|
||
b.SetCallback(socket.QueueEventCall(userCb))
|
||
})
|
||
|
||
//webgm
|
||
socket.RegisterProcessRPC("http",
|
||
func(b rocommon.ProcessorRPCBundle, userCb rocommon.EventCallBack, arg ...interface{}) {
|
||
b.SetCallback(socket.QueueEventCall(userCb))
|
||
})
|
||
|
||
//corssrouter
|
||
socket.RegisterProcessRPC("crossrouter.backend",
|
||
func(b rocommon.ProcessorRPCBundle, userCb rocommon.EventCallBack, arg ...interface{}) {
|
||
b.SetTransmitter(new(socket.TCPMessageProcessor))
|
||
|
||
b.SetHooker(socket.MultiTCPEventHook{
|
||
new(ServerTCPEventHook), //服务器间互联消息处理
|
||
new(BackendTCPEventForCrossRouterHook),
|
||
new(socket.TCPEventHook), //基础消息处理
|
||
})
|
||
b.SetCallback(socket.QueueEventCall(userCb))
|
||
})
|
||
}
|