介绍了handler_的调用顺序,其中的一个调用过程是Connection::->handle
void handle()
{
...
ctx_ = detail::context<Middlewares...>();
req_.middleware_context = static_cast<void*>(&ctx_);
req_.middleware_container = static_cast<void*>(middlewares_);
req_.io_service = &adaptor_.get_io_service();
detail::middleware_call_helper<detail::middleware_call_criteria_only_global,
0, decltype(ctx_), decltype(*middlewares_)>({}, *middlewares_, req_, res, ctx_);
...
}
ctx_被定义为detail::context<Middlewares...> ctx_;
也就是通过Middlewares,即初始化初始化Connection时指定的模板列表
然后将继承于所有Middlewares的context对象以及middlewares