Files
UnrealEngineUWP/Engine/Source/Developer/DerivedDataCache/Private/DerivedDataBuildSession.cpp
devin doucette cdedb37d66 DDC: Converted the Build API to UTF-8 where appropriate
#jira UE-133382
#rb Zousar.Shaker
#rnx
#preflight 61e798ee3f00a0a23ef78c49

#ROBOMERGE-AUTHOR: devin.doucette
#ROBOMERGE-SOURCE: CL 18655307 in //UE5/Release-5.0/... via CL 18655320 via CL 18655322
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v900-18638592)

[CL 18655349 by devin doucette in ue5-main branch]
2022-01-19 00:27:48 -05:00

114 lines
3.0 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#include "DerivedDataBuildSession.h"
#include "DerivedDataBuildAction.h"
#include "DerivedDataBuildDefinition.h"
#include "DerivedDataBuildJob.h"
#include "DerivedDataBuildOutput.h"
#include "DerivedDataBuildPrivate.h"
#include "DerivedDataSharedString.h"
#include "DerivedDataValue.h"
namespace UE::DerivedData::Private
{
class FBuildSessionInternal final : public IBuildSessionInternal
{
public:
FBuildSessionInternal(
const FSharedString& InName,
ICache& InCache,
IBuild& InBuildSystem,
IBuildScheduler& InScheduler,
IBuildInputResolver* InInputResolver)
: Name(InName)
, Cache(InCache)
, BuildSystem(InBuildSystem)
, Scheduler(InScheduler)
, InputResolver(InInputResolver)
{
}
const FSharedString& 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;
FSharedString 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(
const FSharedString& Name,
ICache& Cache,
IBuild& BuildSystem,
IBuildScheduler& Scheduler,
IBuildInputResolver* InputResolver)
{
return CreateBuildSession(new FBuildSessionInternal(Name, Cache, BuildSystem, Scheduler, InputResolver));
}
} // UE::DerivedData::Private