UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
CacheStrategyLinear.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "CacheStrategy.h"
6#include <atomic>
7
8#if !UE_BUILD_SHIPPING
9
10namespace StorageServer
11{
12 // Use cache storage as arena allocator and store all chunks as they come in. No eviction.
14 {
15 public:
16 FCacheStrategyLinear(TUniquePtr<ICacheJournal>&& InJournal, TUniquePtr<ICacheStorage>&& InStorage, const uint64 AbandonAtInvalidSize, const float FlushInterval, const bool bInvalidate);
17 virtual ~FCacheStrategyLinear() override;
18
19 void InvalidateAll();
20 virtual void Invalidate(const FIoChunkId& ChunkId) override
21 {
22 Invalidate(ChunkId, true);
23 }
24
25 virtual bool ReadChunk(const FIoChunkId& RequestChunkId, const uint64 RequestOffset, const uint64 RequestSize, TOptional<FIoBuffer> OptDestination, FIoBuffer& OutBuffer, EStorageServerContentType& ContentType) override;
26
27 virtual void CacheChunk(const FIoChunkId& RequestChunkId, const uint64 RequestOffset, const uint64 RequestSize, const FIoBuffer& Buffer, const EStorageServerContentType ContentType, const uint64 ResultModTag) override;
28
29 private:
30 // Linear cache is implemented as arena allocator
31 std::atomic<uint64> CurrentSize; // Current size of arena allocator
32 uint64 CurrentInvalidSize; // Amount of bytes with-in arena allocator that are stale
33 uint64 AbandonAtInvalidSize; // Consider cache to be a lost cause at this amount of stale data
34 FCriticalSection JournalLock;
35
36 void Invalidate(const FIoChunkId& ChunkId, bool bShouldLockJournal);
37 void SetCounters();
38 };
39}
40
41#endif
FPlatformTypes::uint64 uint64
A 64-bit unsigned integer.
Definition Platform.h:1117
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
UE::FPlatformRecursiveMutex FCriticalSection
Definition CriticalSection.h:53
EStorageServerContentType
Definition StorageServerHttpClient.h:13
Definition IoBuffer.h:15
Definition IoChunkId.h:64
Definition CacheStrategyLinear.h:14
virtual void Invalidate(const FIoChunkId &ChunkId) override
Definition CacheStrategyLinear.h:20
void InvalidateAll()
Definition CacheStrategyLinear.cpp:54
virtual void CacheChunk(const FIoChunkId &RequestChunkId, const uint64 RequestOffset, const uint64 RequestSize, const FIoBuffer &Buffer, const EStorageServerContentType ContentType, const uint64 ResultModTag) override
Definition CacheStrategyLinear.cpp:162
virtual bool ReadChunk(const FIoChunkId &RequestChunkId, const uint64 RequestOffset, const uint64 RequestSize, TOptional< FIoBuffer > OptDestination, FIoBuffer &OutBuffer, EStorageServerContentType &ContentType) override
Definition CacheStrategyLinear.cpp:102
virtual ~FCacheStrategyLinear() override
Definition CacheStrategyLinear.cpp:50
Definition CacheStrategy.h:15
Definition UniquePtr.h:107
Definition CacheJournal.h:15
Definition Optional.h:131