UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
UE::IoStore Namespace Reference

NO_LOGGING. More...

Namespaces

namespace  Commands
 
namespace  Config
 
namespace  CVars
 
namespace  HTTP
 
namespace  HttpIoDispatcher
 
namespace  JournaledCache
 
namespace  Private
 

Classes

class  FBackendStatus
 
struct  FBitWindow
 
struct  FCas
 
struct  FCasBlockId
 
struct  FCasBlockInfo
 
struct  FCasJournal
 
struct  FCasLocation
 
struct  FCasSnapshot
 
struct  FChunkInfo
 
struct  FChunkLookup
 
struct  FChunkRequest
 
struct  FChunkRequestParams
 
struct  FContainer
 
struct  FContainerPartition
 
class  FDiskCacheGovernor
 
struct  FDistributedEndpointUrl
 
class  FDistributionEndpoints
 
class  FFileIoDispatcherBackend
 
class  FFileIoStore
 
class  FHostGroupManager
 
class  FHttpIoDispatcherBackend
 
struct  FHttpRequest
 
struct  FIasCacheConfig
 
class  FIASHostGroup
 
class  FIoStoreOnDemandCoreModule
 
class  FIoStoreOnDemandModule
 
class  FJournaledCache
 
class  FMappedFileProxy
 
class  FMultiEndpointHttpClient
 
struct  FMultiEndpointHttpClientConfig
 
struct  FMultiEndpointHttpClientResponse
 
struct  FOnDemandCacheUsage
 
struct  FOnDemandChunkEntry
 
struct  FOnDemandChunkEntryReferences
 
struct  FOnDemandChunkInfo
 
struct  FOnDemandContainer
 
struct  FOnDemandContainerChunkEntryReferences
 
class  FOnDemandContentHandle
 
class  FOnDemandContentInstaller
 
class  FOnDemandContentInstallerStats
 
class  FOnDemandDebugCommands
 
struct  FOnDemandDefragArgs
 
struct  FOnDemandDefragResult
 
struct  FOnDemandEndpointConfig
 
struct  FOnDemandFlushLastAccessResult
 
struct  FOnDemandGetCacheUsageArgs
 
struct  FOnDemandGetInstallSizeArgs
 
class  FOnDemandHostGroup
 
class  FOnDemandHttpThread
 
struct  FOnDemandImmediateAnalytic
 
struct  FOnDemandImmediateAnalyticHandler
 
struct  FOnDemandInstallArgs
 
class  FOnDemandInstallCache
 
struct  FOnDemandInstallCacheConfig
 
class  FOnDemandInstallCacheStats
 
struct  FOnDemandInstallCacheStorageUsage
 
struct  FOnDemandInstallCacheUsage
 
struct  FOnDemandInstallHandleCacheUsage
 
struct  FOnDemandInstallProgress
 
class  FOnDemandInstallRequest
 
struct  FOnDemandInstallResult
 
struct  FOnDemandInstallSizeResult
 
class  FOnDemandInternalContentHandle
 
class  FOnDemandInternalInstallRequest
 
class  FOnDemandIoBackend
 
class  FOnDemandIoBackendStats
 
class  FOnDemandIoStore
 
class  FOnDemandIoStoreFactory
 
struct  FOnDemandMountArgs
 
struct  FOnDemandMountResult
 
class  FOnDemandPackageStoreBackend
 
struct  FOnDemandPurgeArgs
 
struct  FOnDemandPurgeResult
 
struct  FOnDemandRegisterHostGroupArgs
 
struct  FOnDemandRegisterHostGroupResult
 
class  FOnDemandRequest
 
struct  FOnDemandStreamingCacheUsage
 
struct  FOnDemandTagSet
 
struct  FOnDemandToc
 
struct  FOnDemandTocAdditionalFile
 
struct  FOnDemandTocContainerEntry
 
struct  FOnDemandTocEntry
 
struct  FOnDemandTocHeader
 
struct  FOnDemandTocSentinel
 
struct  FOnDemandTocTagSet
 
struct  FOnDemandTocTagSetPackageList
 
struct  FOnDemandVerifyCacheResult
 
struct  FOnDemandWeakContentHandle
 
struct  FResolvedRequest
 
struct  FTocMeta
 
class  IAnalyticsRecording
 
class  IFileIoDispatcherBackend
 
class  IIasCache
 
class  IOnDemandHttpIoDispatcher
 
class  IOnDemandHttpIoDispatcherBackend
 
class  IOnDemandInstallCache
 
class  IOnDemandIoDispatcherBackend
 
class  IOnDemandIoStore
 
class  IOnDemandIoStoreFactory
 
class  IOnDemandPackageStoreBackend
 
class  TThreadSafeIntrusiveQueue
 

Typedefs

using FSharedOnDemandContainer = TSharedPtr< struct FOnDemandContainer, ESPMode::ThreadSafe >
 
using FUniqueFileHandle = TUniquePtr< IFileHandle >
 
using FSharedFileHandle = TSharedPtr< IFileHandle >
 
using FSharedAsyncFileHandle = TSharedPtr< IAsyncReadFileHandle >
 
using FWeakAsyncFileHandle = TWeakPtr< IAsyncReadFileHandle >
 
using FSharedFileOpenAsyncResult = TValueOrError< FSharedAsyncFileHandle, FFileSystemError >
 
using FCasAddr = FHash96
 
using FCasBlockInfoMap = TMap< FCasBlockId, FCasBlockInfo >
 
using FSharedStreamingBackend = TSharedPtr< class IOnDemandIoDispatcherBackend >
 
using FSharedPackageStoreBackend = TSharedPtr< class IOnDemandPackageStoreBackend >
 
