diff options
| author | Stefan Boberg <[email protected]> | 2021-09-30 10:39:39 +0200 |
|---|---|---|
| committer | Stefan Boberg <[email protected]> | 2021-09-30 10:39:39 +0200 |
| commit | 741fa349b8d860730d02a363fb6e5ff8f6f3fc82 (patch) | |
| tree | 02c79ffdbe4b6c5bc5bfb3932191a97b44579a09 /zenserver/cache/structuredcache.cpp | |
| parent | memory: Added experimental mimalloc path to AlignedAllocImpl/AlignedFreeImpl (diff) | |
| download | zen-741fa349b8d860730d02a363fb6e5ff8f6f3fc82.tar.xz zen-741fa349b8d860730d02a363fb6e5ff8f6f3fc82.zip | |
structured cache: Added stats test code (needs additional work / metrics)
Diffstat (limited to 'zenserver/cache/structuredcache.cpp')
| -rw-r--r-- | zenserver/cache/structuredcache.cpp | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/zenserver/cache/structuredcache.cpp b/zenserver/cache/structuredcache.cpp index 74cee6614..eee3f8279 100644 --- a/zenserver/cache/structuredcache.cpp +++ b/zenserver/cache/structuredcache.cpp @@ -6,6 +6,7 @@ #include <zencore/compress.h> #include <zencore/fmtutils.h> #include <zencore/logging.h> +#include <zencore/scopeguard.h> #include <zencore/stream.h> #include <zencore/timer.h> #include <zenhttp/httpserver.h> @@ -193,10 +194,18 @@ HttpStructuredCacheService::HandleRequest(HttpServerRequest& Request) { CacheRef Ref; + Stopwatch Timer; + auto _ = MakeGuard([&] { m_HttpRequests.Update(Timer.GetElapsedTicks()); }); + if (!ValidateKeyUri(Request, /* out */ Ref)) { std::string_view Key = Request.RelativeUri(); + if (Key.empty()) + { + return HandleStatusRequest(Request); + } + if (std::all_of(begin(Key), end(Key), [](const char c) { return std::isalnum(c); })) { // Bucket reference @@ -829,4 +838,14 @@ HttpStructuredCacheService::ValidateKeyUri(HttpServerRequest& Request, CacheRef& return true; } + +void +HttpStructuredCacheService::HandleStatusRequest(zen::HttpServerRequest& Request) +{ + CbObjectWriter Cbo; + Cbo << "ok" << true << "http_requests" << m_HttpRequests.Count(); + + Request.WriteResponse(HttpResponseCode::OK, Cbo.Save()); +} + } // namespace zen |