Files
uWebSockets/src/App.h
T
2018-10-03 18:35:20 +02:00

58 lines
1.3 KiB
C++

#ifndef APP_H
#define APP_H
/* An app is a convenience wrapper of some of the most used fuctionalities and allows a
* builder-pattern kind of init. Apps operate on the implicit thread local Loop */
#include "HttpContext.h"
#include "HttpResponse.h"
namespace uWS {
template <bool SSL>
struct TemplatedApp {
private:
HttpContext<SSL> *httpContext;
public:
~TemplatedApp() {
}
TemplatedApp(const TemplatedApp &other) {
httpContext = other.httpContext;
}
TemplatedApp(us_ssl_socket_context_options sslOptions = {}) {
httpContext = uWS::HttpContext<SSL>::create(uWS::Loop::defaultLoop(), &sslOptions);
}
TemplatedApp &get(std::string pattern, std::function<void(HttpResponse<SSL> *, HttpRequest *)> handler) {
httpContext->onGet(pattern, handler);
return *this;
}
TemplatedApp &unhandled(std::function<void(HttpResponse<SSL> *, HttpRequest *)> handler) {
httpContext->onUnhandled(handler);
return *this;
}
TemplatedApp &listen(int port, std::function<void(us_listen_socket *)> handler) {
handler(httpContext->listen(nullptr, port, 0));
return *this;
}
TemplatedApp &run() {
uWS::run();
return *this;
}
};
typedef TemplatedApp<false> App;
typedef TemplatedApp<true> SSLApp;
}
#endif // APP_H