POCO库之HTTPServer
来源:互联网 发布:java invoker 编辑:程序博客网 时间:2024/05/16 12:57
HTTPRequestHandler->HandleRequest() = 0;
AbstractHTTPRequestHandler:
①实现handleRequest();
②保存Request,Response对象
③先进行必要验证,再调用Run()
HTTPServerRequest : public HTTPRequest
保存value-name
HTTPServerRequestImpl : public HTTPServerRequest
①:添加Response,Session成员变量
②:将Response,Request关联起来
③:读取头信息,并返回关联了session的buffer
HTTPServerResponse, HTTPServerResponseImpl同HTTPServerRequest,HTTPServerRequestImpl 差不多,
只是其动作根据request的情况来决定
HTTPSession : 接收发送数据
HTTPServerSession : public HTTPSession
只添加了一个 bool hasMoreRequest();
TCPServer:
接收n个连接,放入队列中,然后用线程池去处理
HTTPServer : public TCPServer
只增加了一个StopAll()
TCPServerConnection : 只是一个提供处理接口的线程类
HTTPServerConnection::主要实现线程的接口
利用传进来的socket创建一个session对象,然后分别传给Response和Request,
在RequestImpl的构造函数里又用session构造一个HTTPHeaderInputStream,然后用这个对象读取头信息
再根据头信息创建不同的buffer,
然后调用handler函数
而这个handler函数是要自己实现的,参数就是Response和Request,
在这里,根据Request的值设置Response对应的值
根据这两个参数你可以做任何你想的事
关于里面的各种缓冲区:
headerbuffer, chunkedbuffer, fixedlengthbuffer
他们的继承体系都是一样的,
class xxxbfffer
{
各个缓冲区的不同只在于读写的方式不一样
int readFromDevice();
int writeToDevice();
private:
HTTPSession m_session;
};
class xxxIOS : public std::ios
{
xxxbuffer _buffer;
};
class xxxInputStream : public xxxIOS, public std::istream
{
利用pool重载operator new/operator delete
};
class xxxOutputStream : public xxxIOS, std::ostream
{
利用pool重载operator new/operator delete
};
而HTTPClient,只是一个HTTPSession,将Request/Response以参数的形式传进去进行各种操作
- POCO库之HTTPServer
- Poco C++库网络模块例子解析2-------HttpServer
- Poco库之XML操作
- python之HTTPServer学习
- 学习Poco库之HTTP下载器
- POCO库Foundation之SharedPtr学习
- HttpServer
- httpserver
- POCO之Number Format
- Poco 之cppunit解读
- poco之文件系统
- 手写HTTPServer 之 HttpRequest封装
- poco库学习笔记(5) Poco::Thread
- poco库学习笔记(6) Poco::Timestamp
- poco库学习笔记(7) Poco::Any
- poco库学习笔记(8) Poco::HashMap
- poco库学习笔记(9) Poco::AutoPtr
- poco库学习笔记(10) Poco::NotificationCenter
- 生成非发布用的ipa
- 对话框和gallery画廊相结合--android开发
- 什么是甘特图
- ubuntu 下配置 L2TP vpn
- Java笨鸟(一)
- POCO库之HTTPServer
- 跨浏览器测试 更简单modern.IE
- 数据结构基础攻略——排序(Sort)
- 哈斯图伪代码
- Windows 和 Ubuntu 下 Git 使用笔记
- Linux Load average负载详细介绍
- vs2008不能调试问题
- asp.net c# 打开新页面或页面跳转
- 购物券消费方案 公司发了某商店的购物券1000元,限定只能购买店中的m种商品。 每种商品的价格分别为m1,m2,…,要求程序列出所有的正好能消费完该购物券的不同购物方法。