using FSharedInstallCache = TSharedPtr< class IOnDemandInstallCache >
 
using FSharedHttpIoBackend = TSharedPtr< class IOnDemandHttpIoDispatcherBackend >
 
using FOnDemandFlushLastAccessCompleted = TUniqueFunction< void(FOnDemandFlushLastAccessResult)>
 
using FSharedOnDemandIoStore = TSharedPtr< class IOnDemandIoStore, ESPMode::ThreadSafe >
 
using FWeakOnDemandIoStore = TWeakPtr< class IOnDemandIoStore, ESPMode::ThreadSafe >
 
using FSharedInternalContentHandle = TSharedPtr< class FOnDemandInternalContentHandle, ESPMode::ThreadSafe >
 
using FSharedInternalInstallRequest = TSharedPtr< class FOnDemandInternalInstallRequest, ESPMode::ThreadSafe >
 
using FOnDemandMountCompleted = TUniqueFunction< void(FOnDemandMountResult)>
 
using FOnDemandInstallProgressed = TFunction< void(FOnDemandInstallProgress)>
 
using FOnDemandInstallCompleted = TUniqueFunction< void(FOnDemandInstallResult)>
 
using FOnDemandPurgeCompleted = TUniqueFunction< void(FOnDemandPurgeResult)>
 
using FOnDemandDefragCompleted = TUniqueFunction< void(FOnDemandDefragResult)>
 
using FOnDemandVerifyCacheCompleted = TUniqueFunction< void(FOnDemandVerifyCacheResult)>
 
using FResult = TValueOrError< void, UE::UnifiedError::FError >
 
template<typename ResultType >
using TResult = TValueOrError< ResultType, UE::UnifiedError::FError >
 
using FUniqueContainer = TUniquePtr< FContainer >
 
using FRequestAllocator = TSingleThreadedSlabAllocator< FResolvedRequest >
 

Enumerations

enum class  EHttpRedirects { Disabled , Follow }
 
enum class  EMultiEndpointRequestFlags : uint8 { None , ResponseHeaders }
 
enum class  EHttpRequestType : uint8 { Streaming = 0 , Installed , NUM_SOURCES }
 
enum class  EHttpRequestTypeFilter : uint8 { None = 0 , Streaming = 1 << 0 , Installed = 1 << 1 , All = Streaming | Installed }
 
enum class  ECasTrackAccessType : uint8 { Always , Newer , Granular }
 
enum class  EOnDemandContainerFlags : uint8 {
  None = 0 , PendingEncryptionKey = (1 << 0) , Mounted = (1 << 1) , StreamOnDemand = (1 << 2) ,
  InstallOnDemand = (1 << 3) , Encrypted = (1 << 4) , WithSoftReferences = (1 << 5) , PendingHostGroup = (1 << 6) ,
  Last = PendingHostGroup
}
 
enum class  EOnDemandPackageStoreUpdateMode : uint8 { None , Full , ReferencedPackages }
 
enum class  EOnDemandMountOptions {
  StreamOnDemand = 1 << 0 , InstallOnDemand = 1 << 1 , CallbackOnGameThread = 1 << 2 , WithSoftReferences = 1 << 3 ,
  ForceNonSecureHttp = 1 << 4
}
 
enum class  EOnDemandInstallOptions {
  None = 0 , CallbackOnGameThread = 1 << 0 , InstallSoftReferences = 1 << 1 , InstallOptionalBulkData = 1 << 2 ,
  DoNotDownload = 1 << 3 , AllowMissingDependencies = 1 << 4
}
 
enum class  EOnDemandPurgeOptions { None = 0 , CallbackOnGameThread = 1 << 0 , Defrag = 1 << 1 }
 
enum class  EOnDemandDefragOptions { None = 0 , CallbackOnGameThread = 1 << 0 }
 
enum class  EOnDemandGetInstallSizeOptions { None = 0 , IncludeSoftReferences = 1 << 0 , IncludeOptionalBulkData = 1 << 1 }
 
enum class  EOnDemandGetCacheUsageOptions { None = 0 , DumpHandlesToLog = 1 << 0 , DumpHandlesToResults = 1 << 1 }
 
enum class  EOnDemandStreamingOptions { Default = 0 , OptionalBulkDataDisabled = (1 << 0) }
 
enum class  EOnDemandTocVersion : uint32 {
  Invalid = 0 , Initial = 1 , UTocHash = 2 , BlockHash32 = 3 ,
  NoRawHash = 4 , Meta = 5 , ContainerId = 6 , AdditionalFiles = 7 ,
  TagSets = 8 , ContainerFlags = 9 , TocFlags = 10 , HostGroupName = 11 ,
  ContainerHeader = 12 , LatestPlusOne , Latest = (LatestPlusOne - 1)
}
 
enum class  EOnDemandTocFlags : uint32 { None = 0 , InstallOnDemand = (1 << 0) , StreamOnDemand = (1 << 1) , Last = StreamOnDemand }
 
enum class  ETocMountOptions { None = 0 , WithSoftReferences = 1 << 0 }
 

Functions

TUniquePtr< IIasCacheMakeIasCache (const TCHAR *RootDir, const FIasCacheConfig &Config, class FDiskCacheGovernor &Governor)
 
void LatencyTest (FAnsiStringView InUrl, FAnsiStringView InPath, uint32 TimeOutMs, TArrayView< int32 > OutResults)
 
bool ConnectionTest (FAnsiStringView Url, FAnsiStringView Path, uint32 TimeoutMs)
 
int32 ConnectionTest (TConstArrayView< FAnsiString > Urls, FAnsiStringView Path, uint32 TimeoutMs, std::atomic_bool &bCancel)
 
