作者:Rainbow(不经历风雨,怎么见彩虹)
创作时间:2002-10-1
/********************************************************************************************************************
声明:本文档用于学习与研究可以自由转载,无论以何种形式发布都必须保留完整的版权声明,商业用途不得转载.本人能力有限,如有问题欢迎交流与指正。
网站:
论坛:/forum/forum.html
邮件:rainbow_zrh@sina.com webmaster@infosecurity.org.cn
*********************************************************************************************************************/
0、数据结构简介
mod_ssl中定义了一些数据结构能够用来存贮任何东西。在讲述具体的函数之前我们前来介绍几个有用的数据结构。
typedef struct {
ap_pool *pool;
int elt_size;
int nelts;
int nalloc;
char *elts; // 元素的内容
} array_header
array_header是apache定义的一个结构用来存贮一些数据。
typedef struct {
pool *pPool;
pool *pSubPool;
array_header *aData;
} ssl_ds_array
ssl_ds_array是用来存贮类似array_header数据的。
typedef struct {
pool *pPool;
pool *pSubPool;
array_header *aKey;
array_header *aData;
} ssl_ds_table
ssl_ds_table是用来存贮键值对的数据。
1、ssl_ds_array_make
【1】功能: 申请size大小的内存区。
【2】过程描述:ssl_ds_array结构中的aData为新申请的内存。
2、ssl_ds_array_isempty
【1】功能: 判断ssl_ds_array是否为空。
【2】过程描述:判断ssl_ds_array是否有效或aData域是否有效或aData域中的nelts是否为0。来确定是否为空。
3、ssl_ds_array_push
【1】功能: 将数据推入堆栈。
【2】过程描述:
4、ssl_ds_array_get
【1】功能:取第n个数据。
【2】过程描述:
5、ssl_ds_array_wipeout
【1】功能: 清除ssl_ds_array中的数据。
【2】过程描述:
6、ssl_ds_array_kill
【1】功能: 释放ssl_ds_array中的内存。
【2】过程描述:
下面的函数用法同上,只是将操作的对象由array改成了table。
7、ssl_ds_table_make
【1】功能: 在内存池中申请一个数据表结构,其中数据域为size大小,键的大小为MAX_STRING_LEN。
【2】过程描述:
8、ssl_ds_table_isempty
同ssl_ds_array_isempty
9、ssl_ds_table_push
同ssl_ds_array_push
10、ssl_ds_table_get
同ssl_ds_array_get
11、ssl_ds_table_wipeout
同ssl_ds_array_wipeout
12、ssl_ds_table_kill
同ssl_ds_array_kill