88 lines
3.7 KiB
C++
88 lines
3.7 KiB
C++
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
#pragma once
|
|
|
|
#include "CoreMinimal.h"
|
|
#include "HAL/Platform.h"
|
|
|
|
namespace BuildPatchServices
|
|
{
|
|
/**
|
|
* An enum type to describe supported features of a certain manifest.
|
|
*/
|
|
enum class EFeatureLevel : int32
|
|
{
|
|
// The original version.
|
|
Original = 0,
|
|
// Support for custom fields.
|
|
CustomFields,
|
|
// Started storing the version number.
|
|
StartStoringVersion,
|
|
// Made after data files where renamed to include the hash value, these chunks now go to ChunksV2.
|
|
DataFileRenames,
|
|
// Manifest stores whether build was constructed with chunk or file data.
|
|
StoresIfChunkOrFileData,
|
|
// Manifest stores group number for each chunk/file data for reference so that external readers don't need to know how to calculate them.
|
|
StoresDataGroupNumbers,
|
|
// Added support for chunk compression, these chunks now go to ChunksV3. NB: Not File Data Compression yet.
|
|
ChunkCompressionSupport,
|
|
// Manifest stores product prerequisites info.
|
|
StoresPrerequisitesInfo,
|
|
// Manifest stores chunk download sizes.
|
|
StoresChunkFileSizes,
|
|
// Manifest can optionally be stored using UObject serialization and compressed.
|
|
StoredAsCompressedUClass,
|
|
// These two features were removed and never used.
|
|
UNUSED_0,
|
|
UNUSED_1,
|
|
// Manifest stores chunk data SHA1 hash to use in place of data compare, for faster generation.
|
|
StoresChunkDataShaHashes,
|
|
// Manifest stores Prerequisite Ids.
|
|
StoresPrerequisiteIds,
|
|
// The first minimal binary format was added. UObject classes will no longer be saved out when binary selected.
|
|
StoredAsBinaryData,
|
|
// Temporary level where manifest can reference chunks with dynamic window size, but did not serialize them. Chunks from here onwards are stored in ChunksV4.
|
|
VariableSizeChunksWithoutWindowSizeChunkInfo,
|
|
// Manifest can reference chunks with dynamic window size, and also serializes them.
|
|
VariableSizeChunks,
|
|
// Manifest uses a build id generated from its metadata.
|
|
UsesRuntimeGeneratedBuildId,
|
|
// Manifest uses a build id generated unique at build time, and stored in manifest.
|
|
UsesBuildTimeGeneratedBuildId,
|
|
|
|
// !! Always after the latest version entry, signifies the latest version plus 1 to allow the following Latest alias.
|
|
LatestPlusOne,
|
|
// An alias for the actual latest version value.
|
|
Latest = (LatestPlusOne - 1),
|
|
// An alias to provide the latest version of a manifest supported by file data (nochunks).
|
|
LatestNoChunks = StoresChunkFileSizes,
|
|
// An alias to provide the latest version of a manifest supported by a json serialized format.
|
|
LatestJson = StoresPrerequisiteIds,
|
|
// An alias to provide the first available version of optimised delta manifest saving.
|
|
FirstOptimisedDelta = UsesRuntimeGeneratedBuildId,
|
|
|
|
// More aliases, but this time for values that have been renamed
|
|
StoresUniqueBuildId = UsesRuntimeGeneratedBuildId,
|
|
|
|
// JSON manifests were stored with a version of 255 during a certain CL range due to a bug.
|
|
// We will treat this as being StoresChunkFileSizes in code.
|
|
BrokenJsonVersion = 255,
|
|
// This is for UObject default, so that we always serialize it.
|
|
Invalid = -1
|
|
};
|
|
|
|
/**
|
|
* Returns the string representation of the EFeatureLevel value. Used for analytics and logging only.
|
|
* @param FeatureLevel The feature level enum value.
|
|
* @return The string representation.
|
|
*/
|
|
BUILDPATCHSERVICES_API const TCHAR* FeatureLevelToString(const EFeatureLevel& FeatureLevel);
|
|
|
|
/**
|
|
* Parses the provided string into the relevant EFeatureLevel value, if it matches.
|
|
* @param FeatureLevelString The string to try parse.
|
|
* @param FeatureLevel Receives the enum value if successful.
|
|
* @return true if successfully parsed.
|
|
*/
|
|
BUILDPATCHSERVICES_API bool FeatureLevelFromString(const TCHAR* FeatureLevelString, EFeatureLevel& FeatureLevel);
|
|
}
|