ResourceGroup

The ResourceGroup is the central component of the Resources system.

ResourceGroups represent a collection of Resources.

They can be saved/loaded from a filetype which supersedes resfileindex files.

See Resource Group File Format file specification for more details.

class ResourceGroup

Contains a collection of Resources.

Subclassed by CarbonResources::BundleResourceGroup, CarbonResources::PatchResourceGroup

Public Functions

Result CreateBundle(const BundleCreateParams &params) const

Creates a Bundle from the ResourceGroup.

See also

BundleResourceGroup::Unpack for information regarding bundle unpacking.

Parameters:

params – input parameters, See BundleCreateParams for more details.

Returns:

Result see CarbonResources::Result for more details.

Result CreatePatch(const PatchCreateParams &params) const

Creates a Patch from the ResourceGroup. This ResourceGroup is expected to be latest.

See also

PatchResourceGroup::Apply for information regarding patch application.

Parameters:

params – input parameters, See PatchCreateParams for more details.

Returns:

Result see CarbonResources::Result for more details.

Result ImportFromFile(const ResourceGroupImportFromFileParams &params) const

Imports resource data from file.

Note

Legacy support for importing from resfileindex CSV files is included.

Parameters:

params – input parameters, See ResourceGroupImportFromFileParams for more details.

Returns:

Result see CarbonResources::Result for more details.

Result ExportToFile(const ResourceGroupExportToFileParams &params) const

Exports ResourceGroup to file.

Parameters:

params – input parameters, See ResourceGroupExportToFileParams for more details.

Returns:

Result see CarbonResources::Result for more details.

Result CreateFromDirectory(const CreateResourceGroupFromDirectoryParams &params)

Creates a ResourceGroup from a supplied directory.

Note

No file filtering supported

Parameters:

params – input parameters, See CreateResourceGroupFromDirectoryParams for more details.

Returns:

Result see CarbonResources::Result for more details.

Result Merge(const ResourceGroupMergeParams &params) const

Merges a supplied ResourceGroup with this one. Merge performed on RelativePath, merge ResourceGroup takes precedent.

Parameters:

params – input parameters, See ResourceGroupMergeParams for more details.

Returns:

Result see CarbonResources::Result for more details.

Result DiffAgainstGroup(const ResourceGroupDiffAgainstGroupParams &params) const

Diffs two supplied ResourceGroups.

Parameters:

params – input parameters, See ResourceGroupDiffAgainstGroupParams for more details.

Returns:

Result see CarbonResources::Result for more details.

Result RemoveResources(const ResourceGroupRemoveResourcesParams &params) const

Removes Resources from ResourceGroup. Resources to remove are supplied are identified from a vector of RelativePaths.

Note

No file filtering supported

Parameters:

params – input parameters, See CreateResourceGroupFromDirectoryParams for more details.

Returns:

Result see CarbonResources::Result for more details.

class ResourceGroupImpl

Subclassed by CarbonResources::BundleResourceGroup::BundleResourceGroupImpl, CarbonResources::PatchResourceGroup::PatchResourceGroupImpl

Input Parameters

struct ResourceGroupImportFromFileParams

Function Parameters required for CarbonResources::ResourceGroup::ImportFromFile.

Public Members

std::filesystem::path filename

Full filename of input file.

StatusCallback statusCallback = nullptr

Optional status function callback. Callback is triggered at key status update events.

struct ResourceGroupExportToFileParams

Function Parameters required for CarbonResources::ResourceGroup::ExportToFile.

Public Members

std::filesystem::path filename = "ResourceGroup.yaml"

Full filename of output file. If directory doesn’t exist it will be created.

Version outputDocumentVersion = S_DOCUMENT_VERSION

Document version to output. By default this will be latest supported by the library.

StatusCallback statusCallback = nullptr

Optional status function callback. Callback is triggered at key status update events.

struct CreateResourceGroupFromDirectoryParams

Function Parameters required for CarbonResources::ResourceGroup::CreateFromDirectory.

Public Members

std::filesystem::path directory = ""

Input directory for which to find files.

uintmax_t resourceStreamThreshold = 10000000

Files encountered that are above this the threshold value will be streamed in. Value is in bytes, default: 10000000

Version outputDocumentVersion = S_DOCUMENT_VERSION

Document version to output. By default this will be latest supported by the library.

StatusCallback statusCallback = nullptr

Optional status function callback. Callback is triggered at key status update events.

std::string resourcePrefix = ""

Resource prefix setting, e.g. res.

