Zinx-V0.6 多路由模式

    xiaoxiao2023-11-17  151

    不同的Message对应不同的业务

    消息管理模块

    支持多路由调度管理,拥有一个Router集合属性

    抽象层
    type IMsgHandler interface { //添加路由的方法 AddRouter(msgID uint32, router IRouter) //调度路由的方法 DoMsgHandler(request ziface,IRequest) }
    实现层
    属性
    //路由集合 map[uint32] 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) }
    修改
    改修connection模块

    结构体

    //新增 //消息管理模块 多路由 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) }
    修改server模块

    结构体

    //新增 //消息管理模块 多路由 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!") }
    最新回复(0)