diff options
| author | Stefan Boberg <[email protected]> | 2021-08-20 22:17:13 +0200 |
|---|---|---|
| committer | Stefan Boberg <[email protected]> | 2021-08-20 22:17:13 +0200 |
| commit | 1901f186e28a5ce2cf63c32334d7d923fe0f44f1 (patch) | |
| tree | e5cc374398242bb02bc12e86682c88538a7cc5ea | |
| parent | Restructured http server code in preparation for cross platform implementation (diff) | |
| download | zen-1901f186e28a5ce2cf63c32334d7d923fe0f44f1.tar.xz zen-1901f186e28a5ce2cf63c32334d7d923fe0f44f1.zip | |
WIP services
| -rw-r--r-- | zenserver/compute/apply.cpp | 29 | ||||
| -rw-r--r-- | zenserver/compute/apply.h | 3 | ||||
| -rw-r--r-- | zenserver/sos/sos.cpp | 25 | ||||
| -rw-r--r-- | zenserver/sos/sos.h | 21 | ||||
| -rw-r--r-- | zenserver/zenserver.vcxproj | 2 | ||||
| -rw-r--r-- | zenserver/zenserver.vcxproj.filters | 2 |
6 files changed, 77 insertions, 5 deletions
diff --git a/zenserver/compute/apply.cpp b/zenserver/compute/apply.cpp index 59617bc9a..02a714cf0 100644 --- a/zenserver/compute/apply.cpp +++ b/zenserver/compute/apply.cpp @@ -316,12 +316,33 @@ SandboxedFunctionJob::SpawnJob(std::filesystem::path ExePath) return true; } -HttpFunctionService::HttpFunctionService(CasStore& Store, const std::filesystem::path& SandboxBaseDir) -: m_Log("exec", begin(spdlog::default_logger()->sinks()), end(spdlog::default_logger()->sinks())) +HttpFunctionService::HttpFunctionService(CasStore& Store, const std::filesystem::path& BaseDir) +: m_Log("apply", begin(spdlog::default_logger()->sinks()), end(spdlog::default_logger()->sinks())) , m_CasStore(Store) -, m_SandboxPath(SandboxBaseDir) +, m_SandboxPath(BaseDir / "scratch") +, m_FunctionPath(BaseDir / "func") { m_Router.AddPattern("job", "([[:digit:]]+)"); + m_Router.AddPattern("function", "([[:xdigit:]]{40})"); + + m_Router.RegisterRoute( + "functions/{function}", + [this](HttpRouterRequest& Req) { + HttpServerRequest& HttpReq = Req.ServerRequest(); + + switch (HttpReq.RequestVerb()) + { + case HttpVerb::kGet: + break; + + case HttpVerb::kPost: + { + CbObject FunctionSpec = HttpReq.ReadPayloadObject(); + } + break; + } + }, + HttpVerb::kGet | HttpVerb::kPost); m_Router.RegisterRoute( "jobs/{job}", @@ -507,7 +528,7 @@ HttpFunctionService::~HttpFunctionService() const char* HttpFunctionService::BaseUri() const { - return "/func/"; + return "/apply/"; } void diff --git a/zenserver/compute/apply.h b/zenserver/compute/apply.h index 1e53997f1..e079317ec 100644 --- a/zenserver/compute/apply.h +++ b/zenserver/compute/apply.h @@ -12,7 +12,7 @@ namespace zen { class CasStore; /** - * Process launcher for test executables + * Lambda style compute function service */ class HttpFunctionService : public HttpService { @@ -28,6 +28,7 @@ private: HttpRequestRouter m_Router; CasStore& m_CasStore; std::filesystem::path m_SandboxPath; + std::filesystem::path m_FunctionPath; std::atomic<int> m_SandboxCount{0}; std::filesystem::path CreateNewSandbox(); diff --git a/zenserver/sos/sos.cpp b/zenserver/sos/sos.cpp new file mode 100644 index 000000000..3df56abec --- /dev/null +++ b/zenserver/sos/sos.cpp @@ -0,0 +1,25 @@ +#include "sos.h" + +HttpCommonStructuredObjectStore::HttpCommonStructuredObjectStore() +: m_Log("sos", begin(spdlog::default_logger()->sinks()), end(spdlog::default_logger()->sinks())) +{ + m_Router.AddPattern("ns", "([[:alnum:]_-.]+)"); + m_Router.AddPattern("bucket", "([[:alnum:]_-.]+)"); + m_Router.AddPattern("hash", "([[:xdigit:]]{40})"); +} + +HttpCommonStructuredObjectStore::~HttpCommonStructuredObjectStore() +{ +} + +const char* +HttpCommonStructuredObjectStore::BaseUri() const +{ + return "/sos/"; +} + +void +HttpCommonStructuredObjectStore::HandleRequest(zen::HttpServerRequest& HttpServiceRequest) +{ + ZEN_UNUSED(HttpServiceRequest); +} diff --git a/zenserver/sos/sos.h b/zenserver/sos/sos.h new file mode 100644 index 000000000..f3e77e73e --- /dev/null +++ b/zenserver/sos/sos.h @@ -0,0 +1,21 @@ +// Copyright Epic Games, Inc. All Rights Reserved. + +#pragma once + +#include <zencore/httpserver.h> + +#include <spdlog/spdlog.h> + +class HttpCommonStructuredObjectStore : public zen::HttpService +{ +public: + HttpCommonStructuredObjectStore(); + virtual ~HttpCommonStructuredObjectStore(); + + virtual const char* BaseUri() const override; + virtual void HandleRequest(zen::HttpServerRequest& HttpServiceRequest) override; + +private: + spdlog::logger m_Log; + zen::HttpRequestRouter m_Router; +}; diff --git a/zenserver/zenserver.vcxproj b/zenserver/zenserver.vcxproj index 1dbe074bf..89784300b 100644 --- a/zenserver/zenserver.vcxproj +++ b/zenserver/zenserver.vcxproj @@ -110,6 +110,7 @@ <ClInclude Include="config.h" /> <ClInclude Include="diag\crashreport.h" /> <ClInclude Include="diag\logging.h" /> + <ClInclude Include="sos\sos.h" /> <ClInclude Include="upstream\jupiter.h" /> <ClInclude Include="projectstore.h" /> <ClInclude Include="cache\cacheagent.h" /> @@ -133,6 +134,7 @@ <ClCompile Include="diag\logging.cpp" /> <ClCompile Include="projectstore.cpp" /> <ClCompile Include="cache\cacheagent.cpp" /> + <ClCompile Include="sos\sos.cpp" /> <ClCompile Include="upstream\jupiter.cpp" /> <ClCompile Include="testing\launch.cpp" /> <ClCompile Include="cache\cachestore.cpp" /> diff --git a/zenserver/zenserver.vcxproj.filters b/zenserver/zenserver.vcxproj.filters index 7df7b274e..95cba466f 100644 --- a/zenserver/zenserver.vcxproj.filters +++ b/zenserver/zenserver.vcxproj.filters @@ -38,6 +38,7 @@ <ClInclude Include="diag\crashreport.h" /> <ClInclude Include="cache\structuredcachestore.h" /> <ClInclude Include="compute\apply.h" /> + <ClInclude Include="sos\sos.h" /> </ItemGroup> <ItemGroup> <ClCompile Include="zenserver.cpp" /> @@ -71,6 +72,7 @@ <ClCompile Include="diag\crashreport.cpp" /> <ClCompile Include="cache\structuredcachestore.cpp" /> <ClCompile Include="compute\apply.cpp" /> + <ClCompile Include="sos\sos.cpp" /> </ItemGroup> <ItemGroup> <Filter Include="cache"> |