diff options
Diffstat (limited to 'src/zenhttp/httpserver.cpp')
| -rw-r--r-- | src/zenhttp/httpserver.cpp | 35 |
1 files changed, 34 insertions, 1 deletions
diff --git a/src/zenhttp/httpserver.cpp b/src/zenhttp/httpserver.cpp index a98a3c9bb..523befa72 100644 --- a/src/zenhttp/httpserver.cpp +++ b/src/zenhttp/httpserver.cpp @@ -6,6 +6,13 @@ #include "httpnull.h" #include "httpsys.h" +#include "zenhttp/httpplugin.h" + +#if ZEN_WITH_PLUGINS +# include "dlltransport.h" +# include "winsocktransport.h" +#endif + #include <zencore/compactbinary.h> #include <zencore/compactbinarybuilder.h> #include <zencore/compactbinarypackage.h> @@ -711,6 +718,7 @@ enum class HttpServerClass { kHttpAsio, kHttpSys, + kHttpPlugin, kHttpNull }; @@ -723,7 +731,7 @@ CreateHttpServer(const HttpServerConfig& Config) #if ZEN_WITH_HTTPSYS Class = HttpServerClass::kHttpSys; -#elif 1 +#else Class = HttpServerClass::kHttpAsio; #endif @@ -735,6 +743,10 @@ CreateHttpServer(const HttpServerConfig& Config) { Class = HttpServerClass::kHttpSys; } + else if (Config.ServerClass == "plugin"sv) + { + Class = HttpServerClass::kHttpPlugin; + } else if (Config.ServerClass == "null"sv) { Class = HttpServerClass::kHttpNull; @@ -747,6 +759,27 @@ CreateHttpServer(const HttpServerConfig& Config) ZEN_INFO("using asio HTTP server implementation"); return Ref<HttpServer>(new HttpAsioServer(Config.ThreadCount)); +#if ZEN_WITH_PLUGINS + case HttpServerClass::kHttpPlugin: + { + ZEN_INFO("using plugin HTTP server implementation"); + Ref<HttpPluginServer> Server{new HttpPluginServer(Config.ThreadCount)}; + +# if 1 + Ref<TransportPluginInterface> WinsockPlugin{CreateSocketTransportPlugin(1337, Config.ThreadCount)}; + Server->AddPlugin(WinsockPlugin); +# endif + +# if 0 + Ref<DllTransportPlugin> DllPlugin{new DllTransportPlugin(1337, Config.ThreadCount)}; + DllPlugin->LoadDll("winsock"); + Server->AddPlugin(DllPlugin); +# endif + + return Server; + } +#endif + #if ZEN_WITH_HTTPSYS case HttpServerClass::kHttpSys: ZEN_INFO("using http.sys server implementation"); |