Route& METHOD(const RootRoute& rootRoute) const; \
Route& METHOD(const std::string& relativeMountPath, const RootRoute& rootRoute) const; \
Route& METHOD(const std::function<void(const std::shared_ptr<Request>&, const std::shared_ptr<Response>&)>& lambda) const; \
Route& METHOD(const std::string& relativeMountPath, \
const std::function<void(const std::shared_ptr<Request>&, const std::shared_ptr<Response>&)>& lambda) const; \
Route& METHOD(const std::function<void(const std::shared_ptr<Request>&, const std::shared_ptr<Response>&, Next&)>& lambda) const; \
Route& METHOD(const std::string& relativeMountPath, \
const std::function<void(const std::shared_ptr<Request>&, const std::shared_ptr<Response>&, Next&)>& lambda) const;
77 {
78
79 class RootRoute : public Route {
80 public:
81 RootRoute() = default;
82
83 private:
84 bool setStrictRouting(bool strictRouting);
85 bool setCaseInsensitiveRouting(bool caseInsensitiveRouting);
86
87 void dispatch(Controller&& controller);
88 void dispatch(Controller& controller);
89
90 std::shared_ptr<dispatcher::RouterDispatcher> getDispatcher() const;
91 std::list<Route>& routes() const;
92
93 std::list<std::string> getRoutes() const;
94
95 public:
107
108 friend class Router;
109 friend class Controller;
110
111 template <typename Server>
112 friend class WebAppT;
113 };
114
115}
116
117#endif
#define DECLARE_ROOTROUTE_REQUESTMETHOD(METHOD)