// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "CoreMinimal.h" #include "Logic/Validators/ValidatorBase.h" #include "Parameters/SubmitToolParameters.h" #include "Services/Interfaces/ISubmitToolService.h" class FChangelistService; class FTagService; class FPreflightService; class FSubmitToolPerforce; DECLARE_MULTICAST_DELEGATE_OneParam(FOnTaskFinished, bool /*bSuccess*/) DECLARE_MULTICAST_DELEGATE_OneParam(FOnSingleTaskFinished, const FValidatorBase& /*Validator*/) DECLARE_MULTICAST_DELEGATE_OneParam(FOnTaskRunStateChanged, bool /*bValid*/) class FTasksService : public ISubmitToolService { public: FTasksService(const TMap& Tasks, const FString& InTelemetryCustomEvent); virtual ~FTasksService(); virtual void InitializeTasks(const TArray>& InTasks); virtual bool QueueAll(); virtual void QueueSingle(const FName& InId, bool InbForceRun); virtual void QueueTypes(const FString& TaskType); virtual void QueueByArea(const ETaskArea& InArea); virtual void InvalidateForChanges(ETaskArea InChangeType); virtual void CheckForLocalFileEdit(); virtual void CheckForTagSkips(); virtual bool GetIsRunSuccessful(bool bWaitForOptionalCompletes = true) const; virtual bool GetIsAnyTaskRunning() const; virtual bool AreTasksPendingQueue() const; virtual const TArray>& GetTasks() const; virtual const TArray> GetTasksOfType(const FString& TaskType) const; virtual bool Tick(float InDeltaTime); virtual void ResetStates(); virtual const TArray GetAddendums() const; virtual void StopTasks(const FName& InValidatorId = FName(), bool InbAsFailed = false); virtual void StopTasksByArea(const ETaskArea& InArea); FOnTaskFinished OnTasksQueueFinished; FOnSingleTaskFinished OnSingleTaskFinished; FOnTaskRunStateChanged OnTasksRunResultUpdated; protected: virtual bool QueueForExecution(const TSharedPtr& InTask, bool InbForceRun) { TSet VisitedValidators; return QueueForExecution(InTask, InbForceRun, VisitedValidators); } virtual bool QueueForExecution(const TSharedPtr& InTask, bool InbForceRun, TSet&); virtual void OnTaskFinishedCallback(const FValidatorBase& InValidator); virtual void PrintErrorSummary(); virtual void InvalidateDependants(const TSharedPtr& InTask); TMap> Tasks; TArray> CachedTasksArray; TArray> CachedTasksWithGroups; bool bLastTasksRunState; bool bLastRunningTasks; const FString TelemetryBaseId; uint64_t Execution = 1; FTSTicker::FDelegateHandle TickerHandle; };