aboutsummaryrefslogtreecommitdiff
path: root/zenserver/cache/structuredcache.cpp
diff options
context:
space:
mode:
authorMatt Peters <[email protected]>2022-01-07 07:11:45 -0700
committerMatt Peters <[email protected]>2022-01-07 07:11:45 -0700
commit6bffc131a4514629dd2192882ecd1a3c763cf2fb (patch)
tree93294018cbe3708ad62eace0c0dbce7137dbd191 /zenserver/cache/structuredcache.cpp
parentImplemented IsProcessRunning() on a Macintosh (diff)
downloadzen-6bffc131a4514629dd2192882ecd1a3c763cf2fb.tar.xz
zen-6bffc131a4514629dd2192882ecd1a3c763cf2fb.zip
Add WaitForQuiescence RPC
Diffstat (limited to 'zenserver/cache/structuredcache.cpp')
-rw-r--r--zenserver/cache/structuredcache.cpp27
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;