diff options
Diffstat (limited to 'http/routing.h')
-rw-r--r-- | http/routing.h | 89 |
1 files changed, 48 insertions, 41 deletions
diff --git a/http/routing.h b/http/routing.h index cc5c75fc8c..b2729ef968 100644 --- a/http/routing.h +++ b/http/routing.h @@ -1,5 +1,12 @@ #pragma once +#include "common.h" +#include "http_request.h" +#include "http_response.h" +#include "logging.h" +#include "utility.h" +#include "websocket.h" + #include "error_messages.hpp" #include "privileges.hpp" #include "sessions.hpp" @@ -8,6 +15,7 @@ #include <boost/container/flat_map.hpp> #include <boost/container/small_vector.hpp> #include <boost/lexical_cast.hpp> + #include <cerrno> #include <cstdint> #include <cstdlib> @@ -17,13 +25,6 @@ #include <utility> #include <vector> -#include "common.h" -#include "http_request.h" -#include "http_response.h" -#include "logging.h" -#include "utility.h" -#include "websocket.h" - namespace crow { @@ -34,8 +35,7 @@ class BaseRule { public: BaseRule(std::string thisRule) : rule(std::move(thisRule)) - { - } + {} virtual ~BaseRule() = default; @@ -99,20 +99,23 @@ class BaseRule std::unique_ptr<BaseRule> ruleToUpgrade; friend class Router; - template <typename T> friend struct RuleParameterTraits; + template <typename T> + friend struct RuleParameterTraits; }; namespace detail { namespace routing_handler_call_helper { -template <typename T, int Pos> struct CallPair +template <typename T, int Pos> +struct CallPair { using type = T; static const int pos = Pos; }; -template <typename H1> struct CallParams +template <typename H1> +struct CallParams { H1& handler; const RoutingParams& params; @@ -123,8 +126,7 @@ template <typename H1> struct CallParams template <typename F, int NInt, int NUint, int NDouble, int NString, typename S1, typename S2> struct Call -{ -}; +{}; template <typename F, int NInt, int NUint, int NDouble, int NString, typename... Args1, typename... Args2> @@ -195,7 +197,8 @@ struct Call<F, NInt, NUint, NDouble, NString, black_magic::S<>, } }; -template <typename Func, typename... ArgsWrapped> struct Wrapped +template <typename Func, typename... ArgsWrapped> +struct Wrapped { template <typename... Args> void set( @@ -213,11 +216,11 @@ template <typename Func, typename... ArgsWrapped> struct Wrapped }; } - template <typename Req, typename... Args> struct ReqHandlerWrapper + template <typename Req, typename... Args> + struct ReqHandlerWrapper { ReqHandlerWrapper(Func f) : f(std::move(f)) - { - } + {} void operator()(const Request& req, Response& res, Args... args) { @@ -264,7 +267,8 @@ template <typename Func, typename... ArgsWrapped> struct Wrapped handler = std::move(f); } - template <typename... Args> struct HandlerTypeHelper + template <typename... Args> + struct HandlerTypeHelper { using type = std::function<void(const crow::Request&, crow::Response&, Args...)>; @@ -312,12 +316,10 @@ class WebSocketRule : public BaseRule public: WebSocketRule(std::string rule) : BaseRule(std::move(rule)) - { - } + {} void validate() override - { - } + {} void handle(const Request&, Response& res, const RoutingParams&) override { @@ -351,25 +353,29 @@ class WebSocketRule : public BaseRule } #endif - template <typename Func> self_t& onopen(Func f) + template <typename Func> + self_t& onopen(Func f) { openHandler = f; return *this; } - template <typename Func> self_t& onmessage(Func f) + template <typename Func> + self_t& onmessage(Func f) { messageHandler = f; return *this; } - template <typename Func> self_t& onclose(Func f) + template <typename Func> + self_t& onclose(Func f) { closeHandler = f; return *this; } - template <typename Func> self_t& onerror(Func f) + template <typename Func> + self_t& onerror(Func f) { errorHandler = f; return *this; @@ -386,7 +392,8 @@ class WebSocketRule : public BaseRule std::function<void(crow::websocket::Connection&)> errorHandler; }; -template <typename T> struct RuleParameterTraits +template <typename T> +struct RuleParameterTraits { using self_t = T; WebSocketRule& websocket() @@ -444,8 +451,7 @@ class DynamicRule : public BaseRule, public RuleParameterTraits<DynamicRule> { public: DynamicRule(std::string rule) : BaseRule(std::move(rule)) - { - } + {} void validate() override { @@ -462,7 +468,8 @@ class DynamicRule : public BaseRule, public RuleParameterTraits<DynamicRule> erasedHandler(req, res, params); } - template <typename Func> void operator()(Func f) + template <typename Func> + void operator()(Func f) { using function_t = utility::function_traits<Func>; @@ -497,7 +504,8 @@ class DynamicRule : public BaseRule, public RuleParameterTraits<DynamicRule> return ret; } - template <typename Func> void operator()(std::string name, Func&& f) + template <typename Func> + void operator()(std::string name, Func&& f) { nameStr = std::move(name); (*this).template operator()<Func>(std::forward(f)); @@ -509,15 +517,15 @@ class DynamicRule : public BaseRule, public RuleParameterTraits<DynamicRule> }; template <typename... Args> -class TaggedRule : public BaseRule, - public RuleParameterTraits<TaggedRule<Args...>> +class TaggedRule : + public BaseRule, + public RuleParameterTraits<TaggedRule<Args...>> { public: using self_t = TaggedRule<Args...>; TaggedRule(std::string ruleIn) : BaseRule(std::move(ruleIn)) - { - } + {} void validate() override { @@ -606,7 +614,8 @@ class TaggedRule : public BaseRule, handler = std::move(f); } - template <typename Func> void operator()(std::string name, Func&& f) + template <typename Func> + void operator()(std::string name, Func&& f) { nameStr = std::move(name); (*this).template operator()<Func>(std::forward(f)); @@ -647,8 +656,7 @@ class Trie }; Trie() : nodes(1) - { - } + {} private: void optimizeNode(Node* node) @@ -1406,8 +1414,7 @@ class Router // rule index 0, 1 has special meaning; preallocate it to avoid // duplication. PerMethod() : rules(2) - { - } + {} }; std::array<PerMethod, maxHttpVerbCount> perMethods; std::vector<std::unique_ptr<BaseRule>> allRules; |