FStringBuilderBaseoperator<< (FStringBuilderBase &Sb, FBackendStatus::EFlags StatusFlags)
 
FIoBuffer JoinIoBuffers (const FIoBuffer &LHS, const FIoBuffer &RHS)
 
FIoStatus LoadDefaultHttpCertificates (bool &bWasLoaded)
 
FMultiEndpointHttpClient::FHttpTicketId GenerateTicketId ()
 
bool IsHttpStatusOk (uint32 StatusCode)
 
bool IsHttpServerError (uint32 StatusCode)
 
 ENUM_CLASS_FLAGS (EMultiEndpointRequestFlags)
 
 DECLARE_MULTICAST_DELEGATE (FOnRecreateHttpClient)
 
TSharedPtr< IOnDemandHttpIoDispatcherMakeOnDemanHttpIoDispatcher (TUniquePtr< class IIasCache > &&Cache)
 
TSharedPtr< IOnDemandHttpIoDispatcherBackendMakeOnDemandHttpIoDispatcherBackend (FOnDemandIoStore &IoStore)
 
 ENUM_CLASS_FLAGS (EHttpRequestTypeFilter)
 
void OnHttpClientCVarChanged (IConsoleVariable *CVar)
 
double ToKiB (uint64 Value)
 
double ToMiB (uint64 Value)
 
TSharedPtr< IOnDemandInstallCacheMakeOnDemandInstallCache (FOnDemandIoStore &IoStore, const FOnDemandInstallCacheConfig &Config, FDiskCacheGovernor &Governor)
 
UE::Tasks::ETaskPriority GetRequestCompletionTaskPriority ()
 
TSharedPtr< IOnDemandIoDispatcherBackendMakeOnDemandIoDispatcherBackend (const FOnDemandEndpointConfig &Config, FOnDemandIoStore &IoStore, FOnDemandHttpThread &HttpClient, TUniquePtr< IIasCache > &&Cache)
 
 ENUM_CLASS_FLAGS (EOnDemandContainerFlags)
 
 IMPLEMENT_MODULE (UE::IoStore::FIoStoreOnDemandModule, IoStoreOnDemand)
 
TSharedPtr< IOnDemandPackageStoreBackendMakeOnDemandPackageStoreBackend (TWeakPtr< FOnDemandIoStore > OnDemandIoStore)
 
void OnDemandSetImmediateAnalyticHandler (FOnDemandImmediateAnalyticHandler &&EventHandler)
 
FStringBuilderBaseoperator<< (FStringBuilderBase &Sb, const FOnDemandInstallCacheUsage &CacheUsage)
 
FStringBuilderBaseoperator<< (FStringBuilderBase &Sb, const FOnDemandStreamingCacheUsage &CacheUsage)
 
 IMPLEMENT_MODULE (UE::IoStore::FIoStoreOnDemandCoreModule, IoStoreOnDemandCore)
 
IOnDemandIoStoreTryGetOnDemandIoStore ()
 
IOnDemandIoStoreGetOnDemandIoStore ()
 
FString LexToString (const FOnDemandContentHandle &Handle)
 
FArchiveoperator<< (FArchive &Ar, FTocMeta &Meta)
 
FCbWriteroperator<< (FCbWriter &Writer, const FTocMeta &Meta)
 
bool LoadFromCompactBinary (FCbFieldView Field, FTocMeta &OutMeta)
 
FArchiveoperator<< (FArchive &Ar, FOnDemandTocHeader &Header)
 
FCbWriteroperator<< (FCbWriter &Writer, const FOnDemandTocHeader &Header)
 
bool LoadFromCompactBinary (FCbFieldView Field, FOnDemandTocHeader &OutTocHeader)
 
FArchiveoperator<< (FArchive &Ar, FOnDemandTocEntry &Entry)
 
FCbWriteroperator<< (FCbWriter &Writer, const FOnDemandTocEntry &Entry)
 
bool LoadFromCompactBinary (FCbFieldView Field, FOnDemandTocEntry &OutTocEntry)
 
FArchiveoperator<< (FArchive &Ar, FOnDemandTocContainerEntry &ContainerEntry)
 
FCbWriteroperator<< (FCbWriter &Writer, const FOnDemandTocContainerEntry &ContainerEntry)
 
bool LoadFromCompactBinary (FCbFieldView Field, FOnDemandTocContainerEntry &OutContainer)
 
FArchiveoperator<< (FArchive &Ar, FOnDemandTocSentinel &Sentinel)
 
FArchiveoperator<< (FArchive &Ar, FOnDemandTocAdditionalFile &AdditionalFile)
 
FCbWriteroperator<< (FCbWriter &Writer, const FOnDemandTocAdditionalFile &AdditionalFile)
 
bool LoadFromCompactBinary (FCbFieldView Field, FOnDemandTocAdditionalFile &AdditionalFile)
 
FArchiveoperator<< (FArchive &Ar, FOnDemandTocTagSetPackageList &TagSet)
 
FCbWriteroperator<< (FCbWriter &Writer, const FOnDemandTocTagSetPackageList &TagSet)
 
bool LoadFromCompactBinary (FCbFieldView Field, FOnDemandTocTagSetPackageList &TagSet)
 
FArchiveoperator<< (FArchive &Ar, FOnDemandTocTagSet &TagSet)
 
FCbWriteroperator<< (FCbWriter &Writer, const FOnDemandTocTagSet &TagSet)
 
bool LoadFromCompactBinary (FCbFieldView Field, FOnDemandTocTagSet &TagSet)
 
