13 std::vector<Middlewares<ContextType>*> middlewareGroups;
15 size_t middlewareBlock;
18 const std::vector<std::string_view>& requestedPath;
26 [[nodiscard(
"Discarding the processor means no routing happens")]]
30 const std::vector<std::string_view>& requestedPath,
36 middlewareGroups(std::move(middlewares)),
39 requestedPath(requestedPath),
45 void invokeRoute()
override {
46 auto first = getNext();
56 if (middlewareBlock >= middlewareGroups.size()) {
58 throw std::runtime_error(
59 "Do not invoke next twice"
71 auto* currBlock = middlewareGroups.at(middlewareBlock);
76 || currPtr >= currBlock->middlewares.size()
84 return currBlock->middlewares.at(currPtr++).get();