// Admin.cpp
ICEStorm管理应用程序
// Service.cpp
ICEStorm实现了ICEBox的服务接口,在start接口中初始化了两个servant:topicAdapter和publishAdapter,分别用来实现ICEStorm提供的接口。
// Instance.cpp
此类被Service创建实例。包含了ICEStorm实例所用用到的资源,实例的启动,关闭等。
    const Ice::ObjectPrx _topicReplicaProxy;
    const Ice::ObjectPrx _publisherReplicaProxy;
    IceStormElection::NodeIPtr _node;
    IceStormElection::ObserversPtr _observers;
// IceStormInternal.ice
包含了实现ICEStorm的内部数据定义
// Election.ice
实现Master-Slave Election算法的数据定义
// NodeI.cpp
Master-Slave中节点的定义和实现,选择出Master来同步nodes。
 const IceStormElection::ObserversPtr _observers; // 赋值_observers(instance->observers()),
    const ReplicaPtr _replica; // The replica. 调用_replica->getSync();
    std::set<GroupNodeInfo> _up; // Set of nodes in my group.
   const std::map<int, NodePrx> _nodes; // The nodes indexed by their id.
// TopicI.cpp
实现了IceStorm.ice中Topic接口,并且此类也被TopicManagerI调用。
    const InstancePtr _instance;
    std::vector<SubscriberPtr> _subscribers;
    SubscriberMap _subscriberMap; // The subscribers. 订阅者id到主题的映射id
以下两个操作(增加或删除)总是同时进行,保存了两份订阅者信息。
    _subscribers.push_back(subscriber);
    _instance->observers()->addSubscriber(llu, _name, record);
// Observers.cpp
此类被NodeI使用,Observers用来保存所有订阅者信息,
    std::vector<ObserverInfo> _observers; // 所有的订阅者
    std::vector<int> _reaped;
    struct ObserverInfo
    {
        ObserverInfo(int i, const ReplicaObserverPrx& o) :
            id(i), observer(o) {}
        int id;
        ReplicaObserverPrx observer; // 包含在TopicManagerI中,用来实现一个Observer的复制。
        AMICallPtr call;
    };
// Subscriber.cpp
订阅者信息对象,每个订阅者有四种状态:
    enum SubscriberState
    {
        SubscriberStateOnline, // Online waiting to send events.
        SubscriberStateOffline, // Offline, retrying.
        SubscriberStateError, // Error state, awaiting reaping.
        SubscriberStateReaped // Reaped.
    };
// TopicManagerI.cpp
此类继承了IceStormElection::Replica,实现对所有Topic的管理。
    SubscriberMap _subscriberMap; // 订阅者到主题的映射
    std::map<std::string, TopicImplPtr> _topics; // 主题类型到主题实现的映射

IceStorm src simple analyse相关推荐

  1. HTML5:理解head

    2019独角兽企业重金招聘Python工程师标准>>> HTML文档的head部分,通常包括指定页面标题,为搜索引擎提供关于页面本身的信息,加载样式表,以及加载JavaScript文 ...

  2. jquery 前台分页插件总结(1 前台假分页 2 后台分页)

    该分页插件只展示当前数据,如果前台分页需要把所有数据切割展示才能实现的前台分页 使用前需要引入font-awesome  和分页插件js(在最下面) 拷贝直接用即可实现,替换一下数据 1 前台分页情况 ...

  3. python文章抄袭检测_CSDN文章被洗稿、抄袭严重!用Python做一个“基于搜索引擎的文章查重工具”,解决!...

    前言 文章抄袭在互联网中普遍存在,很多博主.号主深受其烦. 近几年随着互联网的发展,抄袭等不道德行为在互联网上愈演愈烈,甚至复制.黏贴后发布标原创屡见不鲜,部分抄袭后的文章,甚至标记了一些联系方式从而 ...

  4. 解决升级Flutter3.0后出现警告Operand of null-aware operation ‘!‘ has type ‘WidgetsBinding‘ which excludes null

    出现场景 将Flutter SDK升级到3.0,运行时报以下警告. 虽然不影响程序的运行,但是看着很烦. lib/stress_test/stress_test_page.dart:120:22: W ...

  5. fu-liou radiative transfer model 学习日记(一)

    online model 见LaRC fu-liou模式 主要框架 主程序:src/simple/simple.f90 ==call set_default_options_fu== ==>li ...

  6. python 手把手教你基于搜索引擎实现文章查重

    前言 文章抄袭在互联网中普遍存在,很多博主都收受其烦.近几年随着互联网的发展,抄袭等不道德行为在互联网上愈演愈烈,甚至复制.黏贴后发布标原创屡见不鲜,部分抄袭后的文章甚至标记了一些联系方式从而使读者获 ...

  7. Simditor 富文本编辑器多选图片上传、视频连接插入

    simditor 是一个基于浏览器的所见即所得的文本编辑器.Simditor 富文本编辑器, 支持多选图片上传, 视频连接插入, HTML代码编辑以及常用富文本按钮,支持的浏览器:IE10.Firef ...

  8. python 基于搜索引擎实现文章查重

    前言 文章抄袭在互联网中普遍存在,很多博主都收受其烦.近几年随着互联网的发展,抄袭等不道德行为在互联网上愈演愈烈,甚至复制.黏贴后发布标原创屡见不鲜,部分抄袭后的文章甚至标记了一些联系方式从而使读者获 ...

  9. CSDN文章被洗稿、抄袭严重!用Python做一个“基于搜索引擎的文章查重工具”,解决!...

    公众号后台回复"图书",了解更多号主新书内容 作者: 1_bit 原文链接:http://suo.im/5V1JpX 前言 文章抄袭在互联网中普遍存在,很多博主.号主深受其烦. 近 ...

最新文章

  1. python(pil)图像处理(等比例压缩、裁剪压缩) 缩略(水印)图
  2. Docker+mysql
  3. idea 自动添加doc_interllij idea生成javadoc
  4. 木糖醇、可口可乐零度:可怕的传闻
  5. visuall assist x 破解方法
  6. 005.在Windows下编程让效率起飞
  7. 30岁前不要让人生留下遗憾笔记
  8. [渝粤教育] 武昌理工学院 跨境电商实务 参考 资料
  9. 傻妞机器人老版安装教程
  10. 使用STL标准模板库实现的个人通讯录
  11. eclipse和myeclipse集成Xjad
  12. python元组添加元素_python – 在元组中添加元素
  13. BIO输给NIO了吗 —————— 开开开山怪
  14. uniapp苹果支付
  15. 创业公司该如何设计激励员工的期权池
  16. 2022 Apache IoTDB 物联网生态大会 | 议题嘉宾公布,大会亮点抢先看!
  17. Unicode特殊字符编码
  18. 睡眠的一场革命!-读《睡眠革命》笔记(中)
  19. 杰瑞学Perl之Hello World
  20. lg-1 x 怎么算_黑洞是怎么形成的

热门文章

  1. 编程软件python中的if用法-总结Python编程中函数的使用要点
  2. python如何爬虫-Python爬虫具体应该怎么使用?
  3. python单词大全-python常用的单词
  4. python到底干嘛的-Python是干嘛的?可以做什么?老男孩Python培训班
  5. 学python好不好-学习python的前景怎么样?
  6. 网页版python叫什么-python脚本和网页有何区别
  7. python写文件读文件-Python 读写文件和file对象的方法(推荐)
  8. python在日常工作处理中的应用-谈谈Python在工作中的应用
  9. numpy中线性代数库的使用Linear Algebra
  10. 计算机考试函数应用题及答案,计算机等级考试题库,二级C++试题及答案