FArchiveoperator<< (FArchive &Ar, FOnDemandToc &Toc)
 
FCbWriteroperator<< (FCbWriter &Writer, const FOnDemandToc &Toc)
 
bool LoadFromCompactBinary (FCbFieldView Field, FOnDemandToc &OutToc)
 
 ENUM_CLASS_FLAGS (EOnDemandMountOptions)
 
 ENUM_CLASS_FLAGS (EOnDemandInstallOptions)
 
 ENUM_CLASS_FLAGS (EOnDemandGetInstallSizeOptions)
 
 ENUM_CLASS_FLAGS (EOnDemandGetCacheUsageOptions)
 
 ENUM_CLASS_FLAGS (EOnDemandStreamingOptions)
 
 ENUM_CLASS_FLAGS (EOnDemandTocFlags)
 
TSharedPtr< IFileIoDispatcherBackendMakeFileIoDispatcherBackend ()
 
 ENUM_CLASS_FLAGS (ETocMountOptions)
 

Variables

int32 GIaxHttpVersion = 1
 
int32 GIasHttpErrorSampleCount = 8
 
float GIasHttpErrorHighWater = 0.5f
 
bool GIasHttpEnabled = true
 
bool GIasHttpOptionalBulkDataEnabled = true
 
int32 GIaxHttpMaxInflight = 1
 
bool GIaxWarnOnFailure = true
 
bool GAllowPartialContentRequests = true
 
FOnRecreateHttpClient OnRecreateHttpClient
 
int32 GIasHttpTimeOutMs = 10 * 1000
 
int32 GOnDemandBackendThreadPriorityIndex = 4
 
bool GIaxHttpEnableInflightCancellation = true
 
float GIaxInvalidUrlChance = 0.0
 
bool GIasPoisonCache = false
 
bool GHttpCacheEnabled = true
 
int32 GIasHttpRangeRequestMinSizeKiB = 128
 
bool GIasEnableWriteOnlyDecoding = false
 
int32 GIasHttpHealthCheckWaitTime = 3000
 
FAutoConsoleVariableRef CVarOnDemandBackendThreadPriority (TEXT("ias.onDemandBackendThreadPriority"), GOnDemandBackendThreadPriorityIndex, TEXT("Note that this is switchable at runtime"), ECVF_Default)
 
int32 GIasHttpConnectionCount = 4
 
int32 GIasHttpRecvBufKiB = -1
 
int32 GIasHttpSendBufKiB = -1
 
int32 GIasHttpRetryCount = -1
 
int32 GIasHttpFailTimeOutMs = 4 * 1000
 
bool GIasHttpAllowChunkedXfer = true
 
int32 GIasHttpConcurrentRequests = 8
 
int32 GIasHttpRateLimitKiBPerSecond = 0
 
int32 GIasHttpPollTimeoutMs = 17
 
const int32 GOnDemandBackendThreadPriorities [5]
 
FLaneEstateGRequestLaneEstate
 
int32 GIasHttpPrimaryEndpoint = 0
 
bool GIasReportAnalyticsEnabled = true
 
bool GIasEnableRequestHandleClear = true
 
bool GIasCancelationEnabled = true
 
FAutoConsoleVariableRef CVarCompleteMaterializeTaskPriority (TEXT("ias.CompleteMaterializeTaskPriority"), GCompleteMaterializeTaskPriority, TEXT("Task priority for the CompleteCacheRead task (0 = foreground/high, 1 = foreground/normal, 2 = background/high, 3 = background/normal, 4 = background/low)."), ECVF_Default)
 
IOnDemandIoStoreGOnDemandIoStore = nullptr
 
float GFileIoStoreUnmountTimeOutSeconds = 10.0f
 

Detailed Description

NO_LOGGING.

Typedef Documentation

◆ FCasAddr

◆ FCasBlockInfoMap

◆ FOnDemandDefragCompleted

◆ FOnDemandFlushLastAccessCompleted

◆ FOnDemandInstallCompleted

◆ FOnDemandInstallProgressed

◆ FOnDemandMountCompleted

◆ FOnDemandPurgeCompleted

◆ FOnDemandVerifyCacheCompleted

◆ FRequestAllocator

◆ FResult

◆ FSharedAsyncFileHandle

◆ FSharedFileHandle

◆ FSharedFileOpenAsyncResult

◆ FSharedHttpIoBackend

◆ FSharedInstallCache

◆ FSharedInternalContentHandle

◆ FSharedInternalInstallRequest

◆ FSharedOnDemandContainer

◆ FSharedOnDemandIoStore

◆ FSharedPackageStoreBackend

◆ FSharedStreamingBackend

◆ FUniqueContainer

◆ FUniqueFileHandle

◆ FWeakAsyncFileHandle

◆ FWeakOnDemandIoStore

◆ TResult

template<typename ResultType >
using UE::IoStore::TResult = typedef TValueOrError<ResultType, UE::UnifiedError::FError>

Enumeration Type Documentation

◆ ECasTrackAccessType

Enumerator
Always 
Newer 
Granular 

◆ EHttpRedirects

Enumerator
Disabled 

Redirects will be rejected and handled as failed requests.

Follow 

Follow redirects automatically.

◆ EHttpRequestType

Describes the system making the request

Enumerator
Streaming 
Installed 

IAS

NUM_SOURCES 

IAD

◆ EHttpRequestTypeFilter

Allows requests to be filtered by type

Enumerator
None 
Streaming 
Installed 

IAS

All 

IAD

◆ EMultiEndpointRequestFlags

Enumerator
None 
ResponseHeaders 

◆ EOnDemandContainerFlags

