[项目][WebServer][Task]详细讲解
DieSnowK 2024-09-19 12:33:01 阅读 67
目录
1.Task类2.CallBack类
1.Task类
<code>class Task
{ -- -->
public:
void ProcessOn()
{
_handler(_sock);
}
Task()
{ }
Task(int sock)
: _sock(sock)
{ }
~Task()
{ }
private:
int _sock;
CallBack _handler; // 设置回调
};
2.CallBack类
读取出错处理
读取请求时可能出错,此时读取到的请求是一个错误请求,那么就没有往下解析执行的必要了,故在RecvRequest()
返回之后,做以下设计
ep->RecvRequest();
if(!ep->IsStop()) // 只有读取请求不出错,才往下执行
{
LOG(INFO, "Recv No Error, Continue Build And Send");
ep->BuildResponse();
ep->SendResponse();
}
else
{
LOG(WARNING, "Recv Error, Stop Build And Send");
}
struct CallBack
{
// 重载() --> 仿函数
void operator()(int sock)
{
HandlerRequest(sock);
}
void HandlerRequest(int sock)
{
LOG(INFO, "Hander Request Begin");
EndPoint *ep = new EndPoint(sock); // TODO
ep->RecvRequest();
if(!ep->IsStop()) // 只有读取请求不出错,才往下执行
{
LOG(INFO, "Recv No Error, Continue Build And Send");
ep->BuildResponse();
ep->SendResponse();
}
else
{
LOG(WARNING, "Recv Error, Stop Build And Send");
}
delete ep;
LOG(INFO, "Hander Request End");
}
CallBack()
{ }
~CallBack()
{ }
};
声明
本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。