drogon
drogon copied to clipboard
Task<HttpResponsePtr> doFilter(const HttpRequestPtr &req) 这个怎么实现?
我是想在自定义的过滤器中,实现doFilter, 但是我不想用异步回调方式,我想使用协程方式实现。 我看基类 HttpFilter 中有个 virtual Task<HttpResponsePtr> doFilter(const HttpRequestPtr &req) = 0;
具体有实现这个协程方式doFilter的示例吗?
https://github.com/drogonframework/drogon/blob/a3b4779540831cb8c03addb591ced3080b488917/lib/tests/integration_test/server/CoroFilter.cpp#L7-L12 大概是这个样子,返回空就通过,返回一个构造好的HttpResponsePtr对象就拦截了。
drogon/lib/tests/integration_test/server/CoroFilter.cpp
Lines 7 to 12 in a3b4779
Task<HttpResponsePtr> CoroFilter::doFilter(const HttpRequestPtr& req) { int secs = std::stoi(req->getParameter("secs")); co_await sleepCoro(trantor::EventLoop::getEventLoopOfCurrentThread(), secs); co_return {}; }
大概是这个样子,返回空就通过,返回一个构造好的HttpResponsePtr对象就拦截了。
感谢,我去试一下!