Enumerator
None 
PendingEncryptionKey 
Mounted 
StreamOnDemand 
InstallOnDemand 
Encrypted 
WithSoftReferences 
PendingHostGroup 
Last 

◆ EOnDemandDefragOptions

Options for controlling the behavior of the defrag request.

Enumerator
None 

No additional options.

CallbackOnGameThread 

Trigger callback on game thread.

◆ EOnDemandGetCacheUsageOptions

Options for controlling the behavior of the install size request.

Enumerator
None 

No additional options.

DumpHandlesToLog 

Dump Handle information to log

DumpHandlesToResults 

Dump Handle information to returned FOnDemandInstallCacheUsage

◆ EOnDemandGetInstallSizeOptions

Options for controlling the behavior of the install size request.

Enumerator
None 

No additional options.

IncludeSoftReferences 

Follow soft references when gathering packages to install.

IncludeOptionalBulkData 

Include optional bulk data.

◆ EOnDemandInstallOptions

Options for controlling the behavior of the install request.

Enumerator
None 

No additional options.

CallbackOnGameThread 

Trigger callback on game thread.

InstallSoftReferences 

Follow soft references when gathering packages to install.

InstallOptionalBulkData 

Install optional bulk data.

DoNotDownload 

Do not install any data, only succeed if all data is already cached.

AllowMissingDependencies 

Do not return an error if missing iochunk dependencies are missing.

◆ EOnDemandMountOptions

Options for controlling the behavior of mounted container(s).

Enumerator
StreamOnDemand 

Mount containers with the purpose of streaming the content on-demand.

InstallOnDemand 

Mount containers with the purpose of installing/downloading the content on-demand.

CallbackOnGameThread 

Trigger callback on game thread.

WithSoftReferences 

Make soft references available

ForceNonSecureHttp 

Force the use of non-secure HTTP protocol.

◆ EOnDemandPackageStoreUpdateMode

Enumerator
None 
Full 
ReferencedPackages 

◆ EOnDemandPurgeOptions

Options for controlling the behavior of the purge request.

Enumerator
None 

No additional options.

CallbackOnGameThread 

Trigger callback on game thread.

Defrag 

Defrag after purging

◆ EOnDemandStreamingOptions

Streaming options (IAS).

Enumerator
Default 

No special options enabled.

OptionalBulkDataDisabled 

Optional bulk data disabled.

◆ EOnDemandTocFlags

Enumerator
None 
InstallOnDemand 
StreamOnDemand 
Last 

◆ EOnDemandTocVersion

Enumerator
Invalid 
Initial 
UTocHash 
BlockHash32 
NoRawHash 
Meta 
ContainerId 
AdditionalFiles 
TagSets 
ContainerFlags 
TocFlags 
HostGroupName 
ContainerHeader 
LatestPlusOne 
Latest 

◆ ETocMountOptions

Enumerator
None 
WithSoftReferences 

Make soft references available

Function Documentation

◆ ConnectionTest() [1/2]

bool UE::IoStore::ConnectionTest ( FAnsiStringView  Url,
FAnsiStringView  Path,
uint32  TimeoutMs 
)

An easy way to test if a valid connection can be made to a CDN or not. Instead of returning the latency to the CDN this function returns if the CDN can be contacted at all.

Parameters
UrlThe url to be tested
PathThe path on the CDN to be tested
TimeoutMsHow long to wait for a response (in ms) before timing out
Returns
True if the CDN can be reached and false if it cannot.

◆ ConnectionTest() [2/2]

int32 UE::IoStore::ConnectionTest ( TConstArrayView< FAnsiString Urls,
FAnsiStringView  Path,
uint32  TimeoutMs,
std::atomic_bool &  bCancel 
)

Runs latency tests on a list of urls to find the first CDN that can be reached.

Parameters
UrlsA list of urls that should be tested
PathThe path on the CDN(s) to be tested
TimeoutMsHow long to wait for a response (in ms) before timing out
bCancelProvides a way for the caller to cancel the tests. When this bool is set to true the test will attempt to exit as fast as possible, usually when the next latency test has completed.
Returns
The index of the CDN that was successfully reached. INDEX_NONE will be returned if no CDN could be reached.

◆ DECLARE_MULTICAST_DELEGATE()

UE::IoStore::DECLARE_MULTICAST_DELEGATE ( FOnRecreateHttpClient  )

◆ ENUM_CLASS_FLAGS() [1/10]

UE::IoStore::ENUM_CLASS_FLAGS ( EHttpRequestTypeFilter  )

◆ ENUM_CLASS_FLAGS() [2/10]

UE::IoStore::ENUM_CLASS_FLAGS ( EMultiEndpointRequestFlags  )

◆ ENUM_CLASS_FLAGS() [3/10]

UE::IoStore::ENUM_CLASS_FLAGS ( EOnDemandContainerFlags  )

◆ ENUM_CLASS_FLAGS() [4/10]

UE::IoStore::ENUM_CLASS_FLAGS ( EOnDemandGetCacheUsageOptions  )

◆ ENUM_CLASS_FLAGS() [5/10]

UE::IoStore::ENUM_CLASS_FLAGS ( EOnDemandGetInstallSizeOptions  )

◆ ENUM_CLASS_FLAGS() [6/10]

UE::IoStore::ENUM_CLASS_FLAGS ( EOnDemandInstallOptions  )

◆ ENUM_CLASS_FLAGS() [7/10]

UE::IoStore::ENUM_CLASS_FLAGS ( EOnDemandMountOptions  )

◆ ENUM_CLASS_FLAGS() [8/10]

UE::IoStore::ENUM_CLASS_FLAGS ( EOnDemandStreamingOptions  )

