[项目][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()

{ }

};



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。