aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorrayburgemeestre <ray.burgemeestre@gmail.com>2016-06-19 12:50:40 +0200
committerrayburgemeestre <ray.burgemeestre@gmail.com>2016-06-19 12:50:40 +0200
commitee220daeef25057083545713ded32c24e712f3d5 (patch)
tree72fa799a1e8b7f7ebf04dd923d6520ab3b21863e /include
parentda4bb3aeab4112071b25e53142cb286b10b91b23 (diff)
downloadcrow-ee220daeef25057083545713ded32c24e712f3d5.tar.gz
crow-ee220daeef25057083545713ded32c24e712f3d5.zip
expose server stop() in Crow app to allow shutdown other than signal.
Diffstat (limited to 'include')
-rw-r--r--include/crow.h27
1 files changed, 23 insertions, 4 deletions
diff --git a/include/crow.h b/include/crow.h
index 31b96cb..aff6716 100644
--- a/include/crow.h
+++ b/include/crow.h
@@ -94,14 +94,28 @@ namespace crow
#ifdef CROW_ENABLE_SSL
if (use_ssl_)
{
- ssl_server_t server(this, bindaddr_, port_, &middlewares_, concurrency_, &ssl_context_);
- server.run();
+ ssl_server_ = std::move(std::unique_ptr<ssl_server_t>(new ssl_server_t(this, bindaddr_, port_, &middlewares_, concurrency_, &ssl_context_)));
+ ssl_server_->run();
}
else
#endif
{
- server_t server(this, bindaddr_, port_, &middlewares_, concurrency_, nullptr);
- server.run();
+ server_ = std::move(std::unique_ptr<server_t>(new server_t(this, bindaddr_, port_, &middlewares_, concurrency_, nullptr)));
+ server_->run();
+ }
+ }
+
+ void stop()
+ {
+#ifdef CROW_ENABLE_SSL
+ if (use_ssl_)
+ {
+ ssl_server_->stop();
+ }
+ else
+#endif
+ {
+ server_->stop();
}
}
@@ -197,6 +211,11 @@ namespace crow
Router router_;
std::tuple<Middlewares...> middlewares_;
+
+#ifdef CROW_ENABLE_SSL
+ std::unique_ptr<ssl_server_t> ssl_server_;
+#endif
+ std::unique_ptr<server_t> server_;
};
template <typename ... Middlewares>
using App = Crow<Middlewares...>;