Files
UnrealEngine/Engine/Source/Programs/Unsync/Private/UnsyncTarget.h
2025-05-18 13:04:45 +08:00

57 lines
1.3 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "UnsyncBuffer.h"
#include "UnsyncCommon.h"
#include "UnsyncFile.h"
namespace unsync {
struct FNeedList;
class FProxyPool;
class FBlockCache;
class FScavengeDatabase;
struct FBuildTargetResult
{
bool bSuccess = false;
uint64 SourceBytes = 0;
uint64 BaseBytes = 0;
};
struct FBuildTargetParams
{
EStrongHashAlgorithmID StrongHasher;
FProxyPool* ProxyPool = nullptr;
FBlockCache* BlockCache = nullptr;
FScavengeDatabase* ScavengeDatabase = nullptr;
enum class ESourceType {
File,
Patch,
Server,
};
ESourceType SourceType = ESourceType::File;
};
FBuildTargetResult BuildTarget(FIOWriter& Result,
FIOReader& Source,
FIOReader& Base,
const FNeedList& NeedList,
const FBuildTargetParams& Params);
FBuffer BuildTargetBuffer(FIOReader& SourceProvider, FIOReader& BaseProvider, const FNeedList& NeedList, const FBuildTargetParams& Params);
FBuffer BuildTargetBuffer(const uint8* SourceData,
uint64 SourceSize,
const uint8* BaseData,
uint64 BaseSize,
const FNeedList& NeedList,
const FBuildTargetParams& Params);
FBuffer BuildTargetWithPatch(const uint8* PatchData, uint64 PatchSize, const uint8* BaseData, uint64 BaseSize);
} // namespace unsync