1. 说明
- Http服务器
- 一个HttpServer类,不可复制,使用了HttpRequest,HttpResponse,EventLoop,InetAddress,TcpServer类
2. 变量
-
类型定义
- HttpCallback,回调函数
-
TcpServer server_;
- Tcp服务
-
HttpCallback httpCallback_;
- 回调函数
3. 函数
1. 私有
-
void onConnection(const TcpConnectionPtr& conn);
- 如果已经连接的话,就设置上下文对象context_为一个HttpContext()对象
-
void onMessage(const TcpConnectionPtr& conn,
Buffer* buf,
Timestamp receiveTime);- 当消息到来,也就是请求头到来的时候,获得context_上下文,解析头部放到这个HttpRequest对象里,如果解析失败返回400,解析完成的话调用下面的onRequest(),重置HttpRequest对象
-
void onRequest(const TcpConnectionPtr&, const HttpRequest&);
- 调用http回调函数,设置响应对象,把这个响应对象加入到应用层发送缓冲区发出去.如果是短连接的话就关闭连接,否则不关闭
2. 公有
-
构造
- 初始化,开启TcpServer连接,设置连接的连接回调和消息回调为上面的onConnection()和onMessage()
-
EventLoop* getLoop() const
- 获得Tcp服务器的EventLoop对象
-
void setHttpCallback(const HttpCallback& cb)
- 设置回调函数
-
void setThreadNum(int numThreads)
- 设置线程数量,如果为0的话就是单线程
-
void start();
- 调用TcpServer的start(),开启Tcp服务
4. 全局
- void defaultHttpCallback(const HttpRequest&, HttpResponse* resp)
- 默认Http响应回调,响应404