sogou / workflow

C++ Parallel Computing and Asynchronous Networking Framework

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

咨询tutorial-05-http-proxy的reply_callback()

Treston-W opened this issue · comments

关于tutorial-05,我理解有三个角色:
网页客户端client、proxy server(咱们要实现的代理服务器)、web server(真正存储资源的服务器)

关于涉及到的四个回调函数,我的理解如下:
【process()】:proxy server收到来自client请求时触发,目的是组织proxy server向web server的请求
【http_callback()】:proxy server收到来自web server回复时触发,目的是组织proxy server向client的回复
【series_callback()】:delete (tutorial_series_context *)series->get_context();当前series内的所有task结束后触发,目的是释放context资源
【reply_callback()】:这个回调函数我没有理解,触发时机是什么时候?目的是什么?

你好。你还是代码看得比较仔细的。前面几个回调函数的时机描述都没有问题。

reply_callback()是server task的callback。server task和client task都是WFHttpTask类型,callback的时机也是一样的,都是在http请求交互完成之后。对于server task来讲,就是把reply写完整写入tcp send buffer。当然,还有一种情况是失败了。

所以,reply_callback的主要目的就是看回复成功了没有。并且,server task在callback之后,还可以继续向series里放入新的任务的。例如加一个上报请求状态给监控服务器的网络任务。

调用顺序:process->http_callback->reply_callback->series_callback。

你好。你还是代码看得比较仔细的。前面几个回调函数的时机描述都没有问题。

reply_callback()是server task的callback。server task和client task都是WFHttpTask类型,callback的时机也是一样的,都是在http请求交互完成之后。对于server task来讲,就是把reply写完整写入tcp send buffer。当然,还有一种情况是失败了。

所以,reply_callback的主要目的就是看回复成功了没有。并且,server task在callback之后,还可以继续向series里放入新的任务的。例如加一个上报请求状态给监控服务器的网络任务。

调用顺序:process->http_callback->reply_callback->series_callback。

谢谢!我比对几个demo测试了一下,现在对几个回调的理解清晰了。