// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "Containers/Array.h" #include "Containers/Map.h" #include "Containers/UnrealString.h" #include "CookOnTheSide/CookOnTheFlyServer.h" #include "CookRequests.h" #include "Cooker/CookTypes.h" #include "Cooker/CookPackageData.h" #include "HAL/Platform.h" #include "IWorkerRequests.h" class FConfigFile; class ITargetPlatform; namespace UE { namespace Cook { struct FPackageData; /** An IWorkerRequests for SingleProcess cooks: functions are passed through to the CookOnTheFlyServer. */ class FWorkerRequestsLocal: public IWorkerRequests { public: FWorkerRequestsLocal(UCookOnTheFlyServer& InCOTFS); virtual ECookMode::Type GetDirectorCookMode() override; virtual ~FWorkerRequestsLocal() override; virtual void OnRemoveSessionPlatform(const ITargetPlatform* TargetPlatform) override; virtual bool DequeueCallbacks(TArray& OutCallbacks) override; virtual bool HasRequests() override; virtual void AddCallback(FSchedulerCallback&& Callback) override; virtual void EnqueueUnique(FFilePlatformRequest&& FileRequest, bool bForceFrontOfQueue = false) override; virtual void DequeueAll(TArray& OutCallbacks, TArray& OutCookRequests) override; virtual EExternalRequestType DequeueRequest(TArray& OutCallbacks, FFilePlatformRequest& OutToBuild) override; virtual int32 GetNumRequests() const override; virtual void RemapTargetPlatforms(const TMap& Remap) override; virtual bool AddToWaitAssign(FPackageData& PackageData, EPackageState TargetState) override; virtual bool AssignRequests() override; virtual bool DecideNextCookAction(FTickStackData& StackData, UCookOnTheFlyServer::ECookAction& CookAction); private: FExternalRequests ExternalRequests; FPackageDataQueue WaitAssignQueue; }; } // namespace Cook } // namespace UE