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闭包。
     
     
  • 相关阅读:
    远程诊断DoIP
    基于linux内核包过滤技术的应用网关
    Boost内存池使用与测试
    C++ 编程规范
    大象——Thinking in UML
    C++ 创建类时常考虑的问题
    SLIP—串行线路上传输数据报的非标准协议
    神秘的程序员——编程的乐趣
    Bad Smell (代码的坏味道)
    模式与软件架构——软件架构的非功能特征
  • 原文地址:https://www.cnblogs.com/loying/p/4804566.html
Copyright © 2011-2022 走看看