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