On Thu, Mar 29, 2012 at 3:53 PM, Jason Calio <vip...@gmail.com> wrote:
> 因为process族函数传入的是ngx_chain_t *in指针,在process族函数中对in链表的修改在函数返回后失效,所以才做了这个循环。
我在上一封邮件中其实已经对此给出了一种解法,呵呵:
"或许我们可以重构这里的状态机实现,类似 nginx 核心那样使用回调函数指针 +
用户状态数据指针(在这里便是 in 链接头指针)来搞某种“隐式状态机”"
这里我指的是由 process 族函数在 ctx 结构体中把当前的 in 指针注册为“用户状态数据指针”。
> 如果传入ngx_chain_t **in的话倒是可以做到。
这也是一种解法 :) 或许会更好一些。
> 因为项目很快需要上线,所以采用了简单的改法。
>
对于融合进主流版本的补丁,我会尽量避免 hacks :)
> 做隐式状态机的话会不会很麻烦?
>
不会。Nginx 核心中随处使用了这种编程方式 :)
Regards,
-agentzh