Zinx-V0.6 多路由模式

不同的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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值