You've already forked UnrealEngineUWP
mirror of
https://github.com/izzy2lost/UnrealEngineUWP.git
synced 2026-03-26 18:15:20 -07:00
66 lines
2.0 KiB
C++
66 lines
2.0 KiB
C++
// Copyright 1998-2015 Epic Games, Inc. All Rights Reserved.
|
|
|
|
#pragma once
|
|
#include "RuntimeAssetCacheInterface.h"
|
|
|
|
DECLARE_FLOAT_ACCUMULATOR_STAT_EXTERN(TEXT("RAC ASync Wait Time"), STAT_RAC_ASyncWaitTime, STATGROUP_RAC, );
|
|
|
|
/** Forward declarations. */
|
|
class FRuntimeAssetCacheBuilderInterface;
|
|
class IRuntimeAssetCacheBackend;
|
|
class FRuntimeAssetCacheAsyncWorker;
|
|
class FCacheEntryMetadata;
|
|
class FRuntimeAssetCacheBucket;
|
|
|
|
/**
|
|
* Concrete class implementing FRuntimeAssetCacheInterface.
|
|
*/
|
|
class FRuntimeAssetCache : public FRuntimeAssetCacheInterface
|
|
{
|
|
/** FRuntimeAssetCacheInterface implementation */
|
|
public:
|
|
virtual bool GetSynchronous(FRuntimeAssetCacheBuilderInterface* CacheBuilder, TArray<uint8>& OutData) override;
|
|
virtual uint32 GetAsynchronous(FRuntimeAssetCacheBuilderInterface* CacheBuilder) override;
|
|
virtual int32 GetCacheSize(FName Bucket) const override;
|
|
virtual bool ClearCache() override;
|
|
virtual bool ClearCache(FName Bucket) override;
|
|
virtual void WaitAsynchronousCompletion(uint32 Handle) override;
|
|
virtual bool GetAsynchronousResults(uint32 Handle, TArray<uint8>& OutData) override;
|
|
virtual bool PollAsynchronousCompletion(uint32 Handle) override;
|
|
virtual void AddToAsyncCompletionCounter(int32 Addend) override;
|
|
/** End of FRuntimeAssetCacheInterface implementation */
|
|
|
|
public:
|
|
/** Constructor */
|
|
FRuntimeAssetCache();
|
|
|
|
/** Destructor */
|
|
~FRuntimeAssetCache();
|
|
|
|
private:
|
|
|
|
/**
|
|
* Generates next handle of async worker.
|
|
* @return Worker handle.
|
|
*/
|
|
int32 GetNextHandle()
|
|
{
|
|
return CurrentAsyncTaskHandle.Increment();
|
|
}
|
|
|
|
/** Map of bucket names to their configs. */
|
|
TMap<FName, FRuntimeAssetCacheBucket*> Buckets;
|
|
|
|
/** Map of handle to pending task */
|
|
TMap<uint32, FAsyncTask<FRuntimeAssetCacheAsyncWorker>*> PendingTasks;
|
|
|
|
/** Pending tasks synchronization object. */
|
|
FCriticalSection SynchronizationObject;
|
|
|
|
/** Counter used to generate worker handles. */
|
|
FThreadSafeCounter CurrentAsyncTaskHandle;
|
|
|
|
/** Number of pending tasks. */
|
|
FThreadSafeCounter PendingTasksCounter;
|
|
};
|