27template<
typename T, SIZE_T Size = 8>
66 return A.Hash ==
B.Hash;
85static_assert(
sizeof(FIoBlockKey) ==
sizeof(
uint64));
272 FPrioQueue(
const FPrioQueue&) =
delete;
273 FPrioQueue(FPrioQueue&&) =
default;
275 FPrioQueue& operator=(
const FPrioQueue&) =
delete;
276 FPrioQueue& operator=(FPrioQueue&&) =
default;
288 .FileHandle = Request->FileHandle,
289 .FileOffset = Request->FileOffset,
290 .Priority = Request->Priority
294 static int32 QueueToPriority(
const FPrioQueue& Queue) {
return Queue.Priority; }
296 static bool FileOffsetLess(
const FFileOffset&
LHS,
const FFileOffset& RHS)
298 if (
LHS.FileHandle.Value() == RHS.FileHandle.Value())
300 return LHS.FileOffset < RHS.FileOffset;
302 return LHS.FileHandle.Value() < RHS.FileHandle.Value();
336 FFileOffset LastFileOffset;
338 bool bSortByOffset =
false;
339 bool bReprioritizeCancelled =
false;
356 void operator()(
void* Ptr)
const
364 FMemoryBlock*
Next =
nullptr;
373 FMemoryBlock* FreeBlock =
nullptr;
387 bool IsEmpty()
const {
return FreeBlock ==
nullptr; }
392 FMemoryBlock*
Next =
nullptr;
399 FMemoryBlock* FreeBlock =
nullptr;
416 FCachedBlock* LruPrev =
nullptr;
417 FCachedBlock* LruNext =
nullptr;
425 FCachedBlock CacheLruHead;
426 FCachedBlock CacheLruTail;
427 uint64 CacheBlockSize = 0;
472 FFileBlockLookup FileBlockLookup;
475 FEncodedBlockLookup EncodedBlockLookup;
480class FIoServiceThread;
502 virtual bool Init()
override final;
504 virtual void Stop()
override final;
555 std::atomic_uint32_t NextFileId{1};
#define check(expr)
Definition AssertionMacros.h:314
#define ensure( InExpression)
Definition AssertionMacros.h:464
@ INDEX_NONE
Definition CoreMiscDefines.h:150
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
EIoErrorCode
Definition IoStatus.h:19
#define MAX_uint32
Definition NumericLimits.h:21
#define MAX_uint64
Definition NumericLimits.h:22
UE_INTRINSIC_CAST UE_REWRITE constexpr std::remove_reference_t< T > && MoveTemp(T &&Obj) noexcept
Definition UnrealTemplate.h:520
uint32 Size
Definition VulkanMemory.cpp:4034
Definition NameTypes.h:617
Definition UnrealString.h.inl:34
Definition UniquePtr.h:107
Definition InheritedContext.h:118
Definition PlatformIoDispatcherBase.h:380
void * Realloc(FIoBufferHandle Handle, uint32 BlockSize)
Definition PlatformIoDispatcherBase.cpp:418
FIoChunkBlockMemoryPool()
Definition PlatformIoDispatcherBase.cpp:379
bool IsEmpty() const
Definition PlatformIoDispatcherBase.h:387
void * Alloc(uint32 BlockSize, FIoBufferHandle &OutHandle)
Definition PlatformIoDispatcherBase.cpp:397
Definition PlatformIoDispatcherBase.h:404
void Put(FIoFileBlockRequest &FileBlockRequest)
Definition PlatformIoDispatcherBase.cpp:514
~FIoFileBlockCache()
Definition PlatformIoDispatcherBase.cpp:453
bool Get(FIoFileBlockRequest &FileBlockRequest)
Definition PlatformIoDispatcherBase.cpp:481
Definition PlatformIoDispatcherBase.h:344
void AddRef(FIoBufferHandle Handle)
Definition PlatformIoDispatcherBase.cpp:370
void * Alloc(FIoBufferHandle &OutHandle)
Definition PlatformIoDispatcherBase.cpp:322
Definition PlatformIoDispatcherBase.h:259
FIoFileBlockRequest * Peek()
Definition PlatformIoDispatcherBase.cpp:82
void ReprioritizeCancelled()
Definition PlatformIoDispatcherBase.h:320
void Unlock()
Definition PlatformIoDispatcherBase.h:324
void Enqueue(FIoFileBlockRequestList &&Requests)
Definition PlatformIoDispatcherBase.cpp:38
FIoFileBlockRequest * Dequeue()
Definition PlatformIoDispatcherBase.cpp:57
void SortByOffset(bool bValue)
Definition PlatformIoDispatcherBase.h:321
void Lock()
Definition PlatformIoDispatcherBase.h:323
void Reprioritize()
Definition PlatformIoDispatcherBase.cpp:101
Definition PlatformIoDispatcher.h:95
void Lock()
Definition Mutex.h:43
void Unlock()
Definition Mutex.h:53
Definition AdvancedWidgetsModule.cpp:13
U16 Index
Definition radfft.cpp:71
static uint64 Cycles64()
Definition AndroidPlatformTime.h:34
Definition IoChunkEncoding.h:139
Definition IoChunkEncoding.h:69
static FORCENOINLINE CORE_API void Free(void *Original)
Definition UnrealMemory.cpp:685
Definition IoContainers.h:52
Definition PlatformIoDispatcherBase.h:50
uint64 Hash
Definition PlatformIoDispatcherBase.h:82
friend uint32 GetTypeHash(const FIoBlockKey &Key)
Definition PlatformIoDispatcherBase.h:69
uint64 GetHash() const
Definition PlatformIoDispatcherBase.h:60
friend bool operator==(const FIoBlockKey &A, const FIoBlockKey &B)
Definition PlatformIoDispatcherBase.h:64
uint32 GetBlockId() const
Definition PlatformIoDispatcherBase.h:61
uint32 FileId
Definition PlatformIoDispatcherBase.h:79
FIoBlockKey(uint32 InFileId, uint32 InBlockId)
Definition PlatformIoDispatcherBase.h:55
bool IsValid() const
Definition PlatformIoDispatcherBase.h:62
FIoBlockKey()
Definition PlatformIoDispatcherBase.h:51
uint32 BlockId
Definition PlatformIoDispatcherBase.h:80
Definition PlatformIoDispatcherBase.h:32
bool IsValid() const
Definition PlatformIoDispatcherBase.h:42
FIoBufferHandle()=default
FIoBufferHandle(int32 InHandle)
Definition PlatformIoDispatcherBase.h:35
int32 Value() const
Definition PlatformIoDispatcherBase.h:41
Definition PlatformIoDispatcher.h:196
Definition PlatformIoDispatcherBase.h:92
uint32 OffsetInBlock
Definition PlatformIoDispatcherBase.h:95
struct FIoPlatformReadRequest * Request
Definition PlatformIoDispatcherBase.h:93
uint32 SizeInBlock
Definition PlatformIoDispatcherBase.h:96
uint64 OffsetInDst
Definition PlatformIoDispatcherBase.h:94
Definition PlatformIoDispatcherBase.h:90
FIoBufferHandle BufferHandle
Definition PlatformIoDispatcherBase.h:112
TArray< FScatterTarget, TInlineAllocator< 2 > > FScatterTargets
Definition PlatformIoDispatcherBase.h:100
uint8 RemainingFileBlocks
Definition PlatformIoDispatcherBase.h:117
FIoBufferHandle FileBufferHandle
Definition PlatformIoDispatcherBase.h:111
uint8 FileBlockCount
Definition PlatformIoDispatcherBase.h:118
void * DecodedData
Definition PlatformIoDispatcherBase.h:109
FName CompressionMethod
Definition PlatformIoDispatcherBase.h:113
void * EncodedData
Definition PlatformIoDispatcherBase.h:108
uint32 BlockCompressedSize
Definition PlatformIoDispatcherBase.h:114
uint32 BlockUncompressedSize
Definition PlatformIoDispatcherBase.h:115
FScatterTargets ScatterTargets
Definition PlatformIoDispatcherBase.h:103
uint64 FileOffset
Definition PlatformIoDispatcherBase.h:110
FMemoryView EncryptionKey
Definition PlatformIoDispatcherBase.h:104
FIoBlockKey BlockKey
Definition PlatformIoDispatcherBase.h:106
FMemoryView BlockHash
Definition PlatformIoDispatcherBase.h:105
EIoErrorCode ErrorCode
Definition PlatformIoDispatcherBase.h:116
FIoEncodedBlockRequest * Next
Definition PlatformIoDispatcherBase.h:107
Definition PlatformIoDispatcherBase.h:126
uint32 FileBlockIds[MaxFileCount]
Definition PlatformIoDispatcherBase.h:128
@ MaxFileCount
Definition PlatformIoDispatcherBase.h:127
FIoFileBlockLink * NextLink
Definition PlatformIoDispatcherBase.h:130
uint32 FileBlockCount
Definition PlatformIoDispatcherBase.h:129
Definition PlatformIoDispatcherBase.h:215
FIoPlatformReadRequest * DirectReadRequest
Definition PlatformIoDispatcherBase.h:230
uint32 SeqNo
Definition PlatformIoDispatcherBase.h:239
EQueueStatus QueueStatus
Definition PlatformIoDispatcherBase.h:243
uint64 Size
Definition PlatformIoDispatcherBase.h:236
uint64 BytesUsed
Definition PlatformIoDispatcherBase.h:237
int64 FileSize
Definition PlatformIoDispatcherBase.h:235
FIoFileBlockRequest * Prev
Definition PlatformIoDispatcherBase.h:229
FIoFileBlockRequest * Next
Definition PlatformIoDispatcherBase.h:228
static uint32 NextSeqNo
Definition PlatformIoDispatcherBase.h:225
EIoErrorCode ErrorCode
Definition PlatformIoDispatcherBase.h:241
FEncodedBlocksArray EncodedBlockRequests
Definition PlatformIoDispatcherBase.h:227
FIoBlockKey BlockKey
Definition PlatformIoDispatcherBase.h:233
void * Buffer
Definition PlatformIoDispatcherBase.h:231
EQueueStatus
Definition PlatformIoDispatcherBase.h:217
FIoFileHandle FileHandle
Definition PlatformIoDispatcherBase.h:232
uint64 TimeCreated
Definition PlatformIoDispatcherBase.h:238
FIoBufferHandle BufferHandle
Definition PlatformIoDispatcherBase.h:240
uint64 FileOffset
Definition PlatformIoDispatcherBase.h:234
int32 Priority
Definition PlatformIoDispatcherBase.h:242
Definition PlatformIoDispatcher.h:26
Definition PlatformIoDispatcher.h:75