1.目前核心输入过滤器和核心输出过滤器包括以下几种:

a.CHUNK编码过滤器;

b.CORE_IN过滤器;

c.CORE_OUT过滤器;

d.Byterange过滤器;

2.输入过滤器

(1) CORE_IN

(2) LOG_INPUT_OUTPUT

(3) SSL/TLS Filter

(4) HTTP_IN

(5) DEFLATE

(6) XLATEIN_FILTER_NAME

3.HTTP连接上的过滤器(注意:请求点在A点)

4.CORE_IN过滤器的上下文是在挂钩pre_connection中实现的。

5.HTTP_INde上下文结构用http_ctx_t描述:

typedef struct http_filter_ctx
{apr_off_t remaining;apr_off_t limit;apr_off_t limit_used;enum {BODY_NONE,//请求中不包括任何的请求体BODY_LENGTH,  //请求中包含报文体BODY_CHUNK,  //请求中包含请求体,并且报文采用Chunk编码BODY_CHUNK_PART} state;int eos_sent;char chunk_in[32];char *pos;apr_off_t linesize;apr_bucket_brigade *bb;  //过滤器每次读取的数据都保存在存储段组bb中
} http_ctx_t;

6.

7.BODY_LENGTH

不管对于BODY_LENGTH还是BODY_CHUNK,任何时候只要发现eos_sent被设置,则意味着已经达到了报文体的最后,此时将在存储段组中插入一个EOS存储段标记结束。

ctx->remaining中记录了剩余的要读取的报文字节数目,如果ctx->remaining为0,则意味着读取数据已经完毕,此时插入一个EOS存储段。如果ctx->remaining>0,则意味着还有数据要读取,那么读取流程将继续。

readbytes是要读取的报文体数据,如果实际剩余的数据已经不足readbytes,那么调整readbytes,并且调用ap_get_brigade从网络中读取。实际读取的数据长度保存在变量totalread中,同时剩余的可读取数据ctx->remaining递减totalread.

8.Apache中提供的输出过滤器层次

学习《apache源代码全景分析》之常用过滤器摘录相关推荐

  1. 学习《apache源代码全景分析》之过滤器部分摘录

    1.过滤器分为输入过滤器和输出过滤器,输入过滤器用于修改从网络读取的数据;而输出过滤器则用于修改生成并写入网络的数据. 2.对比 3.输入过滤器主要是对接收到的请求进行处理,它与我们正常思维一致的地方 ...

  2. 学习《apache源代码全景分析》之摘录

    一.大纲 1.Web服务器概述 2.Apache体系结构 3.配置文件管理 4.Apache模块化体系结构 5.多任务并发处理 6.网络连接 7.过滤器 8.存储段和存储段组 9.常用过滤器 二.摘录 ...

  3. 学习《apache源代码全景分析》之模块化体系结构摘录

    1.Apache1.3系列的模块结构如下: Apache 2.0模块构成部分如下: 2.Apache核心和模块的交互示意图: 核心模块必须与非核心模块进行交互,目前有两种交互方式. (1) 核心模块通 ...

  4. 学习《apache源代码全景分析》之存储段和存储段组摘录

    1.当数据在过滤器中流动传递的时候,数据是以存储段组的形式组织的.每一个存储段组包含多个存储段,每一个存储段是一种数据类型的抽象. 2.存储段组包含多个存储段 struct apr_bucket {A ...

  5. 学习《apache源代码全景分析》之网络连接部分摘录

    1.MPM框架负责多进程或多线程的并发处理,它侦听指定的套接字,一旦客户端请求到来,它将立即接受该请求,并创建相应的连接.而一旦连接建立完毕,核心将从该连接上读取请求的数据. 整个HTTP连接处理的过 ...

  6. 学习《apache源代码全景分析》之多任务并发处理摘录

    1.如果要写服务器程序,按照正常的思路,通常主程序在进行了必要的准备工作后会调用诸如fork之类的函数产生一个新的进程或线程,然后由子进程进行并发处理.每个进程侦听某个端口,然后接受网络连接,并处理这 ...

  7. 学习《apache源代码全景分析》之DSO概念

    DSO的产生当然离不开操作系统的支持.目前不管是UNIX还是Linux,大多都提供了对动态共享对象或动态链接库进行加载和卸载的机制.加载的方法通常有两种:其一是在可执行文件启动时由系统程序ld.so自 ...

  8. Apache源代码全景分析第二卷——HTTP请求处理

    版权声明: 本文可以任意进行转摘,但是必须保留以下内容: 1).本文原始出处为Aapche中国, http://www.cn-apache.com 2).HESEE悦色尚品,100%正版原装进口美妆商 ...

  9. 【Rhapsody学习笔记(一)】OrionHealth-Rhapsody的组成及常用过滤器

    一.Rhapsody组成 1.Rhapsody引擎 Rhapsody引擎集成了不同的卫生系统,提供安全连接,可靠的消息传递和高性能.Rhapsody引擎是整个集成平台的核心,提供快速服务的关键.它保证 ...

最新文章

  1. 手动配置lnmp环境
  2. Android提升篇系列:Android项目代码优化实践
  3. 视频防抖 Opencv
  4. java的知识点32——多线程 并发同步的 性能分析、快乐影院  订票操作
  5. ib课程计算机科学内容,新的IB计算机课程主要学习什么内容?有什么新的特点呢?...
  6. wxpython 下拉框只能选择不能输入_用wxPython创建GUI应用程序展示NASA图片(第三部分)...
  7. 计算机基础及ms应用在线,全国一级计算机基础及MS Office应用课件 (2).pdf
  8. 深入谷歌开源项目【1】 - Camer2 - 环境搭建和源码编译
  9. oracle索引的监控
  10. java struts2 demo,struts2入门例子 登陆demo!非常详细的图解
  11. 你画我猜 计算机题目,你比我猜游戏爆笑词语(你画我猜题目大全500道)
  12. OpenCV概述及安装配置教程
  13. java命名规则及规范
  14. MacOS上禁用自动启动Adobe Creative Cloud
  15. 随机前沿方法和数据包络分析
  16. Spring工作原理
  17. 大数据分析及工具应用总结
  18. 智能优化算法:海鸥算法原理及Matlab代码
  19. Reason: Cannot pass null or empty values to constructor in spring security
  20. k8s常见故障排查一点通

热门文章

  1. 程序图形化界面刷新以及如何从tkinter窗口中正确读出数据
  2. Spring Cloud的架构
  3. Effective Java之接口优先于反射机制(五十三)
  4. Vue_template是什么
  5. 所有计算机的字数都是8位,计算机(全部笔记).doc
  6. 邮宝打印面单尺寸调整_摆脱束缚,自由轻松!无线打印奥利给(上)
  7. python asyncio回调函数_python回调函数用法实例分析
  8. 9型转x型 cobol_多重排斥、价值嬗变与农村跨省婚姻研究——以东莞宗族型X村为例...
  9. 常见服务器解析漏洞(IIS,Nginx,Apache)
  10. Source Insight学习教程