Malloy
Loading...
Searching...
No Matches
type_traits.hpp
1#pragma once
2
3#include <concepts>
4#include <variant>
5
6#include "../../core/type_traits.hpp"
7
8namespace malloy::server::concepts
9{
10 namespace detail
11 {
12 template<typename T>
16
17 template<typename Func, typename... Args>
19 std::invocable<Func, Args...> &&
20 requires(Func f, Args... args) {
21 { std::invoke(f, args...) } -> route_handler_retr;
22 };
23 }
24
25 template<typename F, typename Req>
26 concept route_handler =
29
30 template<typename Func>
31 concept websocket_handler = std::invocable <Func, const malloy::http::request_header<>&, const std::shared_ptr<websocket::connection>&>;
32
33 template<typename H>
35 std::move_constructible<H> &&
36 requires(const H& f, const typename H::request_type::header_type& h, typename H::request_type::body_type::value_type& v)
37 {
38 { f.setup_body(h, v) };
39 };
40
41 template<typename P>
42 concept request_validator = requires(P p, const boost::beast::http::request_header<>& h) {
44 };
45
46} // namespace malloy::server::concepts
47
Definition: type_traits.hpp:120
Definition: type_traits.hpp:101
Definition: type_traits.hpp:34
Definition: type_traits.hpp:42
Definition: type_traits.hpp:26
Definition: type_traits.hpp:31