ngx_conf_read_token函数

ngx_conf_read_token函数在解析配置文件时,通过buf读取数据。它处理三种情况:遇到大括号需要递归解析,遇到分号表示简单配置结束,遇到错误则停止。buf的大小为4096字节,包含四种状态的字符:未解析、已扫描、已解析和空余。解析过程中,未解析和已扫描的字符会被处理,最后可能剩下不满一个buf的内容。通过源码分析可以深入了解其工作原理。
摘要由CSDN通过智能技术生成

当解析配置文件时候,会构造一个buf,来存放从配置文件中读取的数据.

每次解析出一组相关token就会返回.

1.遇到{表示遇到复杂配置,需要循环调用ngx_conf_read_token解析函数.

2.遇到;表示解析简单配置完毕,进行下一组解析.

3.遇到错误.

buf大小为4096bty,即4k.一个buf中数据为四种:

未解析字符:已经读入buf,但是还未进行扫描

已扫描字符:读入buf,已经进行分析,但是所有字符不构成一个token.

已解析字符:字符串可以组成一个token并存入argc

空余buf:文件已扫描完,并读入buf,但是读入buf的内容不够一个buf.

struct ngx_buf_s {
   //当前解析到的字符串的位置
    u_char          *pos;
   //未解析字符串的尾部
    u_char          *last;
     ………………..
    u_char          *start;         /* start of buffer */

    u_char          *end;           /* end of buffer */
      …………………..
};

 

初始化的时候:buf的状态:即所有字符均未解析.

 

解析buf中 部分字符,

当解析完部分buf后,会将剩余已经扫描而为解析的字符移到buf首部.

最后可能出现这种情况,即不满一个buf

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值