Files
UnrealEngineUWP/Engine/Source/Runtime/RuntimeAssetCache/Private/RuntimeAssetCacheBackend.cpp
Mikolaj Sieluzycki 8c51156535 Implementation of RuntimeAssetCache
#codereview Robert.Manuszewski

[CL 2582347 by Mikolaj Sieluzycki in Main branch]
2015-06-10 03:14:50 -04:00

59 lines
1.5 KiB
C++

// Copyright 1998-2015 Epic Games, Inc. All Rights Reserved.
#include "RuntimeAssetCachePrivatePCH.h"
#include "RuntimeAssetCacheBackend.h"
#include "RuntimeAssetCacheFilesystemBackend.h"
#include "RuntimeAssetCacheEntryMetadata.h"
FCacheEntryMetadata* FRuntimeAssetCacheBackend::GetCachedData(const FName Bucket, const TCHAR* CacheKey, TArray<uint8>& OutData)
{
FCacheEntryMetadata* Result = nullptr;
FArchive* Ar = CreateReadArchive(Bucket, CacheKey);
if (!Ar)
{
return Result;
}
Result = PreloadMetadata(Ar);
int64 TotalSize = Ar->TotalSize();
int64 CurrentPosition = Ar->Tell();
int64 NumberOfBytesToSerialize = TotalSize - CurrentPosition;
OutData.Reset();
OutData.AddUninitialized(NumberOfBytesToSerialize);
Ar->Serialize(OutData.GetData(), NumberOfBytesToSerialize);
Ar->Close();
delete Ar;
return Result;
}
bool FRuntimeAssetCacheBackend::PutCachedData(const FName Bucket, const TCHAR* CacheKey, TArray<uint8>& InData, FCacheEntryMetadata* Metadata)
{
bool bResult = false;
FArchive* Ar = CreateWriteArchive(Bucket, CacheKey);
if (!Ar)
{
return bResult;
}
*Ar << *Metadata;
Ar->Serialize(InData.GetData(), InData.Num());
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;
}