楼主正在上coursera上面的关于设计模式的课程. 其中作业里面需要使用ACE framework.
ACE 是Adaptive Communication Environment的简称. ACE是一个面向对象c++的框架, 他对不同操作系统关于网络操作API进行了封装提供了统一的接口.
楼主简单地用他完成了一个web server. Echo Web Server.
Reactor pattern 和 Acceptor-Connector pattern (Acceptor role).
ACE 实现了Reactor pattern 和 Acceptor-Connector pattern 这两个设计模式. 通过使用这两种设计模式, ACE达到了分离Web service建立连接代码, 事件处理代码和Demultiplexing and Dispatching Handles for Synchronous Events代码的目的.
Reactor负责分派所有的Event, 包括同一时间来自不同客户端连接请求和已经连接好的客户端发送的数据事件.
Acceptor负责处理客户端的连接请求, 当一个连接请求到达的时候, 他要初始化Stream, 并且创建一个专门处理数据事件的ACE_Svc_Handler并且把Stream作为参数传给他.
这个新创建的ACE_Svc_Handler专门负责处理客户发送过来的数据, 比如一个http GET请求.
这三个角色组合起来可以实现服务器程序的监听, 连接以及事件处理功能.
#include <string>
#include "ace/OS_NS_stdio.h"
#include "ace/Reactor.h"
#include "ace/Acceptor.h"
#include "ace/S