#pragma once #include "IWorkerRequests.h" #include "Cooker/CookPackageData.h" namespace UE { namespace Cook { class FWorkerRequestsRemote: public IWorkerRequests { public: FWorkerRequestsRemote(UCookOnTheFlyServer& InCOTFS); ~FWorkerRequestsRemote() 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; ECookMode::Type GetDirectorCookMode() override; virtual bool AssignRequests() override; virtual bool DecideNextCookAction(FTickStackData& StackData, UCookOnTheFlyServer::ECookAction& CookAction); virtual bool AddToWaitAssign(FPackageData& PackageData, EPackageState TargetState) override; private: uint32 DesiredWaitAssignQueueLength; FCookWorkerClient& CookWorkerClient; FExternalRequests ExternalRequests; FPackageDataQueue WaitAssignQueue; TSet LoadedPackages; }; } // namespace Cook } // namespace UE