UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
Manifest.mock.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2#pragma once
3
5#include "Algo/Copy.h"
8
9#if WITH_DEV_AUTOMATION_TESTS
10
11namespace BuildPatchServices
12{
13 class FMockManifest
15 {
16 public:
17 virtual uint32 GetAppID() const override
18 {
19 return AppId;
20 }
21
22 virtual const FString& GetAppName() const override
23 {
24 return AppName;
25 }
26
27 virtual const FString& GetVersionString() const override
28 {
29 return VersionString;
30 }
31
32 virtual const FString& GetLaunchExe() const override
33 {
34 return LaunchExe;
35 }
36
37 virtual const FString& GetLaunchCommand() const override
38 {
39 return LaunchCommand;
40 }
41
42 virtual const FString& GetPrereqName() const override
43 {
44 return PrereqName;
45 }
46
47 virtual const FString& GetPrereqPath() const override
48 {
49 return PrereqPath;
50 }
51
52 virtual const FString& GetPrereqArgs() const override
53 {
54 return PrereqArgs;
55 }
56
57 virtual int64 GetDownloadSize() const override
58 {
59 return DownloadSize;
60 }
61
62 virtual int64 GetDownloadSize(const TSet<FString>& Tags) const override
63 {
64 return TagDownloadSize;
65 }
66
67 virtual int64 GetDeltaDownloadSize(const TSet<FString>& Tags, const IBuildManifestRef& PreviousVersion) const override
68 {
69 return DeltaDownloadSize;
70 }
71
72 virtual int64 GetBuildSize() const override
73 {
74 return BuildSize;
75 }
76
77 virtual int64 GetBuildSize(const TSet<FString>& Tags) const override
78 {
79 return TagBuildSize;
80 }
81
82 virtual TArray<FString> GetBuildFileList() const override
83 {
86 return Filenames;
87 }
88
89 virtual TArray<FStringView> GetBuildFileListView() const override
90 {
93 return Filenames;
94 }
95
96 virtual TArray<FString> GetBuildFileList(const TSet<FString>& Tags) const override
97 {
99 GetTaggedFileList(Tags, Filenames);
100 return Filenames;
101 }
102
103 virtual TArray<FStringView> GetBuildFileListView(const TSet<FString>& Tags) const override
104 {
106 GetTaggedFileList(Tags, Filenames);
107 return Filenames;
108 }
109
110 virtual void GetFileTagList(TSet<FString>& Tags) const override
111 {
113 }
114
115 virtual void GetRemovableFiles(const IBuildManifestRef& OldManifest, TArray< FString >& OutRemovableFiles) const override
116 {
118 }
119
120 virtual void GetRemovableFiles(const TCHAR* InstallPath, TArray< FString >& OutRemovableFiles) const override
121 {
123 }
124
125 virtual void CopyCustomFields(const IBuildManifestRef& Other, bool bClobber) override
126 {
127 }
128
129 virtual bool NeedsResaving() const override
130 {
131 return false;
132 }
133
134 virtual const IManifestFieldPtr GetCustomField(const FString& FieldName) const override
135 {
136 return MakeShareable(new FMockManifestField(CustomFields[FieldName]));
137 }
138
139 virtual const IManifestFieldPtr SetCustomField(const FString& FieldName, const FString& Value) override
140 {
141 CustomFields.FindOrAdd(FieldName).String = Value; return GetCustomField(FieldName);
142 }
143
144 virtual const IManifestFieldPtr SetCustomField(const FString& FieldName, const double& Value) override
145 {
146 CustomFields.FindOrAdd(FieldName).Double = Value; return GetCustomField(FieldName);
147 }
148
149 virtual const IManifestFieldPtr SetCustomField(const FString& FieldName, const int64& Value) override
150 {
151 CustomFields.FindOrAdd(FieldName).Integer = Value; return GetCustomField(FieldName);
152 }
153
154 virtual void RemoveCustomField(const FString& FieldName) override
155 {
156 CustomFields.Remove(FieldName);
157 }
158
159 virtual IBuildManifestRef Duplicate() const override
160 {
161 return MakeShareable(new FMockManifest(*this));
162 }
163
164 virtual bool LoadFromFile(const FString& Filename) override
165 {
166 return true;
167 }
168
169 virtual bool DeserializeFromData(const TArray<uint8>& DataInput) override
170 {
171 return true;
172 }
173
174 virtual bool DeserializeFromJSON(const FString& JSONInput) override
175 {
176 return true;
177 }
178
179 virtual bool SaveToFile(const FString& Filename, EFeatureLevel InFeatureLevel) override
180 {
181 return true;
182 }
183
184 virtual void SerializeToJSON(FString& JSONOutput) override
185 {
186 }
187
188 virtual EFeatureLevel GetFeatureLevel() const override
189 {
190 return FeatureLevel;
191 }
192
193 virtual void GetChunksRequiredForFiles(const TSet<FString>& Filenames, TSet<FGuid>& RequiredChunks) const override
194 {
196 }
197
198 virtual uint32 GetNumberOfChunkReferences(const FGuid& ChunkGuid) const override
199 {
201 }
202
203 virtual int64 GetDataSize(const FGuid& DataGuid) const override
204 {
205 return DataSize;
206 }
207
208 virtual int64 GetDataSize(const TArray<FGuid>& DataGuids) const override
209 {
210 return DataSize;
211 }
212
213 virtual int64 GetDataSize(const TSet <FGuid>& DataGuids) const override
214 {
215 return DataSize;
216 }
217
218 virtual int64 GetFileSize(FStringView Filename) const override
219 {
220 return FileNameToFileSize.FindRef(FString(Filename));
221 }
222
223 virtual int64 GetFileSize(const TArray<FString>& Filenames) const override
224 {
225 int64 FileSize = 0;
226 for (const FString& Filename : Filenames)
227 {
228 FileSize += GetFileSize(Filename);
229 }
230 return FileSize;
231 }
232
233 virtual int64 GetFileSize(const TSet <FString>& Filenames) const override
234 {
235 return GetFileSize(Filenames.Array());
236 }
237
238 virtual uint32 GetNumFiles() const override
239 {
240 return NumFiles;
241 }
242
243 virtual void GetFileList(TArray<FString>& Filenames) const override
244 {
246 }
247
248 virtual void GetFileList(TArray<FStringView>& Filenames) const override
249 {
251 }
252
253 virtual void GetFileList(TSet<FString>& Filenames) const override
254 {
256 }
257
258 virtual void GetTaggedFileList(const TSet<FString>& Tags, TSet<FString>& TaggedFiles) const override
259 {
260 TaggedFiles = TaggedFileList;
261 }
262
263 virtual void GetTaggedFileList(const TSet<FString>& Tags, TArray<FString>& TaggedFiles) const override
264 {
265 TaggedFiles = TaggedFileList.Array();
266 }
267
268 virtual void GetTaggedFileList(const TSet<FString>& Tags, TArray<FStringView>& TaggedFiles) const override
269 {
270 Algo::Copy(TaggedFileList, TaggedFiles);
271 }
272
273 virtual void GetDataList(TArray<FGuid>& DataGuids) const override
274 {
275 DataGuids = DataList;
276 }
277
278 virtual void GetDataList(TSet <FGuid>& DataGuids) const override
279 {
280 DataGuids.Append(DataList);
281 }
282
283 virtual const FFileManifest* GetFileManifest(const FString& Filename) const override
284 {
285 return FileManifests.Find(Filename);
286 }
287
288 virtual bool IsFileDataManifest() const override
289 {
290 return false;
291 }
292
293 virtual bool GetChunkHash(const FGuid& ChunkGuid, uint64& OutHash) const override
294 {
295 if (ChunkInfos.Contains(ChunkGuid))
296 {
297 OutHash = ChunkInfos[ChunkGuid].Hash;
298 return true;
299 }
300 return false;
301 }
302
303 virtual bool GetChunkShaHash(const FGuid& ChunkGuid, FSHAHash& OutHash) const override
304 {
305 static const uint8 Zero[FSHA1::DigestSize] = { 0 };
306 if (ChunkInfos.Contains(ChunkGuid))
307 {
308 OutHash = ChunkInfos[ChunkGuid].ShaHash;
309 return FMemory::Memcmp(OutHash.Hash, Zero, FSHA1::DigestSize) != 0;
310 }
311 return false;
312 }
313
314 virtual const FChunkInfo* GetChunkInfo(const FGuid& ChunkGuid) const override
315 {
316 if (ChunkInfos.Contains(ChunkGuid))
317 {
318 return &ChunkInfos[ChunkGuid];
319 }
320 return nullptr;
321 }
322
323 virtual bool GetFileHash(const FGuid& FileGuid, FSHAHash& OutHash) const override
324 {
325 if (FileIdToHashes.Contains(FileGuid))
326 {
327 OutHash = FileIdToHashes[FileGuid];
328 return true;
329 }
330 return false;
331 }
332
333 virtual bool GetFileHash(const FString& Filename, FSHAHash& OutHash) const override
334 {
335 if (FileNameToHashes.Contains(Filename))
336 {
337 OutHash = FileNameToHashes[Filename];
338 return true;
339 }
340 return false;
341 }
342
343 virtual bool GetFilePartHash(const FGuid& FilePartGuid, uint64& OutHash) const override
344 {
345 if (FilePartHashes.Contains(FilePartGuid))
346 {
348 return true;
349 }
350 return false;
351 }
352
354 virtual void GetOutdatedFiles(const FBuildPatchAppManifestPtr& OldManifest, const FString& InstallDirectory, TSet<FString>& OutOutdatedFiles) const override { GetOutdatedFiles(OldManifest.Get(), InstallDirectory, OutOutdatedFiles); }
355 virtual void GetOutdatedFiles(const FBuildPatchAppManifest* OldManifest, const FString& InstallDirectory, TSet<FString>& OutOutdatedFiles) const override { GetOutdatedFiles(OldManifest, InstallDirectory, TSet<FString>(), OutOutdatedFiles); }
356 virtual void GetOutdatedFiles(const FBuildPatchAppManifest* OldManifest, const FString& InstallDirectory, const TSet<FString>& FilesToCheck, TSet<FString>& OutOutdatedFiles) const
357 {
358 OutOutdatedFiles = OutOutdatedFiles.Union(OutdatedFiles);
359 }
360
361 virtual bool IsFileOutdated(const FBuildPatchAppManifestRef& OldManifest, const FString& Filename) const override
362 {
363 return true;
364 }
365
366 virtual bool HasFileAttributes() const override
367 {
368 return true;
369 }
370
372 {
373 // Normal manifests have some lookup structures we need to be fixed up in order for
374 // things to work.
375 for (const TPair<FString, FFileManifest>& FileManifest : FileManifests)
376 {
377 FileManifestList.FileList.Add(FileManifest.Value);
378 }
379
380 InitLookups();
381 }
382
383 public:
384 uint64 AppId;
385 FString AppName;
386 FString VersionString;
387 FString LaunchExe;
388 FString LaunchCommand;
389 FString PrereqName;
390 FString PrereqPath;
391 FString PrereqArgs;
394 int64 DownloadSize;
401 EFeatureLevel FeatureLevel;
408 TArray<FGuid> DataList;
410 TMap<FGuid, FChunkInfo> ChunkInfos;
415 TSet<FString> OutdatedFiles;
416 };
417
419}
420
421#endif //WITH_DEV_AUTOMATION_TESTS
TSharedPtr< class FBuildPatchAppManifest, ESPMode::ThreadSafe > FBuildPatchAppManifestPtr
Definition BuildPatchManifest.h:16
#define TEXT(x)
Definition Platform.h:1272
FPlatformTypes::TCHAR TCHAR
Either ANSICHAR or WIDECHAR, depending on whether the platform supports wide characters or the requir...
Definition Platform.h:1135
FPlatformTypes::int64 int64
A 64-bit signed integer.
Definition Platform.h:1127
FPlatformTypes::uint64 uint64
A 64-bit unsigned integer.
Definition Platform.h:1117
SharedPointerInternals::TRawPtrProxy< ObjectType > MakeShareable(ObjectType *InObject)
Definition SharedPointer.h:1947
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
uint8_t uint8
Definition binka_ue_file_header.h:8
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition BuildPatchManifest.h:64
@ DigestSize
Definition SecureHash.h:317
Definition SecureHash.h:226
Definition Array.h:670
Definition UnrealString.h.inl:34
Definition SharedPointer.h:692
void Copy(const InT &Input, OutT &Output)
Definition Copy.h:36
Definition BuildPatchFileConstructor.h:28
@ GetFileList
Definition NetworkMessage.h:57
Definition Guid.h:109
static UE_FORCEINLINE_HINT int32 Memcmp(const void *Buf1, const void *Buf2, SIZE_T Count)
Definition UnrealMemory.h:114
Definition Tuple.h:652