UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
AsyncLoadingPrivate.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "CoreMinimal.h"
7#include "UObject/Linker.h"
9
11
12class FAsyncArchive final: public FArchive
13{
14public:
23 enum class ELoadError : uint8
24 {
25 Unknown,
30 };
31
34
36 COREUOBJECT_API virtual bool Close() override;
39 COREUOBJECT_API virtual void Serialize(void* Data, int64 Num) override;
40 FORCEINLINE virtual int64 Tell() override
41 {
42#if DEVIRTUALIZE_FLinkerLoad_Serialize
44#else
45 return CurrentPos;
46#endif
47 }
48 COREUOBJECT_API virtual int64 TotalSize() override;
49 COREUOBJECT_API virtual void Seek(int64 InPos) override;
50 COREUOBJECT_API virtual void FlushCache() override;
51 virtual FString GetArchiveName() const override
52 {
53 return PackagePath.GetDebugName();
54 }
55
57 COREUOBJECT_API bool PrecacheWithTimeLimit(int64 PrecacheOffset, int64 PrecacheSize, bool bUseTimeLimit, bool bUseFullTimeLimit, double TickStartTime, double TimeLimit);
60 COREUOBJECT_API bool ReadyToStartReadingHeader(bool bUseTimeLimit, bool bUseFullTimeLimit, double TickStartTime, double TimeLimit);
64 COREUOBJECT_API void LogItem(const TCHAR* Item, int64 Offset = 0, int64 Size = 0, double StartTime = 0.0);
65
67 {
68 return bCookedForEDLInEditor;
69 }
70
72 {
73 return LoadError;
74 }
76 {
77 return bNeedsEngineVersionChecks;
78 }
79
80
81private:
82#if DEVIRTUALIZE_FLinkerLoad_Serialize
87
89
90#endif
91 COREUOBJECT_API void FirstExportStarting();
92 COREUOBJECT_API bool WaitRead(double TimeLimit = 0.0);
93 COREUOBJECT_API void CompleteRead();
94 COREUOBJECT_API void CancelRead();
95 COREUOBJECT_API void CompleteCancel();
96 COREUOBJECT_API bool WaitForIntialPhases(double TimeLimit = 0.0);
97 COREUOBJECT_API void ReadCallback(bool bWasCancelled, IAsyncReadRequest*);
98 COREUOBJECT_API bool PrecacheInternal(int64 PrecacheOffset, int64 PrecacheSize, bool bApplyMinReadSize = true, IAsyncReadRequest* Read = nullptr);
99
100 FORCEINLINE int64 TotalSizeOrMaxInt64IfNotReady()
101 {
102
103 return SizeRequestPtr ? MAX_int64 : (FileSize + HeaderSizeWhenReadingExportsFromSplitFile);
104 }
105
106 IAsyncReadFileHandle* Handle;
107 IAsyncReadRequest* SizeRequestPtr;
108 IAsyncReadRequest* EditorPrecacheRequestPtr;
109
110 IAsyncReadRequest* SummaryRequestPtr;
111 IAsyncReadRequest* SummaryPrecacheRequestPtr;
112
113 IAsyncReadRequest* ReadRequestPtr;
114 IAsyncReadRequest* CanceledReadRequestPtr;
115
117 uint8* PrecacheBuffer;
119 int64 FileSize;
121 int64 CurrentPos;
123 int64 PrecacheStartPos;
125 int64 PrecacheEndPos;
126
127 int64 ReadRequestOffset;
128 int64 ReadRequestSize;
129
130 int64 HeaderSize;
131 int64 HeaderSizeWhenReadingExportsFromSplitFile;
132
133 ELoadPhase LoadPhase;
134 ELoadError LoadError;
135
137 bool bCookedForEDLInEditor;
139 bool bNeedsEngineVersionChecks;
140
141 FAsyncFileCallBack ReadCallbackFunction;
143 FPackagePath PackagePath;
144 double OpenTime;
145 double SummaryReadTime;
146 double ExportReadTime;
147
148 TFunction<void()> SummaryReadyCallback;
149 FAsyncFileCallBack ReadCallbackFunctionForLinkerLoad;
150
151 FLinkerLoad* OwnerLinker;
152};
153
160 : public FArchiveProxy
161{
162public:
164
165 COREUOBJECT_API virtual int64 Tell() override;
166 COREUOBJECT_API virtual void Seek(int64 Position) override;
167
168private:
169 int64 ExportSerialOffset;
170 int64 ExportSerialSize;
171 bool bExportsCookedToSeparateArchive;
172};
173
OODEFFUNC typedef void(OODLE_CALLBACK t_fp_OodleCore_Plugin_Free)(void *ptr)
#define FORCEINLINE
Definition AndroidPlatform.h:140
ECompressionFlags
Definition CompressionFlags.h:13
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
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define DECLARE_LOG_CATEGORY_EXTERN(CategoryName, DefaultVerbosity, CompileTimeVerbosity)
Definition LogMacros.h:361
@ Num
Definition MetalRHIPrivate.h:234
#define MAX_int64
Definition NumericLimits.h:26
uint32 Offset
Definition VulkanMemory.cpp:4033
uint32 Size
Definition VulkanMemory.cpp:4034
uint8_t uint8
Definition binka_ue_file_header.h:8
Definition ArchiveProxy.h:19
Definition Archive.h:1208
FFastPathLoadBuffer * ActiveFPLB
Definition Archive.h:823
Definition AsyncLoadingPrivate.h:13
COREUOBJECT_API void FlushPrecacheBlock()
Definition AsyncLoading.cpp:7869
virtual COREUOBJECT_API bool Close() override
Definition AsyncLoading.cpp:7943
ELoadError GetLoadError() const
Definition AsyncLoadingPrivate.h:71
COREUOBJECT_API bool ReadyToStartReadingHeader(bool bUseTimeLimit, bool bUseFullTimeLimit, double TickStartTime, double TimeLimit)
Definition AsyncLoading.cpp:8452
virtual FORCEINLINE int64 Tell() override
Definition AsyncLoadingPrivate.h:40
ELoadError
Definition AsyncLoadingPrivate.h:24
virtual FString GetArchiveName() const override
Definition AsyncLoadingPrivate.h:51
bool NeedsEngineVersionChecks() const
Definition AsyncLoadingPrivate.h:75
ELoadPhase
Definition AsyncLoadingPrivate.h:16
COREUOBJECT_API void EndReadingHeader()
Definition AsyncLoading.cpp:8440
COREUOBJECT_API bool PrecacheWithTimeLimit(int64 PrecacheOffset, int64 PrecacheSize, bool bUseTimeLimit, bool bUseFullTimeLimit, double TickStartTime, double TimeLimit)
Definition AsyncLoading.cpp:8371
COREUOBJECT_API void LogItem(const TCHAR *Item, int64 Offset=0, int64 Size=0, double StartTime=0.0)
Definition AsyncLoading.cpp:756
COREUOBJECT_API IAsyncReadRequest * MakeEventDrivenPrecacheRequest(int64 Offset, int64 BytesToRead, FAsyncFileCallBack *CompleteCallback)
Definition AsyncLoading.cpp:8318
bool IsCookedForEDLInEditor() const
Definition AsyncLoadingPrivate.h:66
COREUOBJECT_API void StartReadingHeader()
Definition AsyncLoading.cpp:8425
virtual COREUOBJECT_API void FlushCache() override
Definition AsyncLoading.cpp:7888
virtual COREUOBJECT_API ~FAsyncArchive()
Definition AsyncLoading.cpp:7757
virtual COREUOBJECT_API int64 TotalSize() override
Definition AsyncLoading.cpp:7957
virtual COREUOBJECT_API bool Precache(int64 PrecacheOffset, int64 PrecacheSize) override
Definition AsyncLoading.cpp:8404
virtual COREUOBJECT_API bool SetCompressionMap(TArray< FCompressedChunk > *CompressedChunks, ECompressionFlags CompressionFlags) override
Definition AsyncLoading.cpp:7951
COREUOBJECT_API bool PrecacheForEvent(IAsyncReadRequest *Read, int64 PrecacheOffset, int64 PrecacheSize)
Definition AsyncLoading.cpp:8418
Definition AsyncLoadingPrivate.h:161
virtual COREUOBJECT_API int64 Tell() override
Definition AsyncLoading.cpp:8658
Definition LinkerLoad.h:124
Definition PackagePath.h:89
COREUOBJECT_API FString GetDebugName() const
Definition PackagePath.cpp:345
Definition AsyncFileHandle.h:211
Definition AsyncFileHandle.h:31
Definition Array.h:670
Definition AndroidPlatformMisc.h:14
const uint8 * StartFastPathLoadBuffer
Definition Archive.h:807
const uint8 * OriginalFastPathLoadBuffer
Definition Archive.h:809