UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
IoDispatcher.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "Async/Future.h"
7#include "Containers/Array.h"
9#include "Containers/Map.h"
13#include "CoreTypes.h"
14#include "Delegates/Delegate.h"
16#include "HAL/CriticalSection.h"
17#include "HAL/PlatformAtomics.h"
18#include "HAL/PlatformFile.h"
19#include "HAL/UnrealMemory.h"
20#include "IO/IoBuffer.h"
21#include "IO/IoChunkId.h"
22#include "IO/IoContainerId.h"
24#include "IO/IoHash.h"
25#include "IO/IoStatus.h"
26#include "Logging/LogMacros.h"
27#include "Math/NumericLimits.h"
28#include "Memory/MemoryFwd.h"
29#include "Memory/MemoryView.h"
30#include "Misc/AES.h"
32#include "Misc/Build.h"
33#include "Misc/ByteSwap.h"
34#include "Misc/EnumClassFlags.h"
35#include "Misc/Guid.h"
36#include "Misc/IEngineCrypto.h"
37#include "Misc/SecureHash.h"
40#include "String/BytesToHex.h"
41#include "Tasks/Task.h"
42#include "Templates/Function.h"
46#include "Templates/UniquePtr.h"
48#include "UObject/NameTypes.h"
49#include "UObject/UnrealNames.h"
50
51class FEvent;
52class FIoBatchImpl;
54class FIoDispatcher;
56class FIoRequest;
57class FIoRequestImpl;
59class FIoStoreReader;
61class FPackageId;
64struct FFileRegion;
67template <typename CharType> class TStringBuilderBase;
68template <typename OptionalType> struct TOptional;
69
71
73
77{
78public:
81
83
84 const FString& GetPath() const { return Path; }
85 int32 GetOrder() const { return Order; }
86
87private:
88 FString Path;
89 int32 Order = 0;
90};
91
92class
93UE_DEPRECATED(5.5, "FIoChunkHash is deprecated. Use FIoHash instead.")
95{
96public:
98 {
99 uint32 Result = 5381;
100 for (int i = 0; i < sizeof Hash; ++i)
101 {
102 Result = Result * 33 + InChunkHash.Hash[i];
103 }
104 return Result;
105 }
106
107 friend FArchive& operator<<(FArchive& Ar, FIoChunkHash& ChunkHash)
108 {
109 Ar.Serialize(&ChunkHash.Hash, sizeof Hash);
110 return Ar;
111 }
112
113 inline bool operator ==(const FIoChunkHash& Rhs) const
114 {
115 return 0 == FMemory::Memcmp(Hash, Rhs.Hash, sizeof Hash);
116 }
117
118 inline bool operator !=(const FIoChunkHash& Rhs) const
119 {
120 return !(*this == Rhs);
121 }
122
123 inline FString ToString() const
124 {
125 return BytesToHex(Hash, 20);
126 }
127
129 {
131 FMemory::Memcpy(IoHash.GetBytes(), Hash, sizeof(FIoHash));
132 return IoHash;
133 }
134
136 {
137 FIoChunkHash Result;
138 FMemory::Memcpy(Result.Hash, &IoHash, sizeof IoHash);
139 FMemory::Memset(Result.Hash + 20, 0, 12);
140 return Result;
141 }
142
143 static FIoChunkHash HashBuffer(const void* Data, uint64 DataSize)
144 {
145 return CreateFromIoHash(FIoHash::HashBuffer(Data, DataSize));
146 }
147
148private:
149 uint8 Hash[32];
150};
151
153
155{
156 None = 0,
160 HardwareTargetBuffer = 1 << 0,
161};
163
165{
166public:
167 FIoReadOptions() = default;
168
170 : RequestedOffset(InOffset)
171 , RequestedSize(InSize)
172 { }
173
175 : RequestedOffset(InOffset)
176 , RequestedSize(InSize)
177 , TargetVa(InTargetVa)
178 { }
179
181 : RequestedOffset(InOffset)
182 , RequestedSize(InSize)
183 , TargetVa(InTargetVa)
184 , Flags(InFlags)
185 { }
186
187 ~FIoReadOptions() = default;
188
190 {
191 RequestedOffset = Offset;
192 RequestedSize = Size;
193 }
194
196 {
197 TargetVa = InTargetVa;
198 }
199
201 {
202 Flags = InValue;
203 }
204
206 {
207 return RequestedOffset;
208 }
209
211 {
212 return RequestedSize;
213 }
214
215 void* GetTargetVa() const
216 {
217 return TargetVa;
218 }
219
221 {
222 return Flags;
223 }
224
225private:
226 uint64 RequestedOffset = 0;
227 uint64 RequestedSize = ~uint64(0);
228 void* TargetVa = nullptr;
230};
231
233
236class FIoRequest final
237{
238public:
239 FIoRequest() = default;
241
246 CORE_API FIoStatus Status() const;
247 CORE_API const FIoBuffer* GetResult() const;
248 CORE_API const FIoBuffer& GetResultOrDie() const;
249 CORE_API void Cancel();
251 CORE_API void Release();
252
253private:
254 FIoRequestImpl* Impl = nullptr;
255
257
258 friend class FIoDispatcher;
259 friend class FIoDispatcherImpl;
260 friend class FIoBatch;
261};
262
264
278
284class FIoBatch final
285{
286 friend class FIoDispatcher;
287 friend class FIoDispatcherImpl;
288 friend class FIoRequestStats;
289
290public:
296 CORE_API FIoRequest ReadWithCallback(const FIoChunkId& ChunkId, const FIoReadOptions& Options, int32 Priority, FIoReadCallback&& Callback);
297
298 CORE_API void Issue();
299 CORE_API void IssueWithCallback(TFunction<void()>&& Callback);
302
303private:
305 FIoRequestImpl* ReadInternal(const FIoChunkId& ChunkId, const FIoReadOptions& Options, int32 Priority);
306
307 FIoDispatcherImpl* Dispatcher;
308 FIoRequestImpl* HeadRequest = nullptr;
309 FIoRequestImpl* TailRequest = nullptr;
310};
311
320
326
334
336
342
344
346
349class FIoDispatcher final
350{
351public:
354
357
359
361
363
364 // Polling methods
365 CORE_API bool DoesChunkExist(const FIoChunkId& ChunkId) const;
368
369
370 // Events
372
373 FIoDispatcher(const FIoDispatcher&) = default;
375
376 static CORE_API bool IsInitialized();
378 static CORE_API void InitializePostSettings();
379 static CORE_API void Shutdown();
380 static CORE_API FIoDispatcher& Get();
381
382private:
383 CORE_API bool DoesChunkExist(const FIoChunkId& ChunkId, const FIoOffsetAndLength& ChunkRange) const;
385
386 FIoDispatcherImpl* Impl = nullptr;
387
388 friend class FIoRequest;
389 friend class FIoBatch;
390 friend class FIoQueue;
391 friend class FBulkData;
392};
393
395
397{
398 static constexpr uint32 InvalidHandle = ~uint32(0);
399 static constexpr uint32 RootHandle = 0;
400
401public:
403
404 inline bool IsValid() const
405 {
406 return Handle != InvalidHandle;
407 }
408
410 {
411 return Handle < Other.Handle;
412 }
413
415 {
416 return Handle == Other.Handle;
417 }
418
420 {
421 return InHandle.Handle;
422 }
423
424 inline uint32 ToIndex() const
425 {
426 return Handle;
427 }
428
433
435 {
436 return FIoDirectoryIndexHandle(RootHandle);
437 }
438
440 {
441 return FIoDirectoryIndexHandle(InvalidHandle);
442 }
443
444private:
446 : Handle(InHandle) { }
447
448 uint32 Handle = InvalidHandle;
449};
450
452
476
478
480{
481 None,
482 Compressed = (1 << 0),
483 Encrypted = (1 << 1),
484 Signed = (1 << 2),
485 Indexed = (1 << 3),
486 OnDemand = (1 << 4),
487};
489
524
554
562
576
578{
581
584 // There is where the data starts in IoBuffer (for when you pass in a data range via FIoReadOptions)
585 uint64 UncompressedOffset = 0;
586 // This is the total size requested via FIoReadOptions. Notably, if you requested a narrow range, you could
587 // add up all the block uncompressed sizes and it would be larger than this.
589 // This is the total size of compressed data, which is less than IoBuffer size due to padding for decryption.
590 uint64 TotalCompressedSize = 0;
591};
592
594{
595public:
598
600 CORE_API FIoContainerId GetContainerId() const;
601 CORE_API uint32 GetVersion() const;
602 CORE_API EIoContainerFlags GetContainerFlags() const;
603 CORE_API FGuid GetEncryptionKeyGuid() const;
604 CORE_API int32 GetChunkCount() const;
605 CORE_API FString GetContainerName() const; // The container name is the base filename of ContainerPath, e.g. "global".
606
607 CORE_API void EnumerateChunks(TFunction<bool(FIoStoreTocChunkInfo&&)>&& Callback) const;
608 CORE_API TIoStatusOr<FIoStoreTocChunkInfo> GetChunkInfo(const FIoChunkId& Chunk) const;
610
611 // Reads the chunk off the disk, decrypting/decompressing as necessary.
612 CORE_API TIoStatusOr<FIoBuffer> Read(const FIoChunkId& Chunk, const FIoReadOptions& Options) const;
613
614 // As Read(), except returns a task that will contain the result after a .Wait/.BusyWait.
615 CORE_API UE::Tasks::TTask<TIoStatusOr<FIoBuffer>> ReadAsync(const FIoChunkId& Chunk, const FIoReadOptions& Options) const;
616
617 // Reads and decrypts if necessary the compressed blocks, but does _not_ decompress them. The totality of the data is stored
618 // in FIoStoreCompressedReadResult::FIoBuffer as a contiguous buffer, however each block is padded during encryption, so
619 // either use FIoStoreCompressedBlockInfo::AlignedSize to advance through the buffer, or use FIoStoreCompressedBlockInfo::OffsetInBuffer
620 // directly.
621 CORE_API TIoStatusOr<FIoStoreCompressedReadResult> ReadCompressed(const FIoChunkId& Chunk, const FIoReadOptions& Options, bool bDecrypt = true) const;
622
623 CORE_API const FIoDirectoryIndexReader& GetDirectoryIndexReader() const;
624
625 CORE_API void GetFilenamesByBlockIndex(const TArray<int32>& InBlockIndexList, TArray<FString>& OutFileList) const;
626 CORE_API void GetFilenames(TArray<FString>& OutFileList) const;
627
628 CORE_API uint32 GetCompressionBlockSize() const;
629 CORE_API const TArray<FName>& GetCompressionMethods() const;
630 CORE_API void EnumerateCompressedBlocks(TFunction<bool(const FIoStoreTocCompressedBlockInfo&)>&& Callback) const;
631 CORE_API void EnumerateCompressedBlocksForChunk(const FIoChunkId& Chunk, TFunction<bool(const FIoStoreTocCompressedBlockInfo&)>&& Callback) const;
632
633 // Returns the .ucas file path and all partition(s) ({containername}_s1.ucas, {containername}_s2.ucas)
634 CORE_API void GetContainerFilePaths(TArray<FString>& OutPaths);
635
636private:
638};
OODEFFUNC typedef void(OODLE_CALLBACK t_fp_OodleCore_Plugin_Free)(void *ptr)
void BytesToHex(const uint8 *In, int32 Count, FString &Out)
Definition BytesToHex.cpp:97
@ INDEX_NONE
Definition CoreMiscDefines.h:150
#define UE_NONCOPYABLE(TypeName)
Definition CoreMiscDefines.h:457
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
FPlatformTypes::int64 int64
A 64-bit signed integer.
Definition Platform.h:1127
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
FPlatformTypes::uint64 uint64
A 64-bit unsigned integer.
Definition Platform.h:1117
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
UE::FPlatformRecursiveMutex FCriticalSection
Definition CriticalSection.h:53
#define DECLARE_MULTICAST_DELEGATE_OneParam(DelegateName, Param1Type)
Definition DelegateCombinations.h:49
#define ENUM_CLASS_FLAGS(Enum)
Definition EnumClassFlags.h:6
#define PRAGMA_ENABLE_DEPRECATION_WARNINGS
Definition GenericPlatformCompilerPreSetup.h:12
#define PRAGMA_DISABLE_DEPRECATION_WARNINGS
Definition GenericPlatformCompilerPreSetup.h:8
EAsyncIOPriorityAndFlags
Definition GenericPlatformFile.h:31
@ AIOP_NUM
Definition GenericPlatformFile.h:48
@ AIOP_PRIORITY_MASK
Definition GenericPlatformFile.h:32
void * FRSAKeyHandle
Definition IEngineCrypto.h:9
EIoChunkType
Definition IoChunkId.h:28
@ IoDispatcherPriority_Max
Definition IoDispatcherPriority.h:14
@ IoDispatcherPriority_Low
Definition IoDispatcherPriority.h:11
@ IoDispatcherPriority_Min
Definition IoDispatcherPriority.h:10
@ IoDispatcherPriority_High
Definition IoDispatcherPriority.h:13
@ IoDispatcherPriority_Medium
Definition IoDispatcherPriority.h:12
int32 ConvertToIoDispatcherPriority(EAsyncIOPriorityAndFlags AIOP)
Definition IoDispatcher.h:265
EIoReadOptionsFlags
Definition IoDispatcher.h:155
EIoContainerFlags
Definition IoDispatcher.h:480
UE_FORCEINLINE_HINT bool operator!=(const FIndexedPointer &Other) const
Definition LockFreeList.h:76
#define DECLARE_LOG_CATEGORY_EXTERN(CategoryName, DefaultVerbosity, CompileTimeVerbosity)
Definition LogMacros.h:361
const bool
Definition NetworkReplayStreaming.h:178
decltype(auto) Visit(Func &&Callable, Variants &&... Args)
Definition TVariant.h:271
#define UE_ARRAY_COUNT(array)
Definition UnrealTemplate.h:212
uint32 Offset
Definition VulkanMemory.cpp:4033
uint32 Size
Definition VulkanMemory.cpp:4034
uint8_t uint8
Definition binka_ue_file_header.h:8
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition Archive.h:1208
virtual void Serialize(void *V, int64 Length)
Definition Archive.h:1689
Definition BulkData.h:470
Definition Event.h:21
Definition IoDispatcherPrivate.h:10
Definition IoDispatcher.h:285
CORE_API FIoBatch()
Definition IoDispatcher.cpp:1085
CORE_API ~FIoBatch()
Definition IoDispatcher.cpp:1099
CORE_API void IssueAndDispatchSubsequents(FGraphEventRef Event)
Definition IoDispatcher.cpp:1187
CORE_API void IssueWithCallback(TFunction< void()> &&Callback)
Definition IoDispatcher.cpp:1175
CORE_API void Issue()
Definition IoDispatcher.cpp:1169
CORE_API void IssueAndTriggerEvent(FEvent *Event)
Definition IoDispatcher.cpp:1181
CORE_API FIoRequest ReadWithCallback(const FIoChunkId &ChunkId, const FIoReadOptions &Options, int32 Priority, FIoReadCallback &&Callback)
Definition IoDispatcher.cpp:1161
CORE_API FIoBatch & operator=(FIoBatch &&Other)
Definition IoDispatcher.cpp:1111
Definition IoBuffer.h:15
Definition IoDispatcher.h:95
static FIoChunkHash HashBuffer(const void *Data, uint64 DataSize)
Definition IoDispatcher.h:143
static FIoChunkHash CreateFromIoHash(const FIoHash &IoHash)
Definition IoDispatcher.h:135
FIoHash ToIoHash() const
Definition IoDispatcher.h:128
friend uint32 GetTypeHash(const FIoChunkHash &InChunkHash)
Definition IoDispatcher.h:97
FString ToString() const
Definition IoDispatcher.h:123
friend FArchive & operator<<(FArchive &Ar, FIoChunkHash &ChunkHash)
Definition IoDispatcher.h:107
Definition IoChunkId.h:64
Definition IoContainerId.h:18
Definition IoDispatcher.h:397
bool operator==(FIoDirectoryIndexHandle Other) const
Definition IoDispatcher.h:414
static FIoDirectoryIndexHandle Invalid()
Definition IoDispatcher.h:439
bool IsValid() const
Definition IoDispatcher.h:404
uint32 ToIndex() const
Definition IoDispatcher.h:424
static FIoDirectoryIndexHandle FromIndex(uint32 Index)
Definition IoDispatcher.h:429
static FIoDirectoryIndexHandle RootDirectory()
Definition IoDispatcher.h:434
FIoDirectoryIndexHandle()=default
friend uint32 GetTypeHash(FIoDirectoryIndexHandle InHandle)
Definition IoDispatcher.h:419
bool operator<(FIoDirectoryIndexHandle Other) const
Definition IoDispatcher.h:409
Definition IoDirectoryIndex.cpp:320
Definition IoDispatcher.h:454
CORE_API ~FIoDirectoryIndexReader()
Definition IoDirectoryIndex.cpp:469
CORE_API FStringView GetDirectoryName(FIoDirectoryIndexHandle Directory) const
Definition IoDirectoryIndex.cpp:504
CORE_API FIoDirectoryIndexHandle GetNextFile(FIoDirectoryIndexHandle File) const
Definition IoDirectoryIndex.cpp:499
CORE_API FIoDirectoryIndexHandle GetFile(FIoDirectoryIndexHandle Directory) const
Definition IoDirectoryIndex.cpp:494
CORE_API FIoDirectoryIndexHandle GetNextDirectory(FIoDirectoryIndexHandle Directory) const
Definition IoDirectoryIndex.cpp:489
CORE_API uint32 GetFileData(FIoDirectoryIndexHandle File) const
Definition IoDirectoryIndex.cpp:514
CORE_API FIoDirectoryIndexHandle GetChildDirectory(FIoDirectoryIndexHandle Directory) const
Definition IoDirectoryIndex.cpp:484
CORE_API const FString & GetMountPoint() const
Definition IoDirectoryIndex.cpp:479
CORE_API FIoDirectoryIndexReader()
Definition IoDirectoryIndex.cpp:464
CORE_API FStringView GetFileName(FIoDirectoryIndexHandle File) const
Definition IoDirectoryIndex.cpp:509
CORE_API bool IterateDirectoryIndex(FIoDirectoryIndexHandle Directory, FStringView Path, FDirectoryIndexVisitorFunction Visit) const
Definition IoDirectoryIndex.cpp:519
Definition IoDispatcher.cpp:348
Definition IoDispatcher.h:350
CORE_API TIoStatusOr< uint64 > GetSizeForChunk(const FIoChunkId &ChunkId) const
Definition IoDispatcher.cpp:1019
static CORE_API FIoStatus Initialize()
Definition IoDispatcher.cpp:1049
static CORE_API bool IsInitialized()
Definition IoDispatcher.cpp:1043
CORE_API FIoDispatcher()
Definition IoDispatcher.cpp:977
friend class FIoQueue
Definition IoDispatcher.h:390
FIoDispatcher & operator=(const FIoDispatcher &)=delete
CORE_API TIoStatusOr< FIoMappedRegion > OpenMapped(const FIoChunkId &ChunkId, const FIoReadOptions &Options)
Definition IoDispatcher.cpp:1000
CORE_API int64 GetTotalLoaded() const
Definition IoDispatcher.cpp:1031
CORE_API bool DoesChunkExist(const FIoChunkId &ChunkId) const
Definition IoDispatcher.cpp:1007
FIoDispatcher(const FIoDispatcher &)=default
static CORE_API void InitializePostSettings()
Definition IoDispatcher.cpp:1058
DECLARE_EVENT_OneParam(FIoDispatcher, FIoContainerUnmountedEvent, const FIoDispatcherMountedContainer &)
static CORE_API FIoDispatcher & Get()
Definition IoDispatcher.cpp:1072
CORE_API FIoSignatureErrorDelegate & OnSignatureError()
Definition IoDispatcher.cpp:1037
CORE_API ~FIoDispatcher()
Definition IoDispatcher.cpp:982
DECLARE_EVENT_OneParam(FIoDispatcher, FIoContainerMountedEvent, const FIoDispatcherMountedContainer &)
CORE_API FIoBatch NewBatch()
Definition IoDispatcher.cpp:994
static CORE_API void Shutdown()
Definition IoDispatcher.cpp:1066
Definition IoDispatcher.h:165
EIoReadOptionsFlags GetFlags() const
Definition IoDispatcher.h:220
uint64 GetOffset() const
Definition IoDispatcher.h:205
FIoReadOptions()=default
void SetRange(uint64 Offset, uint64 Size)
Definition IoDispatcher.h:189
~FIoReadOptions()=default
void SetFlags(EIoReadOptionsFlags InValue)
Definition IoDispatcher.h:200
void SetTargetVa(void *InTargetVa)
Definition IoDispatcher.h:195
void * GetTargetVa() const
Definition IoDispatcher.h:215
FIoReadOptions(uint64 InOffset, uint64 InSize, void *InTargetVa, EIoReadOptionsFlags InFlags)
Definition IoDispatcher.h:180
FIoReadOptions(uint64 InOffset, uint64 InSize, void *InTargetVa)
Definition IoDispatcher.h:174
uint64 GetSize() const
Definition IoDispatcher.h:210
FIoReadOptions(uint64 InOffset, uint64 InSize)
Definition IoDispatcher.h:169
Definition IoDispatcherBackend.h:23
Definition IoDispatcher.cpp:191
Definition IoDispatcher.h:237
CORE_API ~FIoRequest()
Definition IoDispatcher.cpp:1262
CORE_API const FIoBuffer & GetResultOrDie() const
Definition IoDispatcher.cpp:1304
CORE_API FIoRequest & operator=(const FIoRequest &Other)
Definition IoDispatcher.cpp:1237
CORE_API const FIoBuffer * GetResult() const
Definition IoDispatcher.cpp:1284
CORE_API void Cancel()
Definition IoDispatcher.cpp:1315
FIoRequest()=default
CORE_API void Release()
Definition IoDispatcher.cpp:1337
CORE_API FIoStatus Status() const
Definition IoDispatcher.cpp:1271
CORE_API void UpdatePriority(int32 NewPriority)
Definition IoDispatcher.cpp:1326
Definition IoStatus.h:60
Definition IoDispatcher.h:77
const FString & GetPath() const
Definition IoDispatcher.h:84
CORE_API void InitializeFileEnvironment(FStringView InPath, int32 InOrder=0)
CORE_API FIoStoreEnvironment()
CORE_API ~FIoStoreEnvironment()
int32 GetOrder() const
Definition IoDispatcher.h:85
Definition IoStore.cpp:316
Definition IoDispatcher.h:594
Definition NameTypes.h:617
Definition PackageId.h:19
Definition SecureHash.h:226
Definition MappedFileHandle.h:115
Definition MappedFileHandle.h:17
Definition Array.h:670
Definition AssetRegistryState.h:50
Definition IoStatus.h:101
Definition UnrealString.h.inl:34
Definition SharedPointer.h:153
Definition StringBuilder.h:79
Definition Task.h:191
Definition ExpressionParserTypes.h:21
U16 Index
Definition radfft.cpp:71
Definition AES.h:27
Definition FileRegions.h:31
Definition Guid.h:109
Definition IoDispatcher.h:491
FIoContainerId ContainerId
Definition IoDispatcher.h:492
FRSAKeyHandle SigningKey
Definition IoDispatcher.h:496
bool IsIndexed() const
Definition IoDispatcher.h:514
FGuid EncryptionKeyGuid
Definition IoDispatcher.h:494
bool IsOnDemand() const
Definition IoDispatcher.h:519
bool IsCompressed() const
Definition IoDispatcher.h:499
bool bGenerateDiffPatch
Definition IoDispatcher.h:497
EIoContainerFlags ContainerFlags
Definition IoDispatcher.h:493
FAES::FAESKey EncryptionKey
Definition IoDispatcher.h:495
bool IsEncrypted() const
Definition IoDispatcher.h:504
bool IsSigned() const
Definition IoDispatcher.h:509
Definition IoDispatcher.h:322
FIoStoreEnvironment Environment
Definition IoDispatcher.h:323
FIoContainerId ContainerId
Definition IoDispatcher.h:324
Definition IoHash.h:33
static FIoHash HashBuffer(FMemoryView View)
Definition IoHash.h:156
Definition IoDispatcher.h:316
IMappedFileHandle * MappedFileHandle
Definition IoDispatcher.h:317
IMappedFileRegion * MappedFileRegion
Definition IoDispatcher.h:318
Definition IoOffsetLength.h:12
Definition IoDispatcher.h:338
FCriticalSection CriticalSection
Definition IoDispatcher.h:339
FIoSignatureErrorDelegate SignatureErrorDelegate
Definition IoDispatcher.h:340
Definition IoDispatcher.h:328
int32 BlockIndex
Definition IoDispatcher.h:330
FString ContainerName
Definition IoDispatcher.h:329
FSHAHash ExpectedHash
Definition IoDispatcher.h:331
FSHAHash ActualHash
Definition IoDispatcher.h:332
Definition IoDispatcher.h:564
uint32 CompressedSize
Definition IoDispatcher.h:568
FName CompressionMethod
Definition IoDispatcher.h:566
uint32 UncompressedSize
Definition IoDispatcher.h:570
uint64 OffsetInBuffer
Definition IoDispatcher.h:574
uint32 AlignedSize
Definition IoDispatcher.h:572
Definition IoDispatcher.h:578
TArray< FIoStoreCompressedBlockInfo > Blocks
Definition IoDispatcher.h:583
FIoBuffer IoBuffer
Definition IoDispatcher.h:580
Definition IoDispatcher.h:526
bool bForceUncompressed
Definition IoDispatcher.h:542
bool bHasValidFileName
Definition IoDispatcher.h:541
uint64 Offset
Definition IoDispatcher.h:534
int32 PartitionIndex
Definition IoDispatcher.h:539
uint32 NumCompressedBlocks
Definition IoDispatcher.h:538
bool bIsMemoryMapped
Definition IoDispatcher.h:543
bool bIsCompressed
Definition IoDispatcher.h:544
uint64 OffsetOnDisk
Definition IoDispatcher.h:535
PRAGMA_DISABLE_DEPRECATION_WARNINGS FIoChunkHash Hash
Definition IoDispatcher.h:531
EIoChunkType ChunkType
Definition IoDispatcher.h:540
PRAGMA_ENABLE_DEPRECATION_WARNINGS FString FileName
Definition IoDispatcher.h:533
FIoHash ChunkHash
Definition IoDispatcher.h:528
FIoChunkId Id
Definition IoDispatcher.h:527
uint64 Size
Definition IoDispatcher.h:536
uint64 CompressedSize
Definition IoDispatcher.h:537
Definition IoDispatcher.h:556
uint8 CompressionMethodIndex
Definition IoDispatcher.h:560
uint64 Offset
Definition IoDispatcher.h:557
uint32 CompressedSize
Definition IoDispatcher.h:558
uint32 UncompressedSize
Definition IoDispatcher.h:559
static UE_FORCEINLINE_HINT int32 Memcmp(const void *Buf1, const void *Buf2, SIZE_T Count)
Definition UnrealMemory.h:114
static UE_FORCEINLINE_HINT void * Memcpy(void *Dest, const void *Src, SIZE_T Count)
Definition UnrealMemory.h:160
static UE_FORCEINLINE_HINT void * Memset(void *Dest, uint8 Char, SIZE_T Count)
Definition UnrealMemory.h:119
Definition IoDispatcherBackend.h:186
Definition Optional.h:131