贸易时代的消息处理流程

当初在设计消息处理的时候,考虑的是网络层与业务逻辑层分离,即网络层只管手法数据,消息处理就不管了。

而对于消息处理,在最初设计的时候,并没有一个统一的方法来管理消息,而是丢给各个模块来处理。为什么说是丢给各个模块呢?

当初在设计消息结构的时候,消息ID并不是采用单一变量,而是一个由2个byte组合的组合变量,一个byte表示是哪个模块,另外一个byte是消息ID,当然这个消息ID的数字可能重复,但是和前面的模块byte组合起来就是一个唯一值了。按照前面的说法,因为消息是分模块的,因此在消息处理流程上,是先丢给当前用户所在的区域(city)由它来负责消息的解析,在city类里,根据消息的模块,再将消息传入具体的处理模块(DoMsg),在每个模块里又有一个消息处理函数,这时负责对消息进行必要的处理,并调用最终的处理逻辑函数。

这样的处理方法,在现在看来,有点繁琐,主要是对于最终消息和对应的处理函数的对应上,会走过很多路,并且在对象设计上,每个逻辑处理对象里都可能包含消息的分类函数,对类的职责显得不够清晰。因此在下一个阶段处理就是将消息处理和逻辑处理分离开,当消息发送到服务器端后,通过一个消息分发函数,直接可以让游戏消息调用到具体的业务逻辑。

原消息处理代码:

server/GameServer/city.cpp

 

未来的消息处理流程参考:

tl消息处理

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值