Apache Core深入(2011409)

在google HK上搜索"Apache" "Core" "深入" "core.c"有680条记录。进入英文世界,以包含"Apache" "Core" "core c" "apr.h"的关键词组搜索共有550个搜索记录。

 

看完部分G摘要后,打开core.c及对应头文件开始架构的深潜运动……

 

首先在进入httpd为核心的HTTP应用层之前,我们先了解连接SOCKET5与HTTP的中间部分:

 

#include "apr_general.h"

#include "apr_tables.h" //基础储存结构

#include "apr_pools.h"

#include "apr_time.h"

#include "apr_network_io.h"

#include "apr_buckets.h"

 

这可以看成是Apache HTTP应用的基础*

 

这里面封装SOCKET5的函数,不过通过操作系统的API实现:即上次说过的os.h中的内容*。

 

可以说,这个是核心的核心——APR

 

APR包含了连接、登录、线程、用户管理、时间管理、文件管理及内存管理(储存、数据类型及结构)等相当多的内容。

此核心的核心约10万行代码(含测试约2万行代码)。*(以后如未说明,代码行数均以httpd-2.0.64 UNIX为例)

 

1.1 连接

核心为SOCKET5的应用,这里使用操作系统的API。

UNIX版中也有WIN32的应用,分别在名为apr_network_io.h等头文件以及sendrecv.c,sockets.c,sockopt.c三个实现中。

主要内容可参见一些SOCKET编程的资料。

里面包括了发送、接收、连接时间控制、端口管理及系统级IP过滤(apr_socket_accept_filter)等。

 

1.2 登录控制

此版本的登录控制比较容易,主要通过文件操作来比对完成。

 

1.3 线程

主要通过apr_thread_proc.h定义的函数/方法产生如建立线程、

 

1.4 用户管理

实现在用户名与ID的管理,用户可归入用户组,这个管理有点像手机的电话薄。

详见apr_user.h

 

1.5 时间管理apr_time.h

 

1.6 文件管理

完成对文件的操作及管理,类操作系统的功能。详见apr_file_info.h、apr_file_io.h

 

1.7 内存管理(储存、数据类型及结构)

1.7.1 基本数据类型

不知道是为了证明水平,还是要证明自有的特有的变量特征,还是显示个性,看过的架构的基础数据类型均有自己的别名。大家似乎乐此不疲。

这也不过分,这样的逻辑结构及应用更统一,我们自己设计架构时也经常会这么做。这里还有一个好处是代理,从32位变为64位只要改一下头文件就可以了。说到这里也就知道这是一个良好的习惯了。

不过要看懂,要还原为标准C及STL的结构特征(如果有对应结构)

(1)整型

apr_signum_t

无符号整型

apr_uint32_t s_addr

 

(2)常量(包括常量字符)

APR_ANYADDR

SOCKET参数 共4字节的特征码,最大16384,二进制表示最高位为0100*

协议代码:TCP、UDP等;

 

(3)结构

最主要的结构是应用在SOCKET5中的地址结构。

 

1.8 *事件及代理机制

APR中已经包含了对事件及函数代理的使用,代码简洁。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值