The main server application. More...
Public Types | |
using | self_t = Crow |
This crow application. More... | |
using | server_t = Server< Crow, SocketAdaptor, Middlewares... > |
The HTTP server. More... | |
using | context_t = detail::context< Middlewares... > |
using | mw_container_t = std::tuple< Middlewares... > |
Public Member Functions | |
Crow () | |
template<typename Adaptor > | |
void | handle_upgrade (const request &req, response &res, Adaptor &&adaptor) |
Process an Upgrade request. More... | |
void | handle (request &req, response &res) |
Process the request and generate a response for it. More... | |
DynamicRule & | route_dynamic (std::string &&rule) |
Create a dynamic route using a rule (Use CROW_ROUTE instead) More... | |
template<uint64_t Tag> | |
auto | route (std::string &&rule) -> typename std::result_of< decltype(&Router::new_rule_tagged< Tag >)(Router, std::string &&)>::type |
Create a route using a rule (Use CROW_ROUTE instead) More... | |
CatchallRule & | catchall_route () |
Create a route for any requests without a proper route (Use CROW_CATCHALL_ROUTE instead) More... | |
self_t & | signal_clear () |
self_t & | signal_add (int signal_number) |
self_t & | port (std::uint16_t port) |
Set the port that Crow will handle requests on. More... | |
std::uint16_t | port () |
Get the port that Crow will handle requests on. More... | |
self_t & | timeout (std::uint8_t timeout) |
Set the connection timeout in seconds (default is 5) More... | |
self_t & | server_name (std::string server_name) |
Set the server name. More... | |
self_t & | bindaddr (std::string bindaddr) |
The IP address that Crow will handle requests on (default is 0.0.0.0) More... | |
self_t & | multithreaded () |
Run the server on multiple threads using all available threads. More... | |
self_t & | concurrency (std::uint16_t concurrency) |
Run the server on multiple threads using a specific number. More... | |
self_t & | loglevel (LogLevel level) |
Set the server's log level. More... | |
self_t & | stream_threshold (size_t threshold) |
Set the response body size (in bytes) beyond which Crow automatically streams responses (Default is 1MiB) More... | |
size_t & | stream_threshold () |
Get the response body size (in bytes) beyond which Crow automatically streams responses. More... | |
self_t & | register_blueprint (Blueprint &blueprint) |
template<typename Duration , typename Func > | |
self_t & | tick (Duration d, Func f) |
Set a custom duration and function to run on every tick. More... | |
void | validate () |
A wrapper for validate() in the router. More... | |
void | notify_server_start () |
Notify anything using wait_for_server_start() to proceed. More... | |
void | run () |
Run the server. More... | |
std::future< void > | run_async () |
Non-blocking version of run() More... | |
void | stop () |
Stop the server. More... | |
void | debug_print () |
Print the routing paths defined for each HTTP method. More... | |
template<typename T , typename... Remain> | |
self_t & | ssl_file (T &&, Remain &&...) |
template<typename T > | |
self_t & | ssl (T &&) |
bool | ssl_used () const |
template<typename T > | |
T::context & | get_context (const request &req) |
template<typename T > | |
T & | get_middleware () |
void | wait_for_server_start () |
Wait until the server has properly started. More... | |
Private Attributes | |
std::uint8_t | timeout_ {5} |
uint16_t | port_ = 80 |
uint16_t | concurrency_ = 2 |
bool | validated_ = false |
std::string | server_name_ = std::string("Crow/") + VERSION |
std::string | bindaddr_ = "0.0.0.0" |
size_t | res_stream_threshold_ = 1048576 |
Router | router_ |
std::chrono::milliseconds | tick_interval_ |
std::function< void()> | tick_function_ |
std::tuple< Middlewares... > | middlewares_ |
std::unique_ptr< server_t > | server_ |
std::vector< int > | signals_ {SIGINT, SIGTERM} |
bool | server_started_ {false} |
std::condition_variable | cv_started_ |
std::mutex | start_mutex_ |
The main server application.
Use SimpleApp
or App<Middleware1, Middleware2, etc...>
using crow::Crow< Middlewares >::self_t = Crow |
This crow application.
using crow::Crow< Middlewares >::server_t = Server<Crow, SocketAdaptor, Middlewares...> |
The HTTP server.
using crow::Crow< Middlewares >::context_t = detail::context<Middlewares...> |
using crow::Crow< Middlewares >::mw_container_t = std::tuple<Middlewares...> |
|
inline |
|
inline |
Process an Upgrade request.
Currently used to upgrrade an HTTP connection to a WebSocket connection
|
inline |
Process the request and generate a response for it.
|
inline |
Create a dynamic route using a rule (Use CROW_ROUTE instead)
|
inline |
Create a route using a rule (Use CROW_ROUTE instead)
|
inline |
Create a route for any requests without a proper route (Use CROW_CATCHALL_ROUTE instead)
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
Set the connection timeout in seconds (default is 5)
|
inline |
Set the server name.
|
inline |
The IP address that Crow will handle requests on (default is 0.0.0.0)
|
inline |
Run the server on multiple threads using all available threads.
|
inline |
Run the server on multiple threads using a specific number.
|
inline |
Set the server's log level.
Possible values are:
crow::LogLevel::Debug (0)
crow::LogLevel::Info (1)
crow::LogLevel::Warning (2)
crow::LogLevel::Error (3)
crow::LogLevel::Critical (4)
|
inline |
|
inline |
Get the response body size (in bytes) beyond which Crow automatically streams responses.
|
inline |
|
inline |
Set a custom duration and function to run on every tick.
|
inline |
A wrapper for validate()
in the router.
Go through the rules, upgrade them if possible, and add them to the list of rules
|
inline |
Notify anything using wait_for_server_start()
to proceed.
|
inline |
Run the server.
|
inline |
|
inline |
Stop the server.
|
inline |
Print the routing paths defined for each HTTP method.
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
Wait until the server has properly started.
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |