这是国内第一本从源代码角度去讲解ACE的著作。本书从构架模式、应用示例和源代码三个方面,使用了近400个图例(包括框架代码、框架使用示例、UML类图、UML顺序图)详细地分析了ACE的Reactor、Service Configurator、Task、Acceptor_Connector、Proactor和Stream共六个框架。通过本书,我们不仅可以从理论上学习到框架的设计原理,还可以从源代码中学习到框架的实现。本书的图例不仅可以帮助你实现与软件框架的一次亲密接触,还可以真正减少你学习的时间和精力。书中还涉及十多个Gof经典设计模式,为我们学习和掌握设计模式提供了非常好的实际场景。
封面图
目录
- 前 言
- 第1章 概述 / 1
- 1.1 模式与框架 / 1
- 1.1.1 模式 / 1
- 1.1.2 框架 / 2
- 1.1.3 模式与框架的关系 / 3
- 1.2 ACE框架 / 3
- 1.3 关于本书 / 7
- 1.3.1 本书的内容 / 7
- 1.3.2 源代码的表示 / 8
- 1.3.3 测试组网 / 9
- 1.3.4 几个常用术语 / 9
- 1.4 ACE Socket封装器 / 9
- 1.4.1 示例分析 / 10
- 1.4.2 Socket IPC分析 / 13
- 1.4.3 ACE_SOCK_Acceptor类的分析 / 15
- 1.4.4 ACE_SOCK_Connector类的分析 / 19
- 1.5 进一步学习 / 23
- 1.6 总结 / 23
- 第2章 Reactor框架 / 24
- 2.1 Reactor构架模式 / 24
- 2.2 Reactor框架概述 / 26
- 2.3 Reactor框架应用示例 / 27
- 2.3.1 I/O事件处理器的实现 / 27
- 2.3.2 Accept事件处理器的实现 / 31
- 2.3.3 main函数 / 34
- 2.4 事件处理器接口实现 / 35
- 2.4.1 事件处理器接口的构造与析构 / 38
- 2.4.2 事件处理器接口的使用规范 / 38
- 2.5Reactor管理器的设计分析 / 39
- 2.5.1 Reactor管理器接口分析 / 40
- 2.5.2 Bridge设计模式接口 / 44
- 2.5.3 ACE_Select_Reactor_Impl类的分析 / 45
- 2.5.4 ACE_Select_Reactor_T类的分析 / 46
- 2.6 I/O事件调度的分析 / 47
- 2.6.1 I/O事件调度集的设计 / 47
- 2.6.2 调度集操作函数的分析 / 50
- 2.6.3 I /O事件处理器仓库的分析 / 53
- 2.6.4 I/O事件注册流程的分析 / 59
- 2.6.5 I/O事件调度流程的分析 / 61
- 2.6.6 I/O事件删除流程的分析 / 70
- 2.7 信号量事件调度的分析 / 71
- 2.7.1 信号量事件管理器的分析 / 71
- 2.7.2 Reactor管理器中的信号量事件处理 / 77
- 2.7.3 信号量事件删除流程的分析 / 78
- 2.8 定时器事件调度的分析 / 79
- 2.8.1 定时器事件管理器的分析 / 80
- 2.8.2 定时器事件注册流程的分析 / 93
- 2.8.3 定时器事件调度流程的分析 / 94
- 2.8.4 定时器事件删除流程的分析 / 95
- 2.9 Notify事件调度的分析 / 96
- 2.9.1 Notify事件管理器的分析 / 97
- 2.9.2 Notify事件注册流程的分析 / 105
- 2.9.3 Notify事件调度流程的分析 / 106
- 2.10 进一步学习 / 107
- 2.11 总结 / 107
- 第3章 Service Configurator框架 / 108
- 3.1 Component Configurator构架模式 / 108
- 3.2 Configurator框架概述 / 109
- 3.3 Configurator框架应用示例1 / 111
- 3.3.1 配置文件 / 111
- 3.3.2 可配置组件 / 111
- 3.3.3 main函数 / 113
- 3.4 ACE动态库接口封装的分析 / 114
- 3.5 配置组件接口的分析 / 115
- 3.6 组件工厂函数的分析 / 117
- 3.7 组件配置器设计的分析 / 119
- 3.7.1 组件配置器控制接口的分析 / 119
- 3.7.2 组件配置器实现的分析 / 128
- 3.7.3 语法分析器的分析 / 138
- 3.8 动态库符号定位的分析 / 141
- 3.8.1 ACE_Location_Node类分析 / 142
- 3.8.2 ACE_Object_Node类的分析 / 143
- 3.8.3 ACE_Function_Node类的分析 / 144
- 3.9 配置组件仓库的分析 / 147
- 3.9.1 find函数 / 148
- 3.9.2 remove函数 / 149
- 3.9.3 suspend函数 / 150
- 3.9.4 resume函数 / 150
- 3.10 配置组件类型的分析 / 151
- 3.10.1 ACE_Service_Type类 / 152
- 3.10.2 ACE_Service_Type_Impl类 / 153
- 3.10.3 ACE_Service_Object_Type类 / 154
- 3.10.4 ACE_Service_Type_Factory类 / 154
- 3.11 指令解析功能的分析 / 156
- 3.12 配置文件解析流程的分析 / 157
- 3.13 Configurator框架应用示例2 / 160
- 3.13.1 可配置组件 / 160
- 3.13.2 配置文件 / 161
- 3.13.3 配置文件解析流程的分析 / 162
- 3.14 配置改变 / 162
- 3.15 Configurator框架应用示例3 / 162
- 3.15.1 静态配置组件 / 163
- 3.15.2 配置文件 / 165
- 3.15.3 静态配置组件分析 / 166
- 3.16 进一步学习 / 169
- 3.17 总结 / 169
- 第4章 Task框架 / 170
- 4.1 Task框架概述 / 170
- 4.2 Task框架应用示例 / 171
- 4.2.1 生产者 / 171
- 4.2.2 消费者 / 173
- 4.2.3 main函数 / 174
- 4.3 ACE消息队列实现分析 / 175
- 4.3.1 数据块结构分析 / 176
- 4.3.2 消息块结构的分析 / 180
- 4.3.3 消息队列实现的分析 / 182
- 4.4 ACE多线程编程 / 185
- 4.4.1 线程的创建 / 186
- 4.4.2 线程的运行 / 189
- 4.4.3 线程的退出 / 191
- 4.4.4 线程等待 / 195
- 4.5 Task框架接口的分析 / 198
- 4.5.1 ACE_Task_Base类 / 199
- 4.5.2 ACE_Task类 / 200
- 4.6 Active Object设计模式 / 201
- 4.6.1 模式概述 / 201
- 4.6.2 应用示例 / 203
- 4.6.3 ACE_Future和ACE_Future_Rep类 / 207
- 4.7 进一步学习 / 210
- 4.8 总结 / 210
- 第5章 Acceptor_Connector框架 / 211
- 5.1 Acceptor_Connector构架模式 / 211
- 5.2 Acceptor_Connector框架概述 / 212
- 5.3 Acceptor_Connector框架应用示例 / 213
- 5.3.1 open函数 / 214
- 5.3.2 handle_input函数 / 214
- 5.3.3 handle_close函数 / 215
- 5.3.4 main函数 / 215
- 5.4 服务处理器接口的分析 / 216
- 5.4.1 open函数 / 217
- 5.4.2 handle_close函数 / 218
- 5.4.3 close函数 / 219
- 5.4.4 shutdown函数 / 219
- 5.5 Acceptor设计的分析 / 220
- 5.5.1 ACE_Acceptor类 / 220
- 5.5.2 open函数 / 221
- 5.5.3 handle_input函数 / 222
- 5.5.4 handle_close函数 / 224
- 5.6 Connector设计的分析 / 225
- 5.6.1 ACE_Connector类 / 226
- 5.6.2 阻塞模式连接的分析 / 226
- 5.6.3 非阻塞模式连接的分析 / 229
- 5.7 进一步学习 / 236
- 5.8 总结 / 236
- 第6章 Proactor框架 / 237
- 6.1 Proactor构架模式 / 237
- 6.2 Proactor框架概述 / 239
- 6.3 Proactor框架应用示例 / 240
- 6.3.1 I/O事件完成处理器的实现 / 240
- 6.3.2 异步Acceptor的实现 / 245
- 6.3.3 main函数 / 245
- 6.4 事件完成处理器接口的分析 / 246
- 6.5 Proactor管理器的设计分析 / 247
- 6.5.1 Proactor管理器接口的分析 / 248
- 6.5.2 Bridge设计模式接口 / 252
- 6.5.3 ACE_POSIX_Proactor接口分析 / 252
- 6.6 异步操作初始化器和操作结果分析 / 253
- 6.6.1 公共接口介绍 / 256
- 6.6.2 ACE_POSIX_Asynch_Operation类 / 256
- 6.6.3 ACE_POSIX_Asynch_Result类 / 258
- 6.6.4 ACE_POSIX_Asynch_Read_Stream_Result类 / 261
- 6.6.5 ACE_POSIX_Asynch_Read_Stream类 / 263
- 6.7 ACE_POSIX_AIOCB_Proactor管理器实现的分析 / 265
- 6.7.1 构造函数 / 267
- 6.7.2 start_aio函数 / 268
- 6.7.3 handle_events_i函数 / 271
- 6.7.4 find_completed_aio函数 / 274
- 6.7.5 start_deferred_aio函数 / 275
- 6.7.6 application_specific_code函数 / 277
- 6.8 异步非I/O事件调度的分析 / 278
- 6.8.1 ACE_AIOCB_Notify_Pipe_Manager类 / 278
- 6.8.2 post_completion函数 / 281
- 6.8.3 putq_result函数 / 282
- 6.8.4 process_result_queue函数 / 283
- 6.9 定时器事件调度的分析 / 283
- 6.9.1 定时器事件操作结果的分析 / 284
- 6.9.2 定时器管理器实现的分析 / 285
- 6.10 网络连接之accept事件调度的分析 / 290
- 6.10.1 Reactor任务分析 / 292
- 6.10.2 异步Acceptor分析 / 293
- 6.10.3 ACE_POSIX_Asynch_Accept类 / 294
- 6.10.4 ACE_POSIX_Asynch_Accept_Result类 / 300
- 6.10.5 ACE_Asynch_Acceptor类 / 302
- 6.11 Proactor框架的调度分析 / 311
- 6.11.1 调度函数分析 / 311
- 6.11.2 退出调度分析 / 311
- 6.12 进一步学习 / 313
- 6.13 总结 / 313
- 第7章 Streams框架 / 314
- 7.1 管道和过滤器构架模式 / 314
- 7.2 Streams框架的概述 / 315
- 7.2.1 ACE_Task类 / 315
- 7.2.2 put函数 / 316
- 7.2.3 put_next函数 / 316
- 7.3 Streams框架应用示例 / 317
- 7.3.1 Logrec_Reader类 / 317
- 7.3.2 Logrec_Timer类 / 318
- 7.3.3 Logrec_Suffix类 / 319
- 7.3.4 Logrec_Writer类 / 319
- 7.3.5 main函数 / 320
- 7.4 ACE_Module类的分析 / 322
- 7.4.1 open函数 / 323
- 7.4.2 link函数 / 324
- 7.4.3 ACE_Module的关闭 / 325
- 7.5 ACE_Stream类的分析 / 326
- 7.5.1 构造函数 / 326
- 7.5.2 open函数 / 327
- 7.5.3 push函数 / 329
- 7.5.4 close函数 / 330
- 7.6 进一步学习 / 331
- 7.7 总结 / 331
- 参考文献 / 332