51 lines
2.5 KiB
C
51 lines
2.5 KiB
C
|
|
// Copyright Epic Games, Inc. All Rights Reserved.
|
||
|
|
|
||
|
|
#pragma once
|
||
|
|
|
||
|
|
#include "Containers/UnrealString.h"
|
||
|
|
#include "CookOnTheSide/CookOnTheFlyServer.h"
|
||
|
|
#include "CookRequests.h"
|
||
|
|
#include "CookTypes.h"
|
||
|
|
|
||
|
|
class FConfigFile;
|
||
|
|
|
||
|
|
namespace UE
|
||
|
|
{
|
||
|
|
namespace Cook
|
||
|
|
{
|
||
|
|
struct FPackageData;
|
||
|
|
struct FGenerationHelper;
|
||
|
|
struct FTickStackData;
|
||
|
|
/**
|
||
|
|
* Interface for Requests sent to this processes' Cooker, and for information it needs to send back to its Director.
|
||
|
|
* In SingleProcess cooks the functions are passed through to the local CookOnTheFlyServer.
|
||
|
|
* In MultiProcess cooks the functions are implemented as interprocess messages to/from the CookDirector.
|
||
|
|
**/
|
||
|
|
class IWorkerRequests
|
||
|
|
{
|
||
|
|
public:
|
||
|
|
virtual ECookMode::Type GetDirectorCookMode() = 0;
|
||
|
|
IWorkerRequests(UCookOnTheFlyServer& InCOTFS): COTFS(InCOTFS) {};
|
||
|
|
virtual ~IWorkerRequests() {};
|
||
|
|
|
||
|
|
virtual void OnRemoveSessionPlatform(const ITargetPlatform* TargetPlatform) = 0;
|
||
|
|
virtual bool DequeueCallbacks(TArray<FSchedulerCallback>& OutCallbacks) = 0;
|
||
|
|
virtual bool HasRequests() = 0;
|
||
|
|
virtual void AddCallback(FSchedulerCallback&& Callback) = 0;
|
||
|
|
virtual void EnqueueUnique(FFilePlatformRequest&& FileRequest, bool bForceFrontOfQueue = false) = 0;
|
||
|
|
virtual void DequeueAll(TArray<FSchedulerCallback>& OutCallbacks, TArray<FFilePlatformRequest>& OutCookRequests) = 0;
|
||
|
|
virtual EExternalRequestType DequeueRequest(TArray<FSchedulerCallback>& OutCallbacks, FFilePlatformRequest& OutToBuild) = 0;
|
||
|
|
virtual int32 GetNumRequests() const = 0;
|
||
|
|
virtual void RemapTargetPlatforms(const TMap<ITargetPlatform*, ITargetPlatform*>& Remap) = 0;
|
||
|
|
|
||
|
|
virtual bool AssignRequests() = 0;
|
||
|
|
virtual bool DecideNextCookAction(FTickStackData& StackData, UCookOnTheFlyServer::ECookAction& CookAction) = 0;
|
||
|
|
virtual bool AddToWaitAssign(FPackageData& PackageData, EPackageState TargetState) = 0;
|
||
|
|
|
||
|
|
protected:
|
||
|
|
friend class FCookDirector;
|
||
|
|
uint32 DesiredWaitAssignQueueLength = 64;
|
||
|
|
UCookOnTheFlyServer& COTFS;
|
||
|
|
};
|
||
|
|
} // namespace Cook
|
||
|
|
} // namespace UE
|