aboutsummaryrefslogtreecommitdiffstats
path: root/include/crow.h
diff options
context:
space:
mode:
authoripknHama <ipknhama@gmail.com>2016-08-29 21:13:24 +0900
committeripknHama <ipknhama@gmail.com>2016-09-10 01:22:06 +0900
commit079df6efc5879091067d68dcbf7b8794f223d024 (patch)
treea8a4868ec580a11c0fce9551bc90437db46233df /include/crow.h
parent1a4a51bf7662c860544c5049c6cc18511f991253 (diff)
downloadcrow-079df6efc5879091067d68dcbf7b8794f223d024.tar.gz
crow-079df6efc5879091067d68dcbf7b8794f223d024.zip
Add a periodic handler feature
Diffstat (limited to 'include/crow.h')
-rw-r--r--include/crow.h13
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