struct PatchCreateParams

Function Parameters required for CarbonResources::ResourceGroup::CreatePatch.

Public Members

uint32_t maxInputFileChunkSize = 50000000

Files are processed in chunks, maxInputFileChunkSize indicate the size of this chunk. Files smaller than chunk will be processed in one pass.

ResourceGroup *previousResourceGroup = nullptr

ResourceGroup containing resources from previous build.

std::filesystem::path resourceGroupRelativePath = "ResourceGroup.yaml"

Relative path for output resourceGroup which will contain the diff between PatchCreateParams::previousResourceGroup and this ResourceGroup.

std::filesystem::path resourceGroupPatchRelativePath = "PatchResourceGroup.yaml"

Relative path for output PatchResourceGroup which will contain all the patches produced.

std::filesystem::path patchFileRelativePathPrefix = "Patches/Patch"

Relative path prefix for produced patch binaries. Default is “Patches/Patch” which will produce patches such as Patches/Patch.1 …

ResourceDestinationSettings resourcePatchBinaryDestinationSettings = {CarbonResources::ResourceDestinationType::LOCAL_CDN, "PatchOut/Patches/"}

Where the produced binary patches will be saved.

ResourceDestinationSettings resourcePatchResourceGroupDestinationSettings = {CarbonResources::ResourceDestinationType::LOCAL_RELATIVE, "PatchOut/"}

Where the produced PatchResourceGroup will be saved.

StatusCallback statusCallback = nullptr

Optional status function callback. Callback is triggered at key status update events.

std::chrono::seconds downloadRetrySeconds = {120}

Delay before a failed download is retried (seconds)

std::filesystem::path indexFolder = std::filesystem::temp_directory_path() / "carbonResources" / "chunkIndexes"

Directory to store index calculation files during patch creation.

struct BundleCreateParams

Function Parameters required for CarbonResources::ResourceGroup::CreatePatch.

Public Members

ResourceSourceSettings resourceSourceSettings = {CarbonResources::ResourceSourceType::LOCAL_RELATIVE}

Where resources related to ResourceGroup are to be be sourced.

ResourceDestinationSettings chunkDestinationSettings = {CarbonResources::ResourceDestinationType::LOCAL_CDN, "BundleOut/Chunks/"}

Where chunks created will be saved.

std::filesystem::path resourceGroupRelativePath = "ResourceGroup.yaml"

Where to save a ResourceGroup the Bundle was based off. This ResourceGroup will match the original but can be saved somewhere else.

std::filesystem::path resourceGroupBundleRelativePath = "BundleResourceGroup.yaml"

Relative path for use with the output BundleResourceGroup.

uintmax_t chunkSize = 50000000

Size of chunks to break files into. Value representation is in bytes, default is 10000000

uintmax_t fileReadChunkSize = 10000000

Size of chunks to read files in. Default is 10000000.

ResourceDestinationSettings resourceBundleResourceGroupDestinationSettings = {CarbonResources::ResourceDestinationType::LOCAL_RELATIVE, "BundleOut/"}

Where to save the resulting BundleResourceGroup

StatusCallback statusCallback = nullptr

Optional status function callback. Callback is triggered at key status update events.

std::chrono::seconds downloadRetrySeconds = {120}

Delay before a failed download is retried (seconds)

bool calculateCompressions = true

Specifies if compression will be calculated for the generated bundle chunks

struct ResourceGroupMergeParams

Function Parameters required for CarbonResources::ResourceGroup::Merge.

Public Members

ResourceGroup *resourceGroupToMerge = nullptr

ResourceGroup to merge

ResourceGroup *mergedResourceGroup = nullptr

Resulting ResourceGroup after merge

struct ResourceGroupDiffAgainstGroupParams

Function Parameters required for CarbonResources::ResourceGroup::DiffAgainstGroup.

Public Members

ResourceGroup *resourceGroupToDiffAgainst = nullptr

Resource group to diff against

std::vector<std::filesystem::path> *additions = nullptr

Output list of relative paths that have been added or modified on second group.

std::vector<std::filesystem::path> *subtractions = nullptr

Output list of relative paths that have been removed on second group.

struct ResourceGroupRemoveResourcesParams

Function Parameters required for CarbonResources::ResourceGroup::RemoveResources.

Public Members

std::vector<std::filesystem::path> *resourcesToRemove = nullptr

List of Resources to remove identified by RelativePath.

bool errorIfResourceNotFound = true

If true the function will return an error state if supplied Resource is not present in ResourceGroup