diff options
| author | Per Larsson <[email protected]> | 2022-02-02 19:08:10 +0100 |
|---|---|---|
| committer | Per Larsson <[email protected]> | 2022-02-02 19:08:10 +0100 |
| commit | 10ab6d8c768b54dfcd085ec94aa959dc9d1103ce (patch) | |
| tree | c48a96d8a1ea8d4267906af76e72e1e95f70fc78 /zenserver/upstream/upstreamcache.h | |
| parent | Changed OIDC token endpoint. (diff) | |
| parent | Merge branch 'main' of https://github.com/EpicGames/zen (diff) | |
| download | zen-10ab6d8c768b54dfcd085ec94aa959dc9d1103ce.tar.xz zen-10ab6d8c768b54dfcd085ec94aa959dc9d1103ce.zip | |
Merged main.
Diffstat (limited to 'zenserver/upstream/upstreamcache.h')
| -rw-r--r-- | zenserver/upstream/upstreamcache.h | 56 |
1 files changed, 24 insertions, 32 deletions
diff --git a/zenserver/upstream/upstreamcache.h b/zenserver/upstream/upstreamcache.h index 48601c879..4ccc56f79 100644 --- a/zenserver/upstream/upstreamcache.h +++ b/zenserver/upstream/upstreamcache.h @@ -2,6 +2,8 @@ #pragma once +#include <zencore/compactbinary.h> +#include <zencore/compress.h> #include <zencore/iobuffer.h> #include <zencore/iohash.h> #include <zencore/stats.h> @@ -12,9 +14,11 @@ #include <chrono> #include <functional> #include <memory> +#include <vector> namespace zen { +class CbObjectView; class AuthMgr; class CbObjectView; class CbPackage; @@ -67,8 +71,7 @@ struct PutUpstreamCacheResult struct CacheRecordGetCompleteParams { - const CacheKey& Key; - size_t KeyIndex = ~size_t(0); + CacheKeyRequest& Request; const CbObjectView& Record; const CbPackage& Package; }; @@ -77,9 +80,10 @@ using OnCacheRecordGetComplete = std::function<void(CacheRecordGetCompleteParams struct CacheValueGetCompleteParams { - const CacheChunkRequest& Request; - size_t RequestIndex{~size_t(0)}; - IoBuffer Value; + CacheChunkRequest& Request; + IoHash RawHash; + uint64_t RawSize; + IoBuffer Value; }; using OnCacheValueGetComplete = std::function<void(CacheValueGetCompleteParams&&)>; @@ -145,33 +149,26 @@ struct UpstreamEndpointInfo }; /** - * The upstream endpont is responsible for handling upload/downloading of cache records. + * The upstream endpoint is responsible for handling upload/downloading of cache records. */ class UpstreamEndpoint { public: virtual ~UpstreamEndpoint() = default; - virtual const UpstreamEndpointInfo& GetEndpointInfo() const = 0; - virtual UpstreamEndpointStatus Initialize() = 0; - virtual UpstreamEndpointState GetState() = 0; + virtual const UpstreamEndpointInfo& GetEndpointInfo() const = 0; + virtual UpstreamEndpointState GetState() = 0; virtual UpstreamEndpointStatus GetStatus() = 0; - virtual GetUpstreamCacheResult GetCacheRecord(CacheKey CacheKey, ZenContentType Type) = 0; - - virtual GetUpstreamCacheResult GetCacheRecords(std::span<CacheKey> CacheKeys, - std::span<size_t> KeyIndex, - const CacheRecordPolicy& Policy, - OnCacheRecordGetComplete&& OnComplete) = 0; + virtual GetUpstreamCacheResult GetCacheRecord(CacheKey CacheKey, ZenContentType Type) = 0; + virtual GetUpstreamCacheResult GetCacheRecords(std::span<CacheKeyRequest*> Requests, OnCacheRecordGetComplete&& OnComplete) = 0; virtual GetUpstreamCacheResult GetCacheValue(const CacheKey& CacheKey, const IoHash& PayloadId) = 0; - - virtual GetUpstreamCacheResult GetCacheValues(std::span<CacheChunkRequest> CacheChunkRequests, - std::span<size_t> RequestIndex, - OnCacheValueGetComplete&& OnComplete) = 0; + virtual GetUpstreamCacheResult GetCacheValues(std::span<CacheChunkRequest*> CacheChunkRequests, + OnCacheValueGetComplete&& OnComplete) = 0; virtual PutUpstreamCacheResult PutCacheRecord(const UpstreamCacheRecord& CacheRecord, IoBuffer RecordValue, @@ -190,22 +187,14 @@ public: virtual void Initialize() = 0; - virtual void RegisterEndpoint(std::unique_ptr<UpstreamEndpoint> Endpoint) = 0; - + virtual void RegisterEndpoint(std::unique_ptr<UpstreamEndpoint> Endpoint) = 0; virtual void IterateEndpoints(std::function<bool(UpstreamEndpoint&)>&& Fn) = 0; - virtual GetUpstreamCacheResult GetCacheRecord(CacheKey CacheKey, ZenContentType Type) = 0; - - virtual void GetCacheRecords(std::span<CacheKey> CacheKeys, - std::span<size_t> KeyIndex, - const CacheRecordPolicy& RecordPolicy, - OnCacheRecordGetComplete&& OnComplete) = 0; + virtual GetUpstreamCacheResult GetCacheRecord(CacheKey CacheKey, ZenContentType Type) = 0; + virtual void GetCacheRecords(std::span<CacheKeyRequest*> Requests, OnCacheRecordGetComplete&& OnComplete) = 0; - virtual GetUpstreamCacheResult GetCacheValue(const CacheKey& CacheKey, const IoHash& ValueContentId) = 0; - - virtual void GetCacheValues(std::span<CacheChunkRequest> CacheChunkRequests, - std::span<size_t> RequestIndex, - OnCacheValueGetComplete&& OnComplete) = 0; + virtual GetUpstreamCacheResult GetCacheValue(const CacheKey& CacheKey, const IoHash& ValueContentId) = 0; + virtual void GetCacheValues(std::span<CacheChunkRequest*> CacheChunkRequests, OnCacheValueGetComplete&& OnComplete) = 0; virtual void EnqueueUpstream(UpstreamCacheRecord CacheRecord) = 0; @@ -214,6 +203,9 @@ public: std::unique_ptr<UpstreamCache> MakeUpstreamCache(const UpstreamCacheOptions& Options, ZenCacheStore& CacheStore, CidStore& CidStore); +std::unique_ptr<UpstreamEndpoint> MakeJupiterUpstreamEndpoint(const CloudCacheClientOptions& Options); + +std::unique_ptr<UpstreamEndpoint> MakeJupiterUpstreamEndpoint(const CloudCacheClientOptions& Options); std::unique_ptr<UpstreamEndpoint> MakeJupiterUpstreamEndpoint(const CloudCacheClientOptions& Options, const UpstreamAuthConfig& AuthConfig, AuthMgr& Mgr); |