nginx-nginx数据结构
//这里封装的链表容器使用是很频繁,比如http头部就是使用这个数据结构来存储的。typedef struct ngx_list_part_s ngx_list_part_t;
struct ngx_list_part_s
{
void *elts;//数组的起始地址
ngx_uint_t nelts; //已经存在多少个元素,必须小于nalloc
ngx_list_part_t *next; //下一个地址
}
typedef ngx_list_part_s
{
ngx_list_part_t *last; //链表最后一个元素
ngx_list_part_t part; //链表第一个数组元素
size_t size; //每一个数组元素占用空间大小
ngx_uint_t nalloc; //数组可以存储多少个数据
ngx_pool_t *poll; //nginx内存池的对象。
}ngx_list_t;
//下面是封装的ngx_list_t的函数借口
ngx_list_t *ngx_list_create(ngx_pool_t *pool,ngx_uint_t n,size_t size);//创建
//返回创建链表地址。
static ngx_inline ngx_int_t
ngx_list_init(ngx_list_t,ngx_pool_t *pool,ngx_uint_t n,size_t size); //初始化
//返回NGX_OK, NGX_ERROR;
void *ngx_list_push(ngx_list_t *list);//添加元素、
//遍历链表
ngx_list_part_t *part = &testlist.part;
ngx_str_t = part->elts;
for(i = 0;;i++)
{
if(i >= part->nelts)
{
if(part->next = NULL)
break;
part = part->next;
header = part->elts;
i = 0 ;
}
printf("%*s\n",str.len,str.data);
}
页:
[1]