diff options
| author | Matt Peters <[email protected]> | 2022-01-07 07:11:45 -0700 |
|---|---|---|
| committer | Matt Peters <[email protected]> | 2022-01-07 07:11:45 -0700 |
| commit | 6bffc131a4514629dd2192882ecd1a3c763cf2fb (patch) | |
| tree | 93294018cbe3708ad62eace0c0dbce7137dbd191 /zenserver/cache/structuredcache.cpp | |
| parent | Implemented IsProcessRunning() on a Macintosh (diff) | |
| download | zen-6bffc131a4514629dd2192882ecd1a3c763cf2fb.tar.xz zen-6bffc131a4514629dd2192882ecd1a3c763cf2fb.zip | |
Add WaitForQuiescence RPC
Diffstat (limited to 'zenserver/cache/structuredcache.cpp')
| -rw-r--r-- | zenserver/cache/structuredcache.cpp | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/zenserver/cache/structuredcache.cpp b/zenserver/cache/structuredcache.cpp index 1d43d372b..8639ed1c8 100644 --- a/zenserver/cache/structuredcache.cpp +++ b/zenserver/cache/structuredcache.cpp @@ -795,6 +795,10 @@ HttpStructuredCacheService::HandleRpcRequest(zen::HttpServerRequest& Request) { HandleRpcGetCachePayloads(AsyncRequest, RpcRequest); } + else if (Method == "WaitForQuiescence"sv) + { + HandleRpcWaitForQuiescence(AsyncRequest, RpcRequest); + } else { AsyncRequest.WriteResponse(HttpResponseCode::BadRequest); @@ -1207,6 +1211,29 @@ HttpStructuredCacheService::HandleRpcGetCachePayloads(zen::HttpServerRequest& Re } void +HttpStructuredCacheService::HandleRpcWaitForQuiescence(zen::HttpServerRequest& Request, CbObjectView RpcRequest) +{ + ZEN_TRACE_CPU("Z$::RpcWaitForQuiescence"); + + ZEN_ASSERT(RpcRequest["Method"sv].AsString() == "WaitForQuiescence"sv); + + if (m_UpstreamCache) + { + m_UpstreamCache->WaitForIdle(); + } + + CbPackage RpcResponse; + CbObjectWriter ResponseObject; + RpcResponse.SetObject(ResponseObject.Save()); + BinaryWriter MemStream; + RpcResponse.Save(MemStream); + + Request.WriteResponse(HttpResponseCode::OK, + HttpContentType::kCbPackage, + IoBuffer(IoBuffer::Wrap, MemStream.GetData(), MemStream.GetSize())); +} + +void HttpStructuredCacheService::HandleStatsRequest(zen::HttpServerRequest& Request) { CbObjectWriter Cbo; |