2021-05-25 17:03:30 -04:00
|
|
|
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
|
|
|
|
|
|
|
|
#include "DerivedDataBuildSession.h"
|
|
|
|
|
|
2024-06-21 12:52:32 -04:00
|
|
|
#include "Containers/SharedString.h"
|
2021-05-25 17:03:30 -04:00
|
|
|
#include "DerivedDataBuildAction.h"
|
|
|
|
|
#include "DerivedDataBuildDefinition.h"
|
|
|
|
|
#include "DerivedDataBuildJob.h"
|
|
|
|
|
#include "DerivedDataBuildOutput.h"
|
|
|
|
|
#include "DerivedDataBuildPrivate.h"
|
2022-01-06 11:05:57 -05:00
|
|
|
#include "DerivedDataValue.h"
|
2021-05-25 17:03:30 -04:00
|
|
|
|
|
|
|
|
namespace UE::DerivedData::Private
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
class FBuildSessionInternal final : public IBuildSessionInternal
|
|
|
|
|
{
|
|
|
|
|
public:
|
|
|
|
|
FBuildSessionInternal(
|
2022-01-19 00:27:48 -05:00
|
|
|
const FSharedString& InName,
|
2022-11-09 15:53:21 -05:00
|
|
|
ICache* InCache,
|
2021-05-25 17:03:30 -04:00
|
|
|
IBuild& InBuildSystem,
|
|
|
|
|
IBuildScheduler& InScheduler,
|
|
|
|
|
IBuildInputResolver* InInputResolver)
|
|
|
|
|
: Name(InName)
|
|
|
|
|
, Cache(InCache)
|
|
|
|
|
, BuildSystem(InBuildSystem)
|
|
|
|
|
, Scheduler(InScheduler)
|
|
|
|
|
, InputResolver(InInputResolver)
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
2022-01-19 00:27:48 -05:00
|
|
|
const FSharedString& GetName() const final { return Name; }
|
2021-05-25 17:03:30 -04:00
|
|
|
|
2022-01-11 13:18:16 -05:00
|
|
|
void Build(
|
|
|
|
|
const FBuildKey& Key,
|
|
|
|
|
const FBuildPolicy& Policy,
|
|
|
|
|
IRequestOwner& Owner,
|
|
|
|
|
FOnBuildComplete&& OnComplete) final;
|
|
|
|
|
|
2021-08-04 18:08:50 -04:00
|
|
|
void Build(
|
2021-05-25 17:03:30 -04:00
|
|
|
const FBuildDefinition& Definition,
|
2021-10-20 12:38:01 -04:00
|
|
|
const FOptionalBuildInputs& Inputs,
|
|
|
|
|
const FBuildPolicy& Policy,
|
2021-08-04 18:08:50 -04:00
|
|
|
IRequestOwner& Owner,
|
2021-05-25 17:03:30 -04:00
|
|
|
FOnBuildComplete&& OnComplete) final;
|
|
|
|
|
|
2021-10-20 12:38:01 -04:00
|
|
|
void Build(
|
2021-05-25 17:03:30 -04:00
|
|
|
const FBuildAction& Action,
|
|
|
|
|
const FOptionalBuildInputs& Inputs,
|
2021-10-20 12:38:01 -04:00
|
|
|
const FBuildPolicy& Policy,
|
2021-08-04 18:08:50 -04:00
|
|
|
IRequestOwner& Owner,
|
2021-10-20 12:38:01 -04:00
|
|
|
FOnBuildComplete&& OnComplete) final;
|
2021-05-25 17:03:30 -04:00
|
|
|
|
2022-01-19 00:27:48 -05:00
|
|
|
FSharedString Name;
|
2022-11-09 15:53:21 -05:00
|
|
|
ICache* Cache;
|
2021-05-25 17:03:30 -04:00
|
|
|
IBuild& BuildSystem;
|
|
|
|
|
IBuildScheduler& Scheduler;
|
|
|
|
|
IBuildInputResolver* InputResolver;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
2022-01-11 13:18:16 -05:00
|
|
|
void FBuildSessionInternal::Build(
|
|
|
|
|
const FBuildKey& Key,
|
|
|
|
|
const FBuildPolicy& Policy,
|
|
|
|
|
IRequestOwner& Owner,
|
|
|
|
|
FOnBuildComplete&& OnComplete)
|
|
|
|
|
{
|
|
|
|
|
CreateBuildJob({Cache, BuildSystem, Scheduler, InputResolver, Owner}, Key, Policy,
|
2022-08-17 14:04:36 -04:00
|
|
|
OnComplete ? MoveTemp(OnComplete) : FOnBuildComplete([](FBuildCompleteParams&&){}));
|
2022-01-11 13:18:16 -05:00
|
|
|
}
|
|
|
|
|
|
2021-08-04 18:08:50 -04:00
|
|
|
void FBuildSessionInternal::Build(
|
2021-05-25 17:03:30 -04:00
|
|
|
const FBuildDefinition& Definition,
|
2021-10-20 12:38:01 -04:00
|
|
|
const FOptionalBuildInputs& Inputs,
|
|
|
|
|
const FBuildPolicy& Policy,
|
2021-08-04 18:08:50 -04:00
|
|
|
IRequestOwner& Owner,
|
2021-05-25 17:03:30 -04:00
|
|
|
FOnBuildComplete&& OnComplete)
|
|
|
|
|
{
|
2021-10-20 12:38:01 -04:00
|
|
|
CreateBuildJob({Cache, BuildSystem, Scheduler, InputResolver, Owner}, Definition, Inputs, Policy,
|
2022-08-17 14:04:36 -04:00
|
|
|
OnComplete ? MoveTemp(OnComplete) : FOnBuildComplete([](FBuildCompleteParams&&){}));
|
2021-05-25 17:03:30 -04:00
|
|
|
}
|
|
|
|
|
|
2021-10-20 12:38:01 -04:00
|
|
|
void FBuildSessionInternal::Build(
|
2021-05-25 17:03:30 -04:00
|
|
|
const FBuildAction& Action,
|
|
|
|
|
const FOptionalBuildInputs& Inputs,
|
2021-10-20 12:38:01 -04:00
|
|
|
const FBuildPolicy& Policy,
|
2021-08-04 18:08:50 -04:00
|
|
|
IRequestOwner& Owner,
|
2021-10-20 12:38:01 -04:00
|
|
|
FOnBuildComplete&& OnComplete)
|
2021-05-25 17:03:30 -04:00
|
|
|
{
|
2021-10-20 12:38:01 -04:00
|
|
|
CreateBuildJob({Cache, BuildSystem, Scheduler, InputResolver, Owner}, Action, Inputs, Policy,
|
2022-08-17 14:04:36 -04:00
|
|
|
OnComplete ? MoveTemp(OnComplete) : FOnBuildComplete([](FBuildCompleteParams&&){}));
|
2021-05-25 17:03:30 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
|
|
|
|
FBuildSession CreateBuildSession(IBuildSessionInternal* Session)
|
|
|
|
|
{
|
|
|
|
|
return FBuildSession(Session);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
FBuildSession CreateBuildSession(
|
2022-01-19 00:27:48 -05:00
|
|
|
const FSharedString& Name,
|
2022-11-09 15:53:21 -05:00
|
|
|
ICache* Cache,
|
2021-05-25 17:03:30 -04:00
|
|
|
IBuild& BuildSystem,
|
|
|
|
|
IBuildScheduler& Scheduler,
|
|
|
|
|
IBuildInputResolver* InputResolver)
|
|
|
|
|
{
|
|
|
|
|
return CreateBuildSession(new FBuildSessionInternal(Name, Cache, BuildSystem, Scheduler, InputResolver));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
} // UE::DerivedData::Private
|