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闭包。
     
     
  • 相关阅读:
    API连接显示
    zabbix基本介绍
    JMX类型监控
    zabbix sender
    监控项的获取
    zabbix值显示的问题
    windows客户端
    gj的zabbix客户端开机自启动设置
    TCP/UDP
    内置宏
  • 原文地址:https://www.cnblogs.com/loying/p/4804566.html
Copyright © 2011-2022 走看看