◆ ENUM_CLASS_FLAGS() [9/10]

UE::IoStore::ENUM_CLASS_FLAGS ( EOnDemandTocFlags  )

◆ ENUM_CLASS_FLAGS() [10/10]

UE::IoStore::ENUM_CLASS_FLAGS ( ETocMountOptions  )

◆ GenerateTicketId()

FMultiEndpointHttpClient::FHttpTicketId UE::IoStore::GenerateTicketId ( )

Generates a new FHttpTicketId when called.

Calling this should be thread safe and will always return a new unique non zero identifier. In theory identifiers may be reused once the internal counter has overflowed but in practical terms this should never cause us a problem as the identifiers are only used for a relatively short lifespan.

◆ GetOnDemandIoStore()

UE_API IOnDemandIoStore & UE::IoStore::GetOnDemandIoStore ( )

Returns the on-demand I/O store.

◆ GetRequestCompletionTaskPriority()

UE::Tasks::ETaskPriority UE::IoStore::GetRequestCompletionTaskPriority ( )

◆ IMPLEMENT_MODULE() [1/2]

UE::IoStore::IMPLEMENT_MODULE ( UE::IoStore::FIoStoreOnDemandCoreModule  ,
IoStoreOnDemandCore   
)

◆ IMPLEMENT_MODULE() [2/2]

UE::IoStore::IMPLEMENT_MODULE ( UE::IoStore::FIoStoreOnDemandModule  ,
IoStoreOnDemand   
)

◆ IsHttpServerError()

bool UE::IoStore::IsHttpServerError ( uint32  StatusCode)
inline

Returns if a Http status code indicates a server error (5XX) or not

◆ IsHttpStatusOk()

bool UE::IoStore::IsHttpStatusOk ( uint32  StatusCode)
inline

Returns if a Http status code is okay (2XX) or not

◆ JoinIoBuffers()

FIoBuffer UE::IoStore::JoinIoBuffers ( const FIoBuffer LHS,
const FIoBuffer RHS 
)

Utility function to join two FIoBuffers together and return the combined result as a new FIoBuffer

◆ LatencyTest()

void UE::IoStore::LatencyTest ( FAnsiStringView  Url,
FAnsiStringView  Path,
uint32  TimeoutMs,
TArrayView< int32 OutResults 
)

Tests a single url.

Parameters
UrlThe url to be tested
PathThe path on the CDN to be tested
TimeoutMsHow long to wait for a response (in ms) before timing out
OutResultsA pre-sized array to hold the results. One latency test will be made per element in this container.

◆ LexToString()

FString UE::IoStore::LexToString ( const FOnDemandContentHandle Handle)

Returns a string representing the content handle.

◆ LoadDefaultHttpCertificates()

FIoStatus UE::IoStore::LoadDefaultHttpCertificates ( bool bWasLoaded)

◆ LoadFromCompactBinary() [1/8]

UE_API bool UE::IoStore::LoadFromCompactBinary ( FCbFieldView  Field,
FOnDemandToc OutToc 
)

◆ LoadFromCompactBinary() [2/8]

UE_API bool UE::IoStore::LoadFromCompactBinary ( FCbFieldView  Field,
FOnDemandTocAdditionalFile AdditionalFile 
)

◆ LoadFromCompactBinary() [3/8]

UE_API bool UE::IoStore::LoadFromCompactBinary ( FCbFieldView  Field,
FOnDemandTocContainerEntry OutContainer 
)

◆ LoadFromCompactBinary() [4/8]

UE_API bool UE::IoStore::LoadFromCompactBinary ( FCbFieldView  Field,
FOnDemandTocEntry OutTocEntry 
)

◆ LoadFromCompactBinary() [5/8]

UE_API bool UE::IoStore::LoadFromCompactBinary ( FCbFieldView  Field,
FOnDemandTocHeader OutTocHeader 
)

◆ LoadFromCompactBinary() [6/8]

UE_API bool UE::IoStore::LoadFromCompactBinary ( FCbFieldView  Field,
FOnDemandTocTagSet TagSet 
)

◆ LoadFromCompactBinary() [7/8]

UE_API bool UE::IoStore::LoadFromCompactBinary ( FCbFieldView  Field,
FOnDemandTocTagSetPackageList TagSet 
)

◆ LoadFromCompactBinary() [8/8]

UE_API bool UE::IoStore::LoadFromCompactBinary ( FCbFieldView  Field,
FTocMeta OutMeta 
)

◆ MakeFileIoDispatcherBackend()

TSharedPtr< IFileIoDispatcherBackend > UE::IoStore::MakeFileIoDispatcherBackend ( )

◆ MakeIasCache()

TUniquePtr< IIasCache > UE::IoStore::MakeIasCache ( const TCHAR RootDir,
const FIasCacheConfig Config,
class FDiskCacheGovernor Governor 
)

◆ MakeOnDemandHttpIoDispatcherBackend()

TSharedPtr< IOnDemandHttpIoDispatcherBackend > UE::IoStore::MakeOnDemandHttpIoDispatcherBackend ( FOnDemandIoStore IoStore)

◆ MakeOnDemandInstallCache()

TSharedPtr< IOnDemandInstallCache > UE::IoStore::MakeOnDemandInstallCache ( FOnDemandIoStore IoStore,
const FOnDemandInstallCacheConfig Config,
FDiskCacheGovernor Governor 
)

◆ MakeOnDemandIoDispatcherBackend()

TSharedPtr< IOnDemandIoDispatcherBackend > UE::IoStore::MakeOnDemandIoDispatcherBackend ( const FOnDemandEndpointConfig Config,
FOnDemandIoStore IoStore,
FOnDemandHttpThread HttpClient,
TUniquePtr< IIasCache > &&  Cache 
)

