56 lines
1.4 KiB
C++
56 lines
1.4 KiB
C++
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
|
|
#include "RuntimeAssetCacheBackend.h"
|
|
#include "RuntimeAssetCacheFilesystemBackend.h"
|
|
#include "RuntimeAssetCacheEntryMetadata.h"
|
|
|
|
|
|
FCacheEntryMetadata* FRuntimeAssetCacheBackend::GetCachedData(const FName Bucket, const TCHAR* CacheKey, void*& OutData, int64& OutDataSize)
|
|
{
|
|
FCacheEntryMetadata* Result = nullptr;
|
|
FArchive* Ar = CreateReadArchive(Bucket, CacheKey);
|
|
if (!Ar)
|
|
{
|
|
return Result;
|
|
}
|
|
|
|
Result = PreloadMetadata(Ar);
|
|
|
|
int64 TotalSize = Ar->TotalSize();
|
|
int64 CurrentPosition = Ar->Tell();
|
|
OutDataSize = TotalSize - CurrentPosition;
|
|
OutData = new uint8[OutDataSize];
|
|
Ar->Serialize(OutData, OutDataSize);
|
|
Ar->Close();
|
|
delete Ar;
|
|
return Result;
|
|
}
|
|
|
|
bool FRuntimeAssetCacheBackend::PutCachedData(const FName Bucket, const TCHAR* CacheKey, void* InData, int64 InDataSize, FCacheEntryMetadata* Metadata)
|
|
{
|
|
bool bResult = false;
|
|
FArchive* Ar = CreateWriteArchive(Bucket, CacheKey);
|
|
if (!Ar)
|
|
{
|
|
return bResult;
|
|
}
|
|
|
|
*Ar << *Metadata;
|
|
Ar->Serialize(InData, InDataSize);
|
|
bResult = Ar->Close();
|
|
delete Ar;
|
|
return bResult;
|
|
}
|
|
|
|
FRuntimeAssetCacheBackend* FRuntimeAssetCacheBackend::CreateBackend()
|
|
{
|
|
return new FRuntimeAssetCacheFilesystemBackend();
|
|
}
|
|
|
|
FCacheEntryMetadata* FRuntimeAssetCacheBackend::PreloadMetadata(FArchive* Ar)
|
|
{
|
|
FCacheEntryMetadata* Result = new FCacheEntryMetadata();
|
|
*Ar << *Result;
|
|
return Result;
|
|
}
|