当解析配置文件时候,会构造一个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