20 #ifdef CROW_MSVC_WORKAROUND 21 #define CROW_ROUTE(app, url) app.route_dynamic(url) 23 #define CROW_ROUTE(app, url) app.route<crow::black_magic::get_parameter_tag(url)>(url) 28 #ifdef CROW_ENABLE_SSL 31 template <
typename ... Middlewares>
37 #ifdef CROW_ENABLE_SSL 38 using ssl_server_t =
Server<
Crow, SSLAdaptor, Middlewares...>;
44 template <
typename Adaptor>
60 template <u
int64_t Tag>
62 ->
typename std::result_of<decltype(&Router::new_rule_tagged<Tag>)(
Router, std::string&&)>
::type 81 return concurrency(std::thread::hardware_concurrency());
100 #ifdef CROW_ENABLE_SSL 116 #ifdef CROW_ENABLE_SSL 134 #ifdef CROW_ENABLE_SSL 135 self_t&
ssl_file(
const std::string& crt_filename,
const std::string& key_filename)
138 ssl_context_.set_verify_mode(boost::asio::ssl::verify_peer);
139 ssl_context_.use_certificate_file(crt_filename, ssl_context_t::pem);
140 ssl_context_.use_private_key_file(key_filename, ssl_context_t::pem);
141 ssl_context_.set_options(
142 boost::asio::ssl::context::default_workarounds
143 | boost::asio::ssl::context::no_sslv2
144 | boost::asio::ssl::context::no_sslv3
152 ssl_context_.set_verify_mode(boost::asio::ssl::verify_peer);
153 ssl_context_.load_verify_file(pem_filename);
154 ssl_context_.set_options(
155 boost::asio::ssl::context::default_workarounds
156 | boost::asio::ssl::context::no_sslv2
157 | boost::asio::ssl::context::no_sslv3
165 ssl_context_ = std::move(ctx);
170 bool use_ssl_{
false};
171 ssl_context_t ssl_context_{boost::asio::ssl::context::sslv23};
174 template <
typename T,
typename ... Remain>
180 std::is_base_of<T, void>::value,
181 "Define CROW_ENABLE_SSL to enable ssl support.");
185 template <
typename T>
191 std::is_base_of<T, void>::value,
192 "Define CROW_ENABLE_SSL to enable ssl support.");
199 template <
typename T>
204 return ctx.template get<T>();
207 template <
typename T>
221 #ifdef CROW_ENABLE_SSL 222 std::unique_ptr<ssl_server_t> ssl_server_;
226 template <
typename ... Middlewares>
Crow self_t
Definition: crow.h:35
Definition: http_response.h:12
Definition: utility.h:375
black_magic::arguments< N >::type::template rebind< TaggedRule > & new_rule_tagged(const std::string &rule)
Definition: routing.h:874
Definition: socket_adaptors.h:12
const uint32_t T[512]
Definition: groestl_tables.h:34
T::context & get_context(const request &req)
Definition: crow.h:200
Router router_
Definition: crow.h:217
Definition: http_request.h:23
self_t & concurrency(std::uint16_t concurrency)
Definition: crow.h:84
Definition: routing.h:857
T & get_element_by_type(std::tuple< Args... > &t)
Definition: utility.h:449
Crow()
Definition: crow.h:40
void handle_upgrade(const request &req, response &res, Adaptor &&adaptor)
Definition: routing.h:915
std::tuple< Middlewares... > middlewares_
Definition: crow.h:219
void handle(const request &req, response &res)
Definition: routing.h:979
T & get_middleware()
Definition: crow.h:208
void debug_print()
Definition: routing.h:1046
void debug_print()
Definition: crow.h:128
type
Definition: json.h:74
Definition: http_server.h:25
self_t & multithreaded()
Definition: crow.h:79
#define CROW_LOG_DEBUG
Definition: logging.h:139
void * middleware_context
Definition: http_request.h:32
auto route(std::string &&rule) -> typename std::result_of< decltype(&Router::new_rule_tagged< Tag >)(Router, std::string &&)>::type
Definition: crow.h:61
void handle_upgrade(const request &req, response &res, Adaptor &&adaptor)
Definition: crow.h:45
void stop()
Definition: crow.h:114
void validate()
Definition: routing.h:899
void validate()
Definition: crow.h:92
self_t & ssl(T &&)
Definition: crow.h:186
self_t & bindaddr(std::string bindaddr)
Definition: crow.h:73
self_t & ssl_file(T &&, Remain &&...)
Definition: crow.h:175
DynamicRule & route_dynamic(std::string &&rule)
Definition: crow.h:55
self_t & port(std::uint16_t port)
Definition: crow.h:67
std::string bindaddr_
Definition: crow.h:216
void run()
Definition: crow.h:97
Server< Crow, SocketAdaptor, Middlewares... > server_t
Definition: crow.h:36
uint16_t concurrency_
Definition: crow.h:215
Definition: routing.h:356
void handle(const request &req, response &res)
Definition: crow.h:50
uint16_t port_
Definition: crow.h:214
std::unique_ptr< server_t > server_
Definition: crow.h:224
DynamicRule & new_rule_dynamic(const std::string &rule)
Definition: routing.h:864
json::wvalue context
Definition: mustache.h:12