150 lines
5.3 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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))
})
}