diff options
| author | Dan Engelbrecht <[email protected]> | 2022-10-13 10:40:26 +0200 |
|---|---|---|
| committer | GitHub <[email protected]> | 2022-10-13 01:40:26 -0700 |
| commit | 0c7fbe43ed582cd791191d6c0935cd8693e1208e (patch) | |
| tree | 77757d193734f8927d474c5a072ffe4af8579513 /zenutil | |
| parent | disable project store GC (#179) (diff) | |
| download | zen-0c7fbe43ed582cd791191d6c0935cd8693e1208e.tar.xz zen-0c7fbe43ed582cd791191d6c0935cd8693e1208e.zip | |
Add "Accept" field in RPC request to gracefully handle requests from older instances (#180)
Diffstat (limited to 'zenutil')
| -rw-r--r-- | zenutil/cache/cacherequests.cpp | 27 | ||||
| -rw-r--r-- | zenutil/include/zenutil/cache/cacherequests.h | 5 |
2 files changed, 32 insertions, 0 deletions
diff --git a/zenutil/cache/cacherequests.cpp b/zenutil/cache/cacherequests.cpp index 2c14ef35b..0ac6c35ed 100644 --- a/zenutil/cache/cacherequests.cpp +++ b/zenutil/cache/cacherequests.cpp @@ -175,6 +175,7 @@ namespace cacherequests { { CbObjectView BatchObject = Package.GetObject(); ZEN_ASSERT(BatchObject["Method"].AsString() == "PutCacheRecords"); + AcceptMagic = BatchObject["AcceptType"].AsUInt32(0); CbObjectView Params = BatchObject["Params"].AsObjectView(); std::optional<std::string> RequestNamespace = GetRequestNamespace(Params); @@ -240,6 +241,11 @@ namespace cacherequests { CbObjectWriter Writer; Writer << "Method" << "PutCacheRecords"; + if (AcceptMagic != 0) + { + Writer << "Accept" << AcceptMagic; + } + Writer.BeginObject("Params"); { Writer << "DefaultPolicy" << WriteToString<128>(DefaultPolicy); @@ -325,6 +331,7 @@ namespace cacherequests { bool GetCacheRecordsRequest::Parse(const CbObjectView& RpcRequest) { ZEN_ASSERT(RpcRequest["Method"].AsString() == "GetCacheRecords"); + AcceptMagic = RpcRequest["AcceptType"].AsUInt32(0); CbObjectView Params = RpcRequest["Params"].AsObjectView(); std::optional<std::string> RequestNamespace = GetRequestNamespace(Params); @@ -361,6 +368,11 @@ namespace cacherequests { { Writer << "Method" << "GetCacheRecords"; + if (AcceptMagic != 0) + { + Writer << "Accept" << AcceptMagic; + } + Writer.BeginObject("Params"); { Writer << "DefaultPolicy" << WriteToString<128>(DefaultPolicy); @@ -513,6 +525,7 @@ namespace cacherequests { { CbObjectView BatchObject = Package.GetObject(); ZEN_ASSERT(BatchObject["Method"].AsString() == "PutCacheValues"); + AcceptMagic = BatchObject["AcceptType"].AsUInt32(0); CbObjectView Params = BatchObject["Params"].AsObjectView(); std::optional<std::string> RequestNamespace = cacherequests::GetRequestNamespace(Params); @@ -558,6 +571,10 @@ namespace cacherequests { CbObjectWriter Writer; Writer << "Method" << "PutCacheValues"; + if (AcceptMagic != 0) + { + Writer << "Accept" << AcceptMagic; + } Writer.BeginObject("Params"); { @@ -637,6 +654,7 @@ namespace cacherequests { bool GetCacheValuesRequest::Parse(const CbObjectView& BatchObject) { ZEN_ASSERT(BatchObject["Method"].AsString() == "GetCacheValues"); + AcceptMagic = BatchObject["AcceptType"].AsUInt32(0); CbObjectView Params = BatchObject["Params"].AsObjectView(); std::optional<std::string> RequestNamespace = cacherequests::GetRequestNamespace(Params); @@ -672,6 +690,10 @@ namespace cacherequests { CbObjectWriter Writer; Writer << "Method" << "GetCacheValues"; + if (AcceptMagic != 0) + { + Writer << "Accept" << AcceptMagic; + } Writer.BeginObject("Params"); { @@ -793,6 +815,7 @@ namespace cacherequests { bool GetCacheChunksRequest::Parse(const CbObjectView& BatchObject) { ZEN_ASSERT(BatchObject["Method"].AsString() == "GetCacheChunks"); + AcceptMagic = BatchObject["AcceptType"].AsUInt32(0); CbObjectView Params = BatchObject["Params"].AsObjectView(); std::optional<std::string> RequestNamespace = cacherequests::GetRequestNamespace(Params); @@ -833,6 +856,10 @@ namespace cacherequests { CbObjectWriter Writer; Writer << "Method" << "GetCacheChunks"; + if (AcceptMagic != 0) + { + Writer << "Accept" << AcceptMagic; + } Writer.BeginObject("Params"); { diff --git a/zenutil/include/zenutil/cache/cacherequests.h b/zenutil/include/zenutil/cache/cacherequests.h index ffb0f8d5f..4eebd3121 100644 --- a/zenutil/include/zenutil/cache/cacherequests.h +++ b/zenutil/include/zenutil/cache/cacherequests.h @@ -74,6 +74,7 @@ namespace cacherequests { struct PutCacheRecordsRequest { + uint32_t AcceptMagic = 0; CachePolicy DefaultPolicy = CachePolicy::Default; std::string Namespace; std::vector<PutCacheRecordRequest> Requests; @@ -105,6 +106,7 @@ namespace cacherequests { struct GetCacheRecordsRequest { + uint32_t AcceptMagic = 0; CachePolicy DefaultPolicy = CachePolicy::Default; std::string Namespace; std::vector<GetCacheRecordRequest> Requests; @@ -150,6 +152,7 @@ namespace cacherequests { struct PutCacheValuesRequest { + uint32_t AcceptMagic = 0; CachePolicy DefaultPolicy = CachePolicy::Default; std::string Namespace; std::vector<PutCacheValueRequest> Requests; @@ -177,6 +180,7 @@ namespace cacherequests { struct GetCacheValuesRequest { + uint32_t AcceptMagic = 0; CachePolicy DefaultPolicy = CachePolicy::Default; std::string Namespace; std::vector<GetCacheValueRequest> Requests; @@ -217,6 +221,7 @@ namespace cacherequests { struct GetCacheChunksRequest { + uint32_t AcceptMagic = 0; CachePolicy DefaultPolicy = CachePolicy::Default; std::string Namespace; std::vector<GetCacheChunkRequest> Requests; |