Files
UnrealEngineUWP/Engine/Source/Developer/DerivedDataCache/Private/DerivedDataBuildSession.cpp
devin doucette ed0c7a9b68 DDC: Replaced BuildValue(ValueKey) with Build(Key)
The policy allows filtering the result to an arbitrary set of values, which makes the new function both more powerful and better aligned with the rest of the API.

#jira UE-133389
#rb Zousar.Shaker
#rnx
#preflight 61ddb5fa4533f92a4e2c48d0

#ROBOMERGE-AUTHOR: devin.doucette
#ROBOMERGE-SOURCE: CL 18574442 in //UE5/Release-5.0/... via CL 18574451
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v899-18417669)

[CL 18574456 by devin doucette in ue5-release-engine-test branch]
2022-01-11 13:18:16 -05:00

114 lines
3.0 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#include "DerivedDataBuildSession.h"
#include "Containers/UnrealString.h"
#include "DerivedDataBuildAction.h"
#include "DerivedDataBuildDefinition.h"
#include "DerivedDataBuildJob.h"
#include "DerivedDataBuildOutput.h"
#include "DerivedDataBuildPrivate.h"
#include "DerivedDataValue.h"
namespace UE::DerivedData::Private
{
class FBuildSessionInternal final : public IBuildSessionInternal
{
public:
FBuildSessionInternal(
FStringView InName,
ICache& InCache,
IBuild& InBuildSystem,
IBuildScheduler& InScheduler,
IBuildInputResolver* InInputResolver)
: Name(InName)
, Cache(InCache)
, BuildSystem(InBuildSystem)
, Scheduler(InScheduler)
, InputResolver(InInputResolver)
{
}
FStringView GetName() const final { return Name; }
void Build(
const FBuildKey& Key,
const FBuildPolicy& Policy,
IRequestOwner& Owner,
FOnBuildComplete&& OnComplete) final;
void Build(
const FBuildDefinition& Definition,
const FOptionalBuildInputs& Inputs,
const FBuildPolicy& Policy,
IRequestOwner& Owner,
FOnBuildComplete&& OnComplete) final;
void Build(
const FBuildAction& Action,
const FOptionalBuildInputs& Inputs,
const FBuildPolicy& Policy,
IRequestOwner& Owner,
FOnBuildComplete&& OnComplete) final;
FString Name;
ICache& Cache;
IBuild& BuildSystem;
IBuildScheduler& Scheduler;
IBuildInputResolver* InputResolver;
};
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void FBuildSessionInternal::Build(
const FBuildKey& Key,
const FBuildPolicy& Policy,
IRequestOwner& Owner,
FOnBuildComplete&& OnComplete)
{
CreateBuildJob({Cache, BuildSystem, Scheduler, InputResolver, Owner}, Key, Policy,
OnComplete ? MoveTemp(OnComplete) : [](FBuildCompleteParams&&){});
}
void FBuildSessionInternal::Build(
const FBuildDefinition& Definition,
const FOptionalBuildInputs& Inputs,
const FBuildPolicy& Policy,
IRequestOwner& Owner,
FOnBuildComplete&& OnComplete)
{
CreateBuildJob({Cache, BuildSystem, Scheduler, InputResolver, Owner}, Definition, Inputs, Policy,
OnComplete ? MoveTemp(OnComplete) : [](FBuildCompleteParams&&){});
}
void FBuildSessionInternal::Build(
const FBuildAction& Action,
const FOptionalBuildInputs& Inputs,
const FBuildPolicy& Policy,
IRequestOwner& Owner,
FOnBuildComplete&& OnComplete)
{
CreateBuildJob({Cache, BuildSystem, Scheduler, InputResolver, Owner}, Action, Inputs, Policy,
OnComplete ? MoveTemp(OnComplete) : [](FBuildCompleteParams&&){});
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
FBuildSession CreateBuildSession(IBuildSessionInternal* Session)
{
return FBuildSession(Session);
}
FBuildSession CreateBuildSession(
FStringView Name,
ICache& Cache,
IBuild& BuildSystem,
IBuildScheduler& Scheduler,
IBuildInputResolver* InputResolver)
{
return CreateBuildSession(new FBuildSessionInternal(Name, Cache, BuildSystem, Scheduler, InputResolver));
}
} // UE::DerivedData::Private