zoukankan      html  css  js  c++  java
  • 蘑菇街的IM 网络层

     
    蘑菇街的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闭包。
     
     
  • 相关阅读:
    坐标系统和投影的来龙去脉原创
    ArcEngine这本书怎么样
    如何构建达芬奇的DSP Server【转】
    ccs编译问题
    linux下环境变量设置[转]
    普通人的编辑利器——Vim 【转】
    关闭linux防火墙
    GT_Trace的使用[z]
    davinciDM6446 LINUX环境配置
    TI DaVinci(达芬奇)入门
  • 原文地址:https://www.cnblogs.com/loying/p/4804566.html
Copyright © 2011-2022 走看看