UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
PlatformIoDispatcherBase.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
6#include "Async/Mutex.h"
7#include "HAL/PlatformTime.h"
8#include "HAL/Runnable.h"
10#include "IO/IoAllocators.h"
11#include "IO/IoBuffer.h"
12#include "IO/IoChunkEncoding.h"
13#include "IO/IoContainers.h"
16#include "IO/IoStatus.h"
17#include "Math/NumericLimits.h"
18#include "Memory/MemoryView.h"
19#include "Templates/UniquePtr.h"
20
21#include <atomic>
22
23namespace UE
24{
25
27template<typename T, SIZE_T Size = 8>
29
32{
33 FIoBufferHandle() = default;
34
36 : Handle(InHandle)
37 {
39 }
40
41 int32 Value() const { return Handle; }
42 bool IsValid() const { return Handle != INDEX_NONE; }
43
44private:
45 int32 Handle = INDEX_NONE;
46};
47
50{
52 : Hash(0)
53 { }
54
59
60 uint64 GetHash() const { return Hash; }
61 uint32 GetBlockId() const { return BlockId; }
62 bool IsValid() const { return Hash != 0; }
63
64 friend bool operator==(const FIoBlockKey& A, const FIoBlockKey& B)
65 {
66 return A.Hash == B.Hash;
67 }
68
69 friend uint32 GetTypeHash(const FIoBlockKey& Key)
70 {
71 return GetTypeHash(Key.Hash);
72 }
73
74private:
75 union
76 {
77 struct
78 {
81 };
83 };
84};
85static_assert(sizeof(FIoBlockKey) == sizeof(uint64));
86
120
123
132static_assert(sizeof(FIoFileBlockLink) == 32);
134
137 : public TIntrusiveListElement<FIoPlatformReadRequest>
138 , public FInheritedContextBase
139{
140 enum class EType : uint8
141 {
144 };
145
152
157
173
189
190 bool IsScatterGather() const { return Type == EType::ScatterGather; }
191 bool IsDirectRead() const { return Type == EType::DirectRead; }
192
194 union
195 {
198 };
202 void* UserData = nullptr;
205 std::atomic<EIoErrorCode> ErrorCode{EIoErrorCode::Ok};
207};
208
211
245
248
256
259{
261
262 struct FFileOffset
263 {
264 FIoFileHandle FileHandle;
265 uint64 FileOffset = MAX_uint64;
266 int32 Priority = 0;
267 };
268
269 struct FPrioQueue
270 {
271 explicit FPrioQueue(int32 InPriority) : Priority(InPriority) { }
272 FPrioQueue(const FPrioQueue&) = delete;
273 FPrioQueue(FPrioQueue&&) = default;
274
275 FPrioQueue& operator=(const FPrioQueue&) = delete;
276 FPrioQueue& operator=(FPrioQueue&&) = default;
277
280 int32 PeekIndex = INDEX_NONE;
282 };
283
284 static FFileOffset ToFileOffset(const FIoFileBlockRequest* Request)
285 {
286 return FFileOffset
287 {
288 .FileHandle = Request->FileHandle,
289 .FileOffset = Request->FileOffset,
290 .Priority = Request->Priority
291 };
292 }
293
294 static int32 QueueToPriority(const FPrioQueue& Queue) { return Queue.Priority; }
295
296 static bool FileOffsetLess(const FFileOffset& LHS, const FFileOffset& RHS)
297 {
298 if (LHS.FileHandle.Value() == RHS.FileHandle.Value())
299 {
300 return LHS.FileOffset < RHS.FileOffset;
301 }
302 return LHS.FileHandle.Value() < RHS.FileHandle.Value();
303 }
304
305 static bool SeqNoLess(const FIoFileBlockRequest& LHS, const FIoFileBlockRequest& RHS)
306 {
307 if (LHS.Priority == RHS.Priority)
308 {
309 return LHS.SeqNo < RHS.SeqNo;
310 }
311 return LHS.Priority > RHS.Priority;
312 }
313
314public:
316 void Enqueue(FIoFileBlockRequestList&& Requests);
319 void Reprioritize();
320 void ReprioritizeCancelled() { bReprioritizeCancelled = true; }
321 void SortByOffset(bool bValue) { bSortByOffset = bValue; }
322
323 inline void Lock() { Mutex.Lock(); }
324 inline void Unlock() { Mutex.Unlock(); }
325
326private:
327 void AddToPrioQueue(FIoFileBlockRequest& Request);
328 FIoFileBlockRequest* GetByOffset(bool bDequeue);
329 FIoFileBlockRequest* GetByOffset(FPrioQueue& PrioQueue, bool bDequeue);
330 FIoFileBlockRequest* GetCancelled(bool bDequeue);
331
334 TArray<FIoFileBlockRequest*> CancelledHeap;
335 TArray<FPrioQueue> PrioQueues;
336 FFileOffset LastFileOffset;
337 FMutex Mutex;
338 bool bSortByOffset = false;
339 bool bReprioritizeCancelled = false;
340};
341
344{
345public:
347 void Initialize(uint32 FileBlockSize, uint32 PoolSize, uint32 Alignment = 4096);
351
352private:
353
354 struct FDeleteByFree
355 {
356 void operator()(void* Ptr) const
357 {
358 FMemory::Free(Ptr);
359 }
360 };
361
362 struct FMemoryBlock
363 {
364 FMemoryBlock* Next = nullptr;
365 void* Memory = nullptr;
367 int32 RefCount = 0;
368 };
369
372 TArray<FMemoryBlock> MemoryBlocks;
373 FMemoryBlock* FreeBlock = nullptr;
374 uint32 BlockSize;
375 FMutex Mutex;
376};
377
380{
381public:
383 void Initialize(uint32 MaxBlockCount, uint32 DefaultBlockSize);
384 void* Alloc(uint32 BlockSize, FIoBufferHandle& OutHandle);
385 void* Realloc(FIoBufferHandle Handle, uint32 BlockSize);
387 bool IsEmpty() const { return FreeBlock == nullptr; }
388
389private:
390 struct FMemoryBlock
391 {
392 FMemoryBlock* Next = nullptr;
393 void* Memory = nullptr;
394 uint32 Size = 0;
396 };
397
398 TArray<FMemoryBlock> MemoryBlocks;
399 FMemoryBlock* FreeBlock = nullptr;
400};
401
404{
405public:
408
409 void Initialize(uint64 CacheBlockSize, uint64 CacheSize);
412
413private:
414 struct FCachedBlock
415 {
416 FCachedBlock* LruPrev = nullptr;
417 FCachedBlock* LruNext = nullptr;
418 uint64 Key = 0;
419 uint8* Buffer = nullptr;
420 };
421
423 TUniquePtr<uint8[]> CacheMemory;
424 TMap<uint64, FCachedBlock*> CachedBlocks;
425 FCachedBlock CacheLruHead;
426 FCachedBlock CacheLruTail;
427 uint64 CacheBlockSize = 0;
428};
429
432{
433public:
436 FIoFileReadRequestCompleted&& OnCompleted,
437 FIoBuffer& Dst,
438 uint64 DstSize,
439 void* UserData,
440 uint32 FileId);
442 FIoFileReadRequestCompleted&& OnCompleted,
443 FIoBuffer& Dst,
444 uint64 DstSize,
445 uint64 FileOffset,
446 void* UserData);
449 void Destroy(FIoPlatformReadRequest& ReadRequest);
457 void Remove(FIoEncodedBlockRequest& Request);
458 void Destroy(FIoFileBlockRequest& Request);
459 void Destroy(FIoEncodedBlockRequest& Request);
461
462 inline void Lock() { Mutex.Lock(); }
463 inline void Unlock() { Mutex.Unlock(); }
464
465private:
467 using FFileBlockLookup = TMap<FIoBlockKey, FIoFileBlockRequest*>;
468 using FEncodedBlockLookup = TMap<FIoBlockKey, FIoEncodedBlockRequest*>;
469
470 FIoPlatformReadRequestAllocator ReadRequestAllocator;
471 FIoFileBlockRequestAllocator FileBlockAllocator;
472 FFileBlockLookup FileBlockLookup;
473 FIoFileBlockLinkAllocator FileBlockLinkAllocator;
474 FIoEncodedBlockRequestAllocator EncodedBlockAllocator;
475 FEncodedBlockLookup EncodedBlockLookup;
476 UE::FMutex Mutex;
477};
478
479// Forward declare thread helper
480class FIoServiceThread;
481
495 : public FRunnable
496 , public IPlatformIoDispatcher
497{
498public:
500
501 // FRunnable
502 virtual bool Init() override final;
503 virtual uint32 Run() override final;
504 virtual void Stop() override final;
505
506 // IIoPlatformFile
507 virtual FIoStatus Initialize() override final;
510 virtual bool Tick() override { ensure(!bMultithreaded); return false; }
511 virtual void UpdatePriority(FIoFileReadRequest Request, int32 NewPriority) override;
512 virtual void CancelRequest(FIoFileReadRequest Request) override;
513 virtual void CancelAllRequests(FIoFileHandle FileHandle) override;
514 virtual void DeleteRequest(FIoFileReadRequest Request) override;
515
516protected:
518 virtual FIoStatus OnInitialize();
519 virtual uint32 OnIoThreadEntry() = 0;
520 virtual void OnWakeUp() = 0;
522
524
531
535 bool ProcessBlocks();
536
551 bool bMultithreaded = false;
552 std::atomic_bool bStopRequested{false};
553
554private:
555 std::atomic_uint32_t NextFileId{1};
556};
557
558} // namespace UE
#define check(expr)
Definition AssertionMacros.h:314
#define ensure( InExpression)
Definition AssertionMacros.h:464
@ INDEX_NONE
Definition CoreMiscDefines.h:150
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
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
uint8_t uint8
Definition binka_ue_file_header.h:8
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition IoBuffer.h:15
Definition IoStatus.h:60
Definition NameTypes.h:617
Definition Runnable.h:20
Definition Array.h:670
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
Definition Mutex.h:18
void Lock()
Definition Mutex.h:43
void Unlock()
Definition Mutex.h:53
Definition PlatformIoDispatcherBase.h:497
virtual void Stop() override final
Definition PlatformIoDispatcherBase.cpp:920
TUniquePtr< FIoServiceThread > SupportThread
Definition PlatformIoDispatcherBase.h:539
FIoEncodedBlockRequestList BlocksToComplete
Definition PlatformIoDispatcherBase.h:547
FIoFileBlockMemoryPool FileBlockMemoryPool
Definition PlatformIoDispatcherBase.h:542
TUniquePtr< FRunnableThread > Thread
Definition PlatformIoDispatcherBase.h:538
virtual uint32 Run() override final
Definition PlatformIoDispatcherBase.cpp:915
void EnqueueBlockToDecode(FIoEncodedBlockRequest &EncodedBlockRequest)
Definition PlatformIoDispatcherBase.cpp:1326
virtual FIoFileReadRequest ReadDirect(FIoDirectReadRequestParams &&Params, FIoFileReadRequestCompleted &&OnCompleted) override
Definition PlatformIoDispatcherBase.cpp:1064
bool ProcessCompletedFileBlocks()
Definition PlatformIoDispatcherBase.cpp:1441
virtual void UpdatePriority(FIoFileReadRequest Request, int32 NewPriority) override
Definition PlatformIoDispatcherBase.cpp:1133
FIoQueue IoQueue
Definition PlatformIoDispatcherBase.h:543
virtual bool Tick() override
Definition PlatformIoDispatcherBase.h:510
virtual FIoStatus OnInitialize()
Definition PlatformIoDispatcherBase.cpp:1175
FIoFileBlockRequestList FileBlocksToComplete
Definition PlatformIoDispatcherBase.h:545
FPlatformIoDispatcherStats Stats
Definition PlatformIoDispatcherBase.h:537
virtual void CancelAllRequests(FIoFileHandle FileHandle) override
Definition PlatformIoDispatcherBase.cpp:1115
FIoEncodedBlockRequestList BlocksToDecode
Definition PlatformIoDispatcherBase.h:546
FIoChunkBlockMemoryPool ChunkBlockMemoryPool
Definition PlatformIoDispatcherBase.h:541
UE::FMutex EncodedBlockMutex
Definition PlatformIoDispatcherBase.h:549
bool ProcessBlocksToDecode()
Definition PlatformIoDispatcherBase.cpp:1463
virtual FIoStatus Initialize() override final
Definition PlatformIoDispatcherBase.cpp:929
void EnqueueCompletedFileBlock(FIoFileBlockRequest &FileBlockRequest)
Definition PlatformIoDispatcherBase.cpp:1190
void ScatterDecodedBlock(FIoEncodedBlockRequest &EncodedBlockRequest)
Definition PlatformIoDispatcherBase.cpp:1380
bool ProcessBlocksToComplete()
Definition PlatformIoDispatcherBase.cpp:1564
virtual bool Init() override final
Definition PlatformIoDispatcherBase.cpp:910
virtual uint32 OnIoThreadEntry()=0
FPlatformIoDispatcherRequestMgr RequestMgr
Definition PlatformIoDispatcherBase.h:540
UE::FMutex FileBlockMutex
Definition PlatformIoDispatcherBase.h:548
uint32 FileBlockSize
Definition PlatformIoDispatcherBase.h:550
bool ProcessBlocks()
Definition PlatformIoDispatcherBase.cpp:1602
void CompleteDecodedBlock(FIoEncodedBlockRequest &EncodedBlockRequest, FIoPlatformReadRequestList &OutCompletedReadRequests)
Definition PlatformIoDispatcherBase.cpp:1404
std::atomic_bool bStopRequested
Definition PlatformIoDispatcherBase.h:552
virtual void DeleteRequest(FIoFileReadRequest Request) override
Definition PlatformIoDispatcherBase.cpp:1165
FIoFileBlockCache FileBlockCache
Definition PlatformIoDispatcherBase.h:544
uint32 GetNextFileId()
Definition PlatformIoDispatcherBase.cpp:1180
virtual void CancelRequest(FIoFileReadRequest Request) override
Definition PlatformIoDispatcherBase.cpp:1069
void ProcessDecodedBlock(FIoEncodedBlockRequest &EncodedBlockRequest, FIoChunkBlockDecodeResult &&DecodeResult, FIoChunkBlockDecodeRequest &NextDecodeRequest)
Definition PlatformIoDispatcherBase.cpp:1352
void CompleteFileBlock(FIoFileBlockRequest &FileBlockRequest)
Definition PlatformIoDispatcherBase.cpp:1208
virtual FIoPlatformFileInfo GetPlatformFileInfo(FIoFileHandle FileHandle)=0
bool bMultithreaded
Definition PlatformIoDispatcherBase.h:551
virtual FIoFileReadRequest ScatterGather(FIoScatterGatherRequestParams &&Params, FIoFileReadRequestCompleted &&OnCompleted) override
Definition PlatformIoDispatcherBase.cpp:941
virtual ~FPlatformIoDispatcherBase()
Definition PlatformIoDispatcherBase.cpp:899
Definition PlatformIoDispatcherBase.h:432
FIoFileBlockRequest & CreateFileBlockRequest()
Definition PlatformIoDispatcherBase.cpp:716
FPlatformIoDispatcherRequestMgr()
Definition PlatformIoDispatcherBase.cpp:547
bool TryCancelReadRequest(FIoPlatformReadRequest &ReadRequest, bool &bAnyBlockCancelled)
Definition PlatformIoDispatcherBase.cpp:585
void AddFileBlockRequest(FIoPlatformReadRequest &ReadRequest, FIoFileBlockRequest &FileBlockRequest)
Definition PlatformIoDispatcherBase.cpp:742
FIoPlatformReadRequest & CreateDirectReadRequest(FIoFileReadRequestCompleted &&OnCompleted, FIoBuffer &Dst, uint64 DstSize, uint64 FileOffset, void *UserData)
Definition PlatformIoDispatcherBase.cpp:568
void Unlock()
Definition PlatformIoDispatcherBase.h:463
FIoFileBlockRequest & GetOrCreateFileBlockRequest(FIoPlatformReadRequest &ReadRequest, FIoBlockKey BlockKey, bool &bCreated)
Definition PlatformIoDispatcherBase.cpp:696
bool TryCancelAllReadRequests(FIoFileHandle FileHandle)
Definition PlatformIoDispatcherBase.cpp:650
FIoPlatformReadRequest & CreateScatterGatherRequest(FIoFileReadRequestCompleted &&OnCompleted, FIoBuffer &Dst, uint64 DstSize, void *UserData, uint32 FileId)
Definition PlatformIoDispatcherBase.cpp:551
FIoEncodedBlockRequest & GetOrCreateEncodedBlockRequest(FIoBlockKey BlockKey, bool &bCreated)
Definition PlatformIoDispatcherBase.cpp:752
void Lock()
Definition PlatformIoDispatcherBase.h:462
FIoFileBlockRequest * GetFileBlockRequest(FIoBlockKey BlockKey)
Definition PlatformIoDispatcherBase.cpp:721
void GetFileBlockRequests(FIoPlatformReadRequest &ReadRequest, FTempArray< FIoFileBlockRequest * > &OutRequests)
Definition PlatformIoDispatcherBase.cpp:726
Definition PlatformIoDispatcherStats.h:41
Definition PlatformIoDispatcher.h:213
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: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
Definition PlatformIoDispatcherBase.h:251
uint32 FileId
Definition PlatformIoDispatcherBase.h:253
int64 FileSize
Definition PlatformIoDispatcherBase.h:252
uint32 CompressionBlockSize
Definition PlatformIoDispatcherBase.h:254
Definition PlatformIoDispatcherBase.h:154
uint64 FileOffset
Definition PlatformIoDispatcherBase.h:155
Definition PlatformIoDispatcherBase.h:147
FIoFileBlockLink FileBlockLink
Definition PlatformIoDispatcherBase.h:148
std::atomic_uint16_t RemainingBlocks
Definition PlatformIoDispatcherBase.h:150
uint32 FileId
Definition PlatformIoDispatcherBase.h:149
Definition PlatformIoDispatcherBase.h:139
FIoPlatformReadRequest(FIoFileReadRequestCompleted &&InOnCompleted, FIoBuffer &InDst, uint64 InDstSize, void *InUserData, uint32 InFileId)
Definition PlatformIoDispatcherBase.h:158
FIoPlatformReadRequest * Next
Definition PlatformIoDispatcherBase.h:199
FDirectRead DirectRead
Definition PlatformIoDispatcherBase.h:197
FIoFileReadRequestCompleted OnCompleted
Definition PlatformIoDispatcherBase.h:193
bool IsScatterGather() const
Definition PlatformIoDispatcherBase.h:190
uint32 RefCount
Definition PlatformIoDispatcherBase.h:203
bool IsDirectRead() const
Definition PlatformIoDispatcherBase.h:191
uint32 FailedBlockId
Definition PlatformIoDispatcherBase.h:204
FIoPlatformReadRequest(FIoFileReadRequestCompleted &&InOnCompleted, FIoBuffer &InDst, uint64 InDstSize, uint64 InFileOffset, void *InUserData)
Definition PlatformIoDispatcherBase.h:174
void * UserData
Definition PlatformIoDispatcherBase.h:202
EType Type
Definition PlatformIoDispatcherBase.h:206
EType
Definition PlatformIoDispatcherBase.h:141
std::atomic< EIoErrorCode > ErrorCode
Definition PlatformIoDispatcherBase.h:205
FIoBuffer & Dst
Definition PlatformIoDispatcherBase.h:200
uint64 DstSize
Definition PlatformIoDispatcherBase.h:201
FScatterGather ScatterGather
Definition PlatformIoDispatcherBase.h:196
Definition PlatformIoDispatcher.h:206