码迷,mamicode.com
首页 > 其他好文 > 详细

蘑菇街的IM 网络层

时间:2015-09-13 13:15:20      阅读:146      评论:0      收藏:0      [点我收藏+]

标签:

 
蘑菇街的IM 网络层:
API center 负责管理、注册所有的API;接受服务器数据(可以分离连接代买,仅提供接受数据的接口),调用解析接口,回调API;超时处理;有自己的线程。
有一个SuperAPI 还有一个 APIProtocal
superAPI 是所有API的基类,负责注册request和respone、timeout、保存返回闭包、打包数据(调用protocal)、发送数据。
APIProtocal封装了协议的解析、打包。
controller调用实现了Protocal的superAPI子类(childAPI),并且把回调函数的闭包传递进去,放在superAPI。
childAPI实现了APIProtocal 从而对服务器返回的数据解析,并且返回cmd、msgID。
 
APIcenter 有四个map(request response notify timeout)
request是请求 response是回复 timeout是超市处理 notify是服务器通知。
每一次通讯,都需要注册request、response、timeout。
消息处理完后,remove from map。(notify不需要remove)
 
流程如下:
1.controller 调用 childAPI的request,传入数据(object),和completion闭包。
2.childAPI->superAPI 的request统一处理流程,在center,注册request和respone、timeout、保存返回闭包、打包数据(调用protocal)、发送数据。
3.superAPI通过APIProtocol 调用childAPI的数据打包,调用center 的发送。
4.center收到tcp返回的bytes,调用protocal(在responseMap注册的API)解析。
5.解析完成清除map中的API(request、response、timeout),在主线程回调completion闭包,并且将数据传递过去。
6.controller 收到数据,存到model,显示处理。
7.如果在4过程中,timeout到了,那么直接清除request、resonse、timeout,回调timeout闭包。
 
 

蘑菇街的IM 网络层

标签:

原文地址:http://www.cnblogs.com/loying/p/4804566.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!