Files
UnrealEngineUWP/Engine/Source/Runtime/StorageServerClient/Private/CookOnTheFlyPackageStore.h
CarlMagnus Nordin 0282a5aef6 Unified Zen and legacy COTF network protocols.
*Reduces code duplication
*Enables the same ODSC flow to be used for both COTF variants
*The client will now autodetect if it should run in Zen mode or not
#rb pj.kack,per.larsson
#preflight 628c79bdf057b981ca479b3e

[CL 20344832 by CarlMagnus Nordin in ue5-main branch]
2022-05-24 02:50:39 -04:00

70 lines
1.8 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "CoreMinimal.h"
#if WITH_COTF
#include "IO/PackageStore.h"
#include "CookOnTheFly.h"
class FCookOnTheFlyPackageStore final
: public FPackageStoreBase
{
public:
struct FEntryInfo
{
EPackageStoreEntryStatus Status = EPackageStoreEntryStatus::None;
int32 EntryIndex = INDEX_NONE;
};
struct FPackageStats
{
TAtomic<uint32> Cooked{ 0 };
TAtomic<uint32> Failed{ 0 };
};
FCookOnTheFlyPackageStore(UE::Cook::ICookOnTheFlyServerConnection& InCookOnTheFlyServerConnection);
virtual void Initialize() override
{
}
virtual void Lock() override
{
}
virtual void Unlock() override
{
}
virtual bool DoesPackageExist(FPackageId PackageId) override;
virtual EPackageStoreEntryStatus GetPackageStoreEntry(FPackageId PackageId, FPackageStoreEntry& OutPackageStoreEntry) override;
virtual bool GetPackageRedirectInfo(FPackageId PackageId, FName& OutSourcePackageName, FPackageId& OutRedirectedToPackageId) override
{
return false;
}
private:
EPackageStoreEntryStatus CreatePackageStoreEntry(const FEntryInfo& EntryInfo, FPackageStoreEntry& OutPackageStoreEntry);
void AddPackages(TArray<FPackageStoreEntryResource> Entries, TArray<FPackageId> FailedPackageIds);
void OnCookOnTheFlyMessage(const UE::Cook::FCookOnTheFlyMessage& Message);
void CheckActivity();
UE::Cook::ICookOnTheFlyServerConnection& CookOnTheFlyServerConnection;
FCriticalSection CriticalSection;
TMap<FPackageId, FEntryInfo> PackageIdToEntryInfo;
TChunkedArray<FPackageStoreEntryResource> PackageEntries;
FPackageStats PackageStats;
const double MaxInactivityTime = 20;
const double TimeBetweenWarning = 10;
double LastClientActivtyTime = 0;
double LastServerActivtyTime = 0;
double LastWarningTime = 0;
};
#endif // WITH_COTF