不同的Message对应不同的业务
支持多路由调度管理,拥有一个Router集合属性
添加路由的方法
//添加路由的方法 func (ms *MsgHandler)AddRouter(msgID uint32, router ziface.IRouter) { //判断msgid 是否存在 if _, ok := ms.routers[msgID]; ok { fmt.Println("该绑定已经存在, msgID:", msgID) return } //添加msgid和router的对应关系 ms.routers[msgID] = router return }调度路由的方法
//调度路由的方法 func (ms *MsgHandler)DoMsgHandler(request ziface.IRequest) { //取出路由 router := ms.routers[request.GetMessage().GetMsgId()] //执行方法 router.PreHandle(request) router.Handle(request) router.PostHandle(request) }结构体
//新增 //消息管理模块 多路由 msgHandler ziface.IMsgHandler构造函数
//创建一个新的连接 func NewConnection(conn *net.TCPConn, connID uint32, msgHandler ziface.IMsgHandler) ziface.IConnection { c := &Connection{ conn:conn, connID:connID, isClosed:false, msgHandler: msgHandler, } return c }方法
//针对链接读业务的方法 func (c *Connection) startReader() { //新增 //路由处理业务 go c.msgHandler.DoMsgHandler(req) }结构体
//新增 //消息管理模块 多路由 msgHandler ziface.IMsgHandler构造函数
func NewServer() ziface.IServer { return &Server{ //新增 msgHandler:NewMsgHandler(), } }添加路由方法
func (s *Server) AddRouter(msgID uint32, router ziface.IRouter) { s.msgHandler.AddRouter(msgID, router) fmt.Println("add router success!") }