转载请注明来源:https://www.cnblogs.com/hookjc/

一:  C++NPv1主要涉及到的类:

1.1.  Logging_Server 是个抽象类,用来定义接口类型,此类不能实例化。

Logging_Handle 是个日志处理类,被服务器聚合。

1.2.  Iterative_Logging_Server  实现基本的循环式服务器。

1.3.  Reactor_Logging_Server    实现基本的反应式服务器(本质还是循环式服务器)。

1.4.  Reactor_Logging_Server_Ex 实现基本的反应式服务器,

在Reactor_Logging_Server基础上利用Hash_Map绑定一个连接对应一个日志文件。

1.5   Process_Per_Connection_Logging_Server 实现一个连接一个进程模型服务器

1.6   Thread_Per_Connection_Logging_Server 实现一个连接一个线程模型服务器

1.7   RT_Thread_Per_Connection_Logging_Server 对Thread_Per_Connection_Logging_Server功能的扩展,

增加了实时机制,即提高数据处理线程的优先级。

二: C++NPv2主要涉及到的类:

2.1.  Logging_Accepotr_Ex 和 Logging_Event_Handler_Ex 分别对 Logging_Accepotr、Logging_Event_Handler的功能

扩展, 增加了时间机制,即一段时间里客户没有发送日志文件,则关闭此连接。

2.2   Logging_Accepotr_WFMO 和 Logging_Event_Handler_WFMO分别对 Logging_Accepotr_Ex 和

Logging_Event_Handler_Ex的功能扩展, 增加了针对竞争状态的保护,即增加一个互斥体来显示地序列化对“客户

日志Daemon连接线程池的线程”的访问

2.3  Reactor_Logging_Server模版类需要ACCEPTOR参数化, 可以灵活选择Logging_Accepotr、Logging_Accepotr_Ex、

Logging_Accepotr_WFMO

2.4   ACE_Reactor有三种不同的实现:

ACE_Select_Reactor ACE Reactor在linux下默认的单线程实现(添加一个控制线程,用来优雅地关闭程序),利用

Logging_Accepotr 和 Logging_Event_Handler 实现。

ACE_TP_Reactor 是ACE_Select_Reactor线程池的实现,利用Logging_Accepotr_Ex 和 Logging_Event_Handler_Ex

实现。

ACE_WFMO_Reactor ACE Reactor在window下默认的多线程实现, 利用Logging_Accepotr_WFMO和

Logging_Event_Handler_WFMO来实现。

2.5  Reactor_Logging_Server_Adapter 继承自ACE_Service_Object.它聚合了模版Reactor_Logging_Server<ACCEPOTOR>

2.6  从模版Reactor_Logging_Server_Adapter定义了很多服务,供静态、动态加载使用。

包括: 类Server_Logging_Daemon、Server_Logging_Daemon_Ex、TPC_Logging_Server等。

个人理解:

C++NPV1里的Logging_Server 在功能上类似 C++NPV2里的 ACE_Event_Handler ,

C++NPV1里的Iteractor_Logging_Server 功能上类似 C++NPV2里的 Logging_Event_Handler

三: C++NPV1涉及到的类图

四: C++NPV1的线程、进程涉及到的类图

五: C++NPV2涉及到的类图

六:C++NPV2的第5章涉及到的类图

七: 总结

C++NPV1和C++NPv2举的例子主要是网络日志服务器,从最原始的网络模型开始讲到最后用ACE提供的框架来实现

来源:python脚本自动迁移

最新文章

  1. 4.DB Initialization(数据库初始化)[EF Code-First系列]
  2. C#不对称加密
  3. 使用Html5+C#+微信 开发移动端游戏详细教程 :(五)游戏图像的加载与操作
  4. mysql下一个版本应该且实现并不复杂增加的常用功能
  5. Xrun 将 app 转化为 IPA
  6. jvm参数优化
  7. poj1006
  8. MyBatis insert后返回自增字段的值
  9. uva 10245 近期点对问题
  10. OC与Swift创建pod
  11. 快慢指针实现不依赖计数器寻找中位数(linked list)
  12. 201671010121 2016-2017-2《java程序设计》第一周学习总结
  13. .NET Core/.NET之Stream简介
  14. Shell命令-文件压缩解压缩之tar、unzip
  15. Python数据分析Pandas库数据结构(一)
  16. WC2017游记 &amp; 能力残废康复计划
  17. JS操作DOM节点大全
  18. 用 Lua 控制 MIDI 合成器来播放自定义格式乐谱
  19. spring aop简单理解
  20. 【基础知识】【1】CDN

热门文章

  1. tcache BUUCTF gyctf_2020_signin
  2. 在页面上绘制一张表格,使用 DOM 节点的动态添加和删除向表格中插入数据,点击表格每行后的“删除”超链接
  3. Spring进一步学习
  4. 大厂必问的Spring面试题
  5. gogs安装与说明(docker)
  6. CSS基础 背景图片的相关属性
  7. 【ASP.NET Core】Blazor+MiniAPI完成文件下载
  8. Docker_安装和卸载(2)
  9. 在CentOS7 安装 jq
  10. 日志收集系统系列(四)之LogAgent优化