UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
IoStoreOnDemand.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "Containers/Map.h"
9#include "IO/OnDemandError.h"
11#include "IO/OnDemandToc.h"
12#include "IO/PackageId.h"
13#include "Misc/EnumClassFlags.h"
15#include "Misc/Optional.h"
18#include "UObject/NameTypes.h"
19
20#define UE_API IOSTOREONDEMANDCORE_API
21
23
24// Custom initialization allows users to control when
25// the system should be initialized.
26#if !defined(UE_IAS_CUSTOM_INITIALIZATION)
27 #define UE_IAS_CUSTOM_INITIALIZATION 0
28#endif
29
32
33namespace UE::IoStore
34{
35
40
43{
44public:
62 virtual ~FOnDemandRequest() = default;
64 virtual EStatus GetStatus() const = 0;
66 bool IsNone() const { return EStatus::None == GetStatus(); }
68 bool IsPending() const { return EStatus::Pending == GetStatus(); }
72 bool IsOk() const { return EStatus::Ok == GetStatus(); }
74 bool IsCancelled() const { return EStatus::Cancelled == GetStatus(); }
76 bool IsError() const { return EStatus::Error == GetStatus(); }
78 bool IsCompleted() const { return static_cast<uint8>(EStatus::Pending) < static_cast<uint8>(GetStatus()); }
79
80protected:
81 FOnDemandRequest() = default;
82};
83
88{
89public:
95 void Reset() { Handle.Reset(); }
97 bool IsValid() const { return Handle.IsValid(); }
105 UE_API friend FString LexToString(const FOnDemandContentHandle& Handle);
106
108 {
109 return Handle == Other.Handle;
110 }
111
112private:
113 friend class FOnDemandIoStore;
116};
117
130
141
144{
146 StreamOnDemand = 1 << 0,
148 InstallOnDemand = 1 << 1,
150 CallbackOnGameThread = 1 << 2,
152 WithSoftReferences = 1 << 3,
154 ForceNonSecureHttp = 1 << 4,
155};
157
190
193{
195 FString MountId;
199 double DurationInSeconds = 0.0;
200
207 UE_API void LogResult();
208};
209
212
215{
217 None = 0,
219 CallbackOnGameThread = 1 << 0,
221 InstallSoftReferences = 1 << 1,
225 DoNotDownload = 1 << 3,
228};
230
249
252{
259
261 {
263 TotalInstallSize += Other.TotalInstallSize;
264 CurrentInstallSize += Other.CurrentInstallSize;
265 return *this;
266 }
267
269 {
270 return TotalInstallSize;
271 }
272
274 {
275 return CurrentInstallSize;
276 }
277
278 float GetRelativeProgress() const
279 {
280 const double Progress = (TotalInstallSize > 0) ?
282 0;
283
284 return float(Progress);
285 }
286
288 {
289 const double Progress = (TotalContentSize > 0) ?
290 FMath::Clamp(double(GetCachedSize()) / double(TotalContentSize), 0.0, 1.0) :
291 0;
292
293 return float(Progress);
294 }
295
300
302 {
303 return TotalContentSize;
304 }
305};
306
309
322
325
355
358{
360 None = 0,
362 CallbackOnGameThread = 1 << 0,
364 Defrag = 1 << 1,
365};
367
368
376
379{
381 bool IsOk() const { return Error.IsSet() == false; }
383 double DurationInSeconds = 0.0;
386};
387
390
393{
395 None = 0,
397 CallbackOnGameThread = 1 << 0,
398};
400
401
409
412{
414 bool IsOk() const { return Error.IsSet() == false; }
416 double DurationInSeconds = 0.0;
419};
420
423
426{
428 None = 0,
430 IncludeSoftReferences = 1 << 0,
433};
435
450
459
462{
464 None = 0,
466 DumpHandlesToLog = 1 << 0,
468 DumpHandlesToResults = 1 << 1,
469};
471
477
484
499
508
515
518{
520 bool IsOk() const { return Error.IsSet() == false; }
522 double DurationInSeconds = 0.0;
525};
526
529
532{
533public:
535 virtual ~IAnalyticsRecording() = default;
536
539
541 virtual void StopRecording() = 0;
542};
543
549
554
557{
559 Default = 0,
561 OptionalBulkDataDisabled = (1 << 0)
562};
564
567{
568public:
570 virtual ~IOnDemandIoStore() = default;
584 virtual void Mount(FOnDemandMountArgs&& Args, FOnDemandMountCompleted&& OnCompleted) = 0;
589 virtual FIoStatus Unmount(FStringView MountId) = 0;
599 FOnDemandInstallCompleted&& OnCompleted,
600 FOnDemandInstallProgressed&& OnProgress = nullptr) = 0;
606 virtual void Purge(FOnDemandPurgeArgs&& Args, FOnDemandPurgeCompleted&& OnCompleted) = 0;
612 virtual void Defrag(FOnDemandDefragArgs&& Args, FOnDemandDefragCompleted&& OnCompleted) = 0;
617 virtual void Verify(FOnDemandVerifyCacheCompleted&& OnCompleted) = 0;
632 virtual void DumpMountedContainersToLog() const = 0;
634 virtual bool IsOnDemandStreamingEnabled() const = 0;
652
653private:
655 virtual FIoStatus Initialize() = 0;
657 virtual void CancelInstallRequest(FSharedInternalInstallRequest InstallRequest) = 0;
659 virtual void UpdateInstallRequestPriority(FSharedInternalInstallRequest InstallRequest, int32 NewPriority) = 0;
661 virtual void ReleaseContent(class FOnDemandInternalContentHandle& ContentHandle) = 0;
662
666};
667
680
685
686} // namespace UE::IoStore
687
688#undef UE_API
OODEFFUNC typedef void(OODLE_CALLBACK t_fp_OodleCore_Plugin_Free)(void *ptr)
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
FPlatformTypes::UPTRINT UPTRINT
An unsigned integer the same size as a pointer.
Definition Platform.h:1146
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
#define ENUM_CLASS_FLAGS(Enum)
Definition EnumClassFlags.h:6
#define UE_API
Definition IoStoreOnDemand.h:20
#define DECLARE_LOG_CATEGORY_EXTERN(CategoryName, DefaultVerbosity, CompileTimeVerbosity)
Definition LogMacros.h:361
#define UE_API
Definition SColorGradingComponentViewer.h:12
USkinnedMeshComponent float
Definition SkinnedMeshComponent.h:60
uint8_t uint8
Definition binka_ue_file_header.h:8
Definition IoStatus.h:60
Definition NameTypes.h:617
Definition IModularFeature.h:12
Definition Array.h:670
Definition IoStatus.h:101
Definition UnrealString.h.inl:34
UE_FORCEINLINE_HINT void Reset()
Definition SharedPointer.h:1120
UE_FORCEINLINE_HINT const bool IsValid() const
Definition SharedPointer.h:1085
Definition UniquePtr.h:107
Definition IoStoreOnDemand.cpp:454
Definition IoStoreOnDemand.h:88
bool IsValid() const
Definition IoStoreOnDemand.h:97
UE_API FOnDemandContentHandle()
Definition IoStoreOnDemandInternals.cpp:41
static UE_API FOnDemandContentHandle Create()
Definition IoStoreOnDemandInternals.cpp:49
UE_API friend FString LexToString(const FOnDemandContentHandle &Handle)
Definition IoStoreOnDemandInternals.cpp:68
void Reset()
Definition IoStoreOnDemand.h:95
UE_API ~FOnDemandContentHandle()
Definition IoStoreOnDemandInternals.cpp:45
bool operator==(FOnDemandContentHandle &Other) const
Definition IoStoreOnDemand.h:107
Definition OnDemandContentInstaller.h:63
Definition OnDemandHostGroup.h:18
static UE_API FName DefaultName
Definition OnDemandHostGroup.h:50
Definition IoStoreOnDemand.h:329
UE_API FOnDemandInstallRequest()
Definition IoStoreOnDemandInternals.cpp:74
virtual UE_API EStatus GetStatus() const override
Definition IoStoreOnDemandInternals.cpp:101
UE_API FOnDemandInstallRequest & operator=(FOnDemandInstallRequest &&)
Definition IoStoreOnDemandInternals.cpp:94
UE_API ~FOnDemandInstallRequest()
Definition IoStoreOnDemandInternals.cpp:84
UE_API void Cancel()
Definition IoStoreOnDemandInternals.cpp:106
UE_API void UpdatePriority(int32 NewPriority)
Definition IoStoreOnDemandInternals.cpp:117
Definition IoStoreOnDemandInternals.h:43
Definition OnDemandIoStore.h:332
Definition IoStoreOnDemand.h:43
bool IsOk() const
Definition IoStoreOnDemand.h:72
bool IsError() const
Definition IoStoreOnDemand.h:76
virtual EStatus GetStatus() const =0
bool IsPendingCallbacks() const
Definition IoStoreOnDemand.h:70
bool IsNone() const
Definition IoStoreOnDemand.h:66
bool IsCompleted() const
Definition IoStoreOnDemand.h:78
bool IsCancelled() const
Definition IoStoreOnDemand.h:74
bool IsPending() const
Definition IoStoreOnDemand.h:68
virtual ~FOnDemandRequest()=default
EStatus
Definition IoStoreOnDemand.h:47
@ PendingCallbacks
Definition IoStoreOnDemand.h:53
@ Ok
Definition IoStoreOnDemand.h:55
@ Pending
Definition IoStoreOnDemand.h:51
@ Cancelled
Definition IoStoreOnDemand.h:57
@ Error
Definition IoStoreOnDemand.h:59
@ None
Definition IoStoreOnDemand.h:49
Definition IoStoreOnDemand.h:532
virtual void Report(TArray< FAnalyticsEventAttribute > &OutAnalyticsArray) const =0
virtual ~IAnalyticsRecording()=default
Definition IoStoreOnDemand.h:671
virtual IOnDemandIoStore * CreateInstance()=0
virtual void DestroyInstance(IOnDemandIoStore *Instance)=0
static UE_API FName FeatureName
Definition IoStoreOnDemand.h:674
Definition IoStoreOnDemand.h:567
virtual void Mount(FOnDemandMountArgs &&Args, FOnDemandMountCompleted &&OnCompleted)=0
virtual bool IsOnDemandStreamingEnabled() const =0
virtual FOnDemandInstallRequest Install(FOnDemandInstallArgs &&Args, FOnDemandInstallCompleted &&OnCompleted, FOnDemandInstallProgressed &&OnProgress=nullptr)=0
virtual FIoStatus InitializePostHotfix()=0
virtual FOnDemandCacheUsage GetCacheUsage(const FOnDemandGetCacheUsageArgs &Args) const =0
virtual void ReportAnalytics(TArray< FAnalyticsEventAttribute > &OutAnalyticsArray) const =0
virtual FIoStatus GetInstallSizesByMountId(const FOnDemandGetInstallSizeArgs &Args, TMap< FString, uint64 > &OutSizesByMountId) const =0
virtual void Verify(FOnDemandVerifyCacheCompleted &&OnCompleted)=0
virtual void SetStreamingOptions(EOnDemandStreamingOptions Options)=0
virtual void DumpMountedContainersToLog() const =0
virtual void Defrag(FOnDemandDefragArgs &&Args, FOnDemandDefragCompleted &&OnCompleted)=0
virtual FOnDemandRegisterHostGroupResult RegisterHostGroup(FOnDemandRegisterHostGroupArgs &&Args)=0
virtual void Purge(FOnDemandPurgeArgs &&Args, FOnDemandPurgeCompleted &&OnCompleted)=0
virtual TIoStatusOr< FOnDemandInstallSizeResult > GetInstallSize(const FOnDemandGetInstallSizeArgs &Args) const =0
virtual TUniquePtr< IAnalyticsRecording > StartAnalyticsRecording() const =0
virtual void OnImmediateAnalytic(FOnDemandImmediateAnalyticHandler EventHandler)=0
virtual ~IOnDemandIoStore()=default
virtual FIoStatus Unmount(FStringView MountId)=0
NO_LOGGING.
Definition Client.h:20
IOnDemandIoStore * TryGetOnDemandIoStore()
Definition IoStoreOnDemand.cpp:548
EOnDemandPurgeOptions
Definition IoStoreOnDemand.h:358
EOnDemandGetCacheUsageOptions
Definition IoStoreOnDemand.h:462
EOnDemandInstallOptions
Definition IoStoreOnDemand.h:215
EOnDemandStreamingOptions
Definition IoStoreOnDemand.h:557
EOnDemandDefragOptions
Definition IoStoreOnDemand.h:393
IOnDemandIoStore & GetOnDemandIoStore()
Definition IoStoreOnDemand.cpp:554
EOnDemandMountOptions
Definition IoStoreOnDemand.h:144
EOnDemandGetInstallSizeOptions
Definition IoStoreOnDemand.h:426
Definition AnalyticsEventAttribute.h:48
static constexpr UE_FORCEINLINE_HINT T Clamp(const T X, const T MinValue, const T MaxValue)
Definition UnrealMathUtility.h:592
Definition Optional.h:131
constexpr bool IsSet() const
Definition Optional.h:69
Definition IoStoreOnDemand.h:511
FOnDemandStreamingCacheUsage StreamingCache
Definition IoStoreOnDemand.h:513
FOnDemandInstallCacheUsage InstallCache
Definition IoStoreOnDemand.h:512
Definition IoStoreOnDemand.h:403
TOptional< uint64 > BytesToFree
Definition IoStoreOnDemand.h:407
Definition IoStoreOnDemand.h:412
bool IsOk() const
Definition IoStoreOnDemand.h:414
double DurationInSeconds
Definition IoStoreOnDemand.h:416
TOptional< UE::UnifiedError::FError > Error
Definition IoStoreOnDemand.h:418
Definition IoStoreOnDemand.h:474
EOnDemandGetCacheUsageOptions Options
Definition IoStoreOnDemand.h:475
Definition IoStoreOnDemand.h:438
EOnDemandGetInstallSizeOptions Options
Definition IoStoreOnDemand.h:446
FString MountId
Definition IoStoreOnDemand.h:440
TArray< FString > TagSets
Definition IoStoreOnDemand.h:442
FOnDemandContentHandle ContentHandle
Definition IoStoreOnDemand.h:448
TArray< FPackageId > PackageIds
Definition IoStoreOnDemand.h:444
Definition IoStoreOnDemand.h:551
TUniqueFunction< void(FOnDemandImmediateAnalytic)> EventHandler
Definition IoStoreOnDemand.h:552
Definition IoStoreOnDemand.h:545
FString EventName
Definition IoStoreOnDemand.h:546
TArray< FAnalyticsEventAttribute > AnalyticsArray
Definition IoStoreOnDemand.h:547
Definition IoStoreOnDemand.h:233
int32 Priority
Definition IoStoreOnDemand.h:245
EOnDemandInstallOptions Options
Definition IoStoreOnDemand.h:243
TArray< FPackageId > PackageIds
Definition IoStoreOnDemand.h:239
FSharedString DebugName
Definition IoStoreOnDemand.h:247
TArray< FString > TagSets
Definition IoStoreOnDemand.h:237
FString MountId
Definition IoStoreOnDemand.h:235
FOnDemandContentHandle ContentHandle
Definition IoStoreOnDemand.h:241
Definition IoStoreOnDemand.h:487
uint64 ReferencedBlockSize
Definition IoStoreOnDemand.h:490
uint64 TotalSize
Definition IoStoreOnDemand.h:489
uint64 FragmentedChunksSize
Definition IoStoreOnDemand.h:492
uint64 MaxSize
Definition IoStoreOnDemand.h:488
TArray< FOnDemandInstallHandleCacheUsage > ReferencedBytesByHandle
Definition IoStoreOnDemand.h:495
uint64 ReferencedSize
Definition IoStoreOnDemand.h:491
UE_API friend FStringBuilderBase & operator<<(FStringBuilderBase &Sb, const FOnDemandInstallCacheUsage &CacheUsage)
Definition IoStoreOnDemand.cpp:431
Definition IoStoreOnDemand.h:479
UPTRINT HandleId
Definition IoStoreOnDemand.h:480
uint64 ReferencedBytes
Definition IoStoreOnDemand.h:482
FSharedString DebugName
Definition IoStoreOnDemand.h:481
Definition IoStoreOnDemand.h:252
uint64 TotalContentSize
Definition IoStoreOnDemand.h:254
FOnDemandInstallProgress & Combine(const FOnDemandInstallProgress &Other)
Definition IoStoreOnDemand.h:260
uint64 GetTotalSize() const
Definition IoStoreOnDemand.h:301
uint64 TotalInstallSize
Definition IoStoreOnDemand.h:256
uint64 CurrentInstallSize
Definition IoStoreOnDemand.h:258
uint64 GetTotalDownloadSize() const
Definition IoStoreOnDemand.h:268
float GetAbsoluteProgress() const
Definition IoStoreOnDemand.h:287
uint64 GetCachedSize() const
Definition IoStoreOnDemand.h:296
uint64 GetAlreadyDownloadedSize() const
Definition IoStoreOnDemand.h:273
float GetRelativeProgress() const
Definition IoStoreOnDemand.h:278
Definition IoStoreOnDemand.h:312
bool IsOk() const
Definition IoStoreOnDemand.h:314
double DurationInSeconds
Definition IoStoreOnDemand.h:316
TOptional< UE::UnifiedError::FError > Error
Definition IoStoreOnDemand.h:320
FOnDemandInstallProgress Progress
Definition IoStoreOnDemand.h:318
Definition IoStoreOnDemand.h:453
uint64 InstallSize
Definition IoStoreOnDemand.h:455
TOptional< uint64 > DownloadSize
Definition IoStoreOnDemand.h:457
Definition IoStoreOnDemand.h:174
FString FilePath
Definition IoStoreOnDemand.h:182
FString TocRelativeUrl
Definition IoStoreOnDemand.h:180
FString MountId
Definition IoStoreOnDemand.h:178
EOnDemandMountOptions Options
Definition IoStoreOnDemand.h:188
TUniquePtr< FOnDemandToc > Toc
Definition IoStoreOnDemand.h:176
FName HostGroupName
Definition IoStoreOnDemand.h:184
FOnDemandHostGroup HostGroup
Definition IoStoreOnDemand.h:186
Definition IoStoreOnDemand.h:193
UE_API void LogResult()
Definition IoStoreOnDemandInternals.cpp:11
double DurationInSeconds
Definition IoStoreOnDemand.h:199
FString MountId
Definition IoStoreOnDemand.h:195
FIoStatus Status
Definition IoStoreOnDemand.h:197
Definition IoStoreOnDemand.h:370
TOptional< uint64 > BytesToPurge
Definition IoStoreOnDemand.h:374
Definition IoStoreOnDemand.h:379
double DurationInSeconds
Definition IoStoreOnDemand.h:383
TOptional< UE::UnifiedError::FError > Error
Definition IoStoreOnDemand.h:385
bool IsOk() const
Definition IoStoreOnDemand.h:381
Definition IoStoreOnDemand.h:120
TArray< FString > HostNames
Definition IoStoreOnDemand.h:124
FString TestUrl
Definition IoStoreOnDemand.h:126
FName HostGroupName
Definition IoStoreOnDemand.h:122
bool bUseSecureHttp
Definition IoStoreOnDemand.h:128
Definition IoStoreOnDemand.h:133
TOptional< UE::UnifiedError::FError > Error
Definition IoStoreOnDemand.h:139
bool IsOk() const
Definition IoStoreOnDemand.h:135
FOnDemandHostGroup HostGroup
Definition IoStoreOnDemand.h:137
Definition IoStoreOnDemand.h:502
uint64 MaxSize
Definition IoStoreOnDemand.h:503
UE_API friend FStringBuilderBase & operator<<(FStringBuilderBase &Sb, const FOnDemandStreamingCacheUsage &CacheUsage)
Definition IoStoreOnDemand.cpp:444
uint64 TotalSize
Definition IoStoreOnDemand.h:504
Definition IoStoreOnDemand.h:518
TOptional< UE::UnifiedError::FError > Error
Definition IoStoreOnDemand.h:524
bool IsOk() const
Definition IoStoreOnDemand.h:520
double DurationInSeconds
Definition IoStoreOnDemand.h:522