◆ MakeOnDemandPackageStoreBackend()

TSharedPtr< IOnDemandPackageStoreBackend > UE::IoStore::MakeOnDemandPackageStoreBackend ( TWeakPtr< FOnDemandIoStore OnDemandIoStore)

◆ MakeOnDemanHttpIoDispatcher()

TSharedPtr< IOnDemandHttpIoDispatcher > UE::IoStore::MakeOnDemanHttpIoDispatcher ( TUniquePtr< class IIasCache > &&  Cache)

◆ OnDemandSetImmediateAnalyticHandler()

void UE::IoStore::OnDemandSetImmediateAnalyticHandler ( FOnDemandImmediateAnalyticHandler &&  EventHandler)
inline

◆ OnHttpClientCVarChanged()

void UE::IoStore::OnHttpClientCVarChanged ( IConsoleVariable CVar)

◆ operator<<() [1/20]

FArchive & UE::IoStore::operator<< ( FArchive Ar,
FOnDemandToc Toc 
)

◆ operator<<() [2/20]

FArchive & UE::IoStore::operator<< ( FArchive Ar,
FOnDemandTocAdditionalFile AdditionalFile 
)

◆ operator<<() [3/20]

FArchive & UE::IoStore::operator<< ( FArchive Ar,
FOnDemandTocContainerEntry ContainerEntry 
)

◆ operator<<() [4/20]

FArchive & UE::IoStore::operator<< ( FArchive Ar,
FOnDemandTocEntry Entry 
)

◆ operator<<() [5/20]

FArchive & UE::IoStore::operator<< ( FArchive Ar,
FOnDemandTocHeader Header 
)

◆ operator<<() [6/20]

FArchive & UE::IoStore::operator<< ( FArchive Ar,
FOnDemandTocSentinel Sentinel 
)

◆ operator<<() [7/20]

FArchive & UE::IoStore::operator<< ( FArchive Ar,
FOnDemandTocTagSet TagSet 
)

◆ operator<<() [8/20]

FArchive & UE::IoStore::operator<< ( FArchive Ar,
FOnDemandTocTagSetPackageList TagSet 
)

◆ operator<<() [9/20]

FArchive & UE::IoStore::operator<< ( FArchive Ar,
FTocMeta Meta 
)

◆ operator<<() [10/20]

FCbWriter & UE::IoStore::operator<< ( FCbWriter Writer,
const FOnDemandToc Toc 
)

◆ operator<<() [11/20]

FCbWriter & UE::IoStore::operator<< ( FCbWriter Writer,
const FOnDemandTocAdditionalFile AdditionalFile 
)

◆ operator<<() [12/20]

FCbWriter & UE::IoStore::operator<< ( FCbWriter Writer,
const FOnDemandTocContainerEntry ContainerEntry 
)

◆ operator<<() [13/20]

FCbWriter & UE::IoStore::operator<< ( FCbWriter Writer,
const FOnDemandTocEntry Entry 
)

◆ operator<<() [14/20]

FCbWriter & UE::IoStore::operator<< ( FCbWriter Writer,
const FOnDemandTocHeader Header 
)

◆ operator<<() [15/20]

FCbWriter & UE::IoStore::operator<< ( FCbWriter Writer,
const FOnDemandTocTagSet TagSet 
)

◆ operator<<() [16/20]

FCbWriter & UE::IoStore::operator<< ( FCbWriter Writer,
const FOnDemandTocTagSetPackageList TagSet 
)

◆ operator<<() [17/20]

FCbWriter & UE::IoStore::operator<< ( FCbWriter Writer,
const FTocMeta Meta 
)

◆ operator<<() [18/20]

FStringBuilderBase & UE::IoStore::operator<< ( FStringBuilderBase Sb,
const FOnDemandInstallCacheUsage CacheUsage 
)

◆ operator<<() [19/20]

FStringBuilderBase & UE::IoStore::operator<< ( FStringBuilderBase Sb,
const FOnDemandStreamingCacheUsage CacheUsage 
)

◆ operator<<() [20/20]

FStringBuilderBase & UE::IoStore::operator<< ( FStringBuilderBase Sb,
FBackendStatus::EFlags  StatusFlags 
)

◆ ToKiB()

double UE::IoStore::ToKiB ( uint64  Value)

◆ ToMiB()

double UE::IoStore::ToMiB ( uint64  Value)

◆ TryGetOnDemandIoStore()

UE_API IOnDemandIoStore * UE::IoStore::TryGetOnDemandIoStore ( )

Returns the on-demand I/O store if available.

Variable Documentation

◆ CVarCompleteMaterializeTaskPriority

FAutoConsoleVariableRef UE::IoStore::CVarCompleteMaterializeTaskPriority(TEXT("ias.CompleteMaterializeTaskPriority"), GCompleteMaterializeTaskPriority, TEXT("Task priority for the CompleteCacheRead task (0 = foreground/high, 1 = foreground/normal, 2 = background/high, 3 = background/normal, 4 = background/low)."), ECVF_Default) ( TEXT("ias.CompleteMaterializeTaskPriority")  ,
GCompleteMaterializeTaskPriority  ,
TEXT("Task priority for the CompleteCacheRead task (0 = foreground/high, 1 = foreground/normal, 2 = background/high, 3 = background/normal, 4 = background/low).")  ,
ECVF_Default   
)

◆ CVarOnDemandBackendThreadPriority

