diff options
author | ipknHama <ipknhama@gmail.com> | 2016-08-29 21:13:24 +0900 |
---|---|---|
committer | ipknHama <ipknhama@gmail.com> | 2016-09-10 01:22:06 +0900 |
commit | 079df6efc5879091067d68dcbf7b8794f223d024 (patch) | |
tree | a8a4868ec580a11c0fce9551bc90437db46233df /include/crow.h | |
parent | 1a4a51bf7662c860544c5049c6cc18511f991253 (diff) | |
download | crow-079df6efc5879091067d68dcbf7b8794f223d024.tar.gz crow-079df6efc5879091067d68dcbf7b8794f223d024.zip |
Add a periodic handler feature
Diffstat (limited to 'include/crow.h')
-rw-r--r-- | include/crow.h | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/include/crow.h b/include/crow.h index 00209c7..0ec8a57 100644 --- a/include/crow.h +++ b/include/crow.h @@ -1,5 +1,6 @@ #pragma once +#include <chrono> #include <string> #include <functional> #include <memory> @@ -101,12 +102,14 @@ namespace crow if (use_ssl_) { ssl_server_ = std::move(std::unique_ptr<ssl_server_t>(new ssl_server_t(this, bindaddr_, port_, &middlewares_, concurrency_, &ssl_context_))); + ssl_server_->set_tick_function(tick_interval_, tick_function_); ssl_server_->run(); } else #endif { server_ = std::move(std::unique_ptr<server_t>(new server_t(this, bindaddr_, port_, &middlewares_, concurrency_, nullptr))); + server_->set_tick_function(tick_interval_, tick_function_); server_->run(); } } @@ -210,12 +213,22 @@ namespace crow return utility::get_element_by_type<T, Middlewares...>(middlewares_); } + template <typename Duration, typename Func> + self_t& tick(Duration d, Func f) { + tick_interval_ = std::chrono::duration_cast<std::chrono::milliseconds>(d); + tick_function_ = f; + return *this; + } + private: uint16_t port_ = 80; uint16_t concurrency_ = 1; std::string bindaddr_ = "0.0.0.0"; Router router_; + std::chrono::milliseconds tick_interval_; + std::function<void()> tick_function_; + std::tuple<Middlewares...> middlewares_; #ifdef CROW_ENABLE_SSL |