aboutsummaryrefslogtreecommitdiff
path: root/zenserver/cache/structuredcache.cpp
diff options
context:
space:
mode:
authorDan Engelbrecht <[email protected]>2022-09-29 09:25:29 +0200
committerGitHub <[email protected]>2022-09-29 00:25:29 -0700
commitf87631dd0d283ad04eb3873c1a7510a9d1423792 (patch)
treefb6da8ce9b1e55beff73c82d8943dc0303c7ae05 /zenserver/cache/structuredcache.cpp
parentDe/more upstream details (#168) (diff)
downloadzen-f87631dd0d283ad04eb3873c1a7510a9d1423792.tar.xz
zen-f87631dd0d283ad04eb3873c1a7510a9d1423792.zip
Format all rpc package responses using `FormatPackageMessageBuffer` to avoid memory copy (#174)
When reading upstream, fall back to old rpc response to handle older instances.
Diffstat (limited to 'zenserver/cache/structuredcache.cpp')
-rw-r--r--zenserver/cache/structuredcache.cpp36
1 files changed, 10 insertions, 26 deletions
diff --git a/zenserver/cache/structuredcache.cpp b/zenserver/cache/structuredcache.cpp
index cd679d186..75fb8ac41 100644
--- a/zenserver/cache/structuredcache.cpp
+++ b/zenserver/cache/structuredcache.cpp
@@ -1211,12 +1211,9 @@ HttpStructuredCacheService::HandleRpcPutCacheRecords(zen::HttpServerRequest& Req
CbPackage RpcResponse;
RpcResponse.SetObject(ResponseObject.Save());
- BinaryWriter MemStream;
- RpcResponse.Save(MemStream);
+ CompositeBuffer RpcResponseBuffer = FormatPackageMessageBuffer(RpcResponse);
- Request.WriteResponse(HttpResponseCode::OK,
- HttpContentType::kCbPackage,
- IoBuffer(IoBuffer::Wrap, MemStream.GetData(), MemStream.GetSize()));
+ Request.WriteResponse(HttpResponseCode::OK, HttpContentType::kCbPackage, RpcResponseBuffer);
}
HttpStructuredCacheService::PutResult
@@ -1635,12 +1632,9 @@ HttpStructuredCacheService::HandleRpcGetCacheRecords(zen::HttpServerRequest& Htt
ResponseObject.EndArray();
ResponsePackage.SetObject(ResponseObject.Save());
- BinaryWriter MemStream;
- ResponsePackage.Save(MemStream);
+ CompositeBuffer RpcResponseBuffer = FormatPackageMessageBuffer(ResponsePackage);
- HttpRequest.WriteResponse(HttpResponseCode::OK,
- HttpContentType::kCbPackage,
- IoBuffer(IoBuffer::Wrap, MemStream.GetData(), MemStream.GetSize()));
+ HttpRequest.WriteResponse(HttpResponseCode::OK, HttpContentType::kCbPackage, RpcResponseBuffer);
}
void
@@ -1748,12 +1742,9 @@ HttpStructuredCacheService::HandleRpcPutCacheValues(zen::HttpServerRequest& Requ
CbPackage RpcResponse;
RpcResponse.SetObject(ResponseObject.Save());
- BinaryWriter MemStream;
- RpcResponse.Save(MemStream);
+ CompositeBuffer RpcResponseBuffer = FormatPackageMessageBuffer(RpcResponse);
- Request.WriteResponse(HttpResponseCode::OK,
- HttpContentType::kCbPackage,
- IoBuffer(IoBuffer::Wrap, MemStream.GetData(), MemStream.GetSize()));
+ Request.WriteResponse(HttpResponseCode::OK, HttpContentType::kCbPackage, RpcResponseBuffer);
}
void
@@ -1943,13 +1934,9 @@ HttpStructuredCacheService::HandleRpcGetCacheValues(zen::HttpServerRequest& Http
ResponseObject.EndArray();
RpcResponse.SetObject(ResponseObject.Save());
+ CompositeBuffer RpcResponseBuffer = FormatPackageMessageBuffer(RpcResponse);
- BinaryWriter MemStream;
- RpcResponse.Save(MemStream);
-
- HttpRequest.WriteResponse(HttpResponseCode::OK,
- HttpContentType::kCbPackage,
- IoBuffer(IoBuffer::Wrap, MemStream.GetData(), MemStream.GetSize()));
+ HttpRequest.WriteResponse(HttpResponseCode::OK, HttpContentType::kCbPackage, RpcResponseBuffer);
}
namespace cache::detail {
@@ -2451,12 +2438,9 @@ HttpStructuredCacheService::WriteGetCacheChunksResponse(std::string_view
RpcResponse.SetObject(Writer.Save());
- BinaryWriter MemStream;
- RpcResponse.Save(MemStream);
+ CompositeBuffer RpcResponseBuffer = FormatPackageMessageBuffer(RpcResponse);
- HttpRequest.WriteResponse(HttpResponseCode::OK,
- HttpContentType::kCbPackage,
- IoBuffer(IoBuffer::Wrap, MemStream.GetData(), MemStream.GetSize()));
+ HttpRequest.WriteResponse(HttpResponseCode::OK, HttpContentType::kCbPackage, RpcResponseBuffer);
}
void