系统简单结构
client--->[logicd1, logic2]--->cached
从client过来的消息分发给先前注册的Handler
csMsgDispatcher->Dispatch(buf, len, param);
buf + len就是表示cs message。
param附加参数,后面将用到。
从cached也有消息发过来,和cs消息处理方法一样,用另外一个MsgDispatcher分发器对象。
登录处理流程(主要看角色数据是否已经存在)
1. 角色登录,角色数据一存在,处理完登录流程;否则;
2. 向cached发获取角色数据请求,请求中带上cs message,这个cs message做为透传,后面有用。结束(登录流程未完成)。
注意看2中余下部分的处理,粗暴直接没公用性的处理方式就不说了。
收到从cached过来的消息处理如下:
获取cached的角色数据,生成角色对象;
重新分发cs message, 这个cs message请看登录处理流程2,带上的cs message。
这样,重新走了一遍登录流程,肯定只要上面第1步就登录完成了。
还有一个类似判断是否好友和公会成员,处理机制类似,从好友服务器和公会服务器得到结果后,要将"是否是好友", “是否是公会成员”的信息通过param,传给cs的Handler。