FAutoConsoleVariableRef UE::IoStore::CVarOnDemandBackendThreadPriority(TEXT("ias.onDemandBackendThreadPriority"), GOnDemandBackendThreadPriorityIndex, TEXT("Note that this is switchable at runtime"), ECVF_Default) ( TEXT("ias.onDemandBackendThreadPriority")  ,
GOnDemandBackendThreadPriorityIndex  ,
TEXT("Note that this is switchable at runtime" ,
ECVF_Default   
)

◆ GAllowPartialContentRequests

bool UE::IoStore::GAllowPartialContentRequests = true

When enabled, http requests will make a partial content request by adding Range: bytes=<offset>-<offset+length> to the request if a valid FIoOffsetAndLength is provided with the request. When disabled we will always request the full chunk and then use the FIoOffsetAndLength to return a partial slice of the data to the caller.

◆ GFileIoStoreUnmountTimeOutSeconds

float UE::IoStore::GFileIoStoreUnmountTimeOutSeconds = 10.0f

◆ GHttpCacheEnabled

bool UE::IoStore::GHttpCacheEnabled = true

◆ GIasCancelationEnabled

bool UE::IoStore::GIasCancelationEnabled = true

◆ GIasEnableRequestHandleClear

bool UE::IoStore::GIasEnableRequestHandleClear = true

◆ GIasEnableWriteOnlyDecoding

bool UE::IoStore::GIasEnableWriteOnlyDecoding = false

◆ GIasHttpAllowChunkedXfer

bool UE::IoStore::GIasHttpAllowChunkedXfer = true

◆ GIasHttpConcurrentRequests

int32 UE::IoStore::GIasHttpConcurrentRequests = 8

◆ GIasHttpConnectionCount

int32 UE::IoStore::GIasHttpConnectionCount = 4

◆ GIasHttpEnabled

bool UE::IoStore::GIasHttpEnabled = true

◆ GIasHttpErrorHighWater

float UE::IoStore::GIasHttpErrorHighWater = 0.5f

◆ GIasHttpErrorSampleCount

int32 UE::IoStore::GIasHttpErrorSampleCount = 8

◆ GIasHttpFailTimeOutMs

int32 UE::IoStore::GIasHttpFailTimeOutMs = 4 * 1000

◆ GIasHttpHealthCheckWaitTime

int32 UE::IoStore::GIasHttpHealthCheckWaitTime = 3000

◆ GIasHttpOptionalBulkDataEnabled

bool UE::IoStore::GIasHttpOptionalBulkDataEnabled = true

◆ GIasHttpPollTimeoutMs

int32 UE::IoStore::GIasHttpPollTimeoutMs = 17

◆ GIasHttpPrimaryEndpoint

int32 UE::IoStore::GIasHttpPrimaryEndpoint = 0

Note that GIasHttpPrimaryEndpoint has no effect after initial start up

◆ GIasHttpRangeRequestMinSizeKiB

int32 UE::IoStore::GIasHttpRangeRequestMinSizeKiB = 128

◆ GIasHttpRateLimitKiBPerSecond

int32 UE::IoStore::GIasHttpRateLimitKiBPerSecond = 0

◆ GIasHttpRecvBufKiB

int32 UE::IoStore::GIasHttpRecvBufKiB = -1

◆ GIasHttpRetryCount

int32 UE::IoStore::GIasHttpRetryCount = -1

◆ GIasHttpSendBufKiB

int32 UE::IoStore::GIasHttpSendBufKiB = -1

◆ GIasHttpTimeOutMs

int32 UE::IoStore::GIasHttpTimeOutMs = 10 * 1000

◆ GIasPoisonCache

bool UE::IoStore::GIasPoisonCache = false

◆ GIasReportAnalyticsEnabled

bool UE::IoStore::GIasReportAnalyticsEnabled = true

◆ GIaxHttpEnableInflightCancellation

bool UE::IoStore::GIaxHttpEnableInflightCancellation = true

◆ GIaxHttpMaxInflight

int32 UE::IoStore::GIaxHttpMaxInflight = 1

◆ GIaxHttpVersion

int32 UE::IoStore::GIaxHttpVersion = 1

◆ GIaxInvalidUrlChance

float UE::IoStore::GIaxInvalidUrlChance = 0.0

◆ GIaxWarnOnFailure

bool UE::IoStore::GIaxWarnOnFailure = true

Not intended as a long term cvar, only including so that we can revert the new behavior easily if needed

◆ GOnDemandBackendThreadPriorities

const int32 UE::IoStore::GOnDemandBackendThreadPriorities[5]
Initial value:
=
{
}
@ TPri_AboveNormal
Definition GenericPlatformAffinity.h:28
@ TPri_Lowest
Definition GenericPlatformAffinity.h:31
@ TPri_SlightlyBelowNormal
Definition GenericPlatformAffinity.h:32
@ TPri_BelowNormal
Definition GenericPlatformAffinity.h:29
@ TPri_Normal
Definition GenericPlatformAffinity.h:27

◆ GOnDemandBackendThreadPriorityIndex

int32 UE::IoStore::GOnDemandBackendThreadPriorityIndex = 4

◆ GOnDemandIoStore

IOnDemandIoStore* UE::IoStore::GOnDemandIoStore = nullptr

◆ GRequestLaneEstate

FLaneEstate* UE::IoStore::GRequestLaneEstate
Initial value:
.Name = "Iax/Backend",
.Group = "Iax",
.Channel = HTTP::GetIaxTraceChannel(),
.Weight = 10,
})
UE_API FLaneEstate * LaneEstate_New(const FLaneTraceSpec &Spec) LANETRACE_OFF_IMPL(nullptr)

◆ OnRecreateHttpClient

FOnRecreateHttpClient UE::IoStore::OnRecreateHttpClient