EM_Task/UnrealEd/Private/Cooker/IWorkerRequests.h

51 lines
2.5 KiB
C
Raw Normal View History

2026-02-13 16:18:33 +08:00
// 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