liuming794 发表于 2018-11-10 08:10:27

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]
查看完整版本: nginx-nginx数据结构