UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
OnDemandError.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
7#include "IO/IoChunkId.h"
8#include "IO/IoStatus.h"
10
11#define UE_API IOSTOREONDEMANDCORE_API
12
15
16UE_DECLARE_ERROR_ONEPARAM(UE_API, HttpError, 1, IoStoreOnDemand, NSLOCTEXT("IoStoreOnDemand", "HttpError", "HTTP error ({StatusCode})"), uint32, StatusCode, 0);
17UE_DECLARE_ERROR(UE_API, ChunkMissingError, 2, IoStoreOnDemand, NSLOCTEXT("IoStoreOnDemand", "ChunkMissingError", "Chunk missing error"));
18UE_DECLARE_ERROR(UE_API, ChunkHashError, 3, IoStoreOnDemand, NSLOCTEXT("IoStoreOnDemand", "ChunkHashError", "Chunk hash mismatch error"));
19UE_DECLARE_ERROR(UE_API, InstallCacheFlushError, 4, IoStoreOnDemand, NSLOCTEXT("IoStoreOnDemand", "InstallCacheFlushError", "Failed to flush pending data to install cache."));
20UE_DECLARE_ERROR(UE_API, InstallCacheFlushLastAccessError, 5, IoStoreOnDemand, NSLOCTEXT("IoStoreOnDemand", "InstallCacheFlushLastAccessError", "Failed to flush last access timestamp(s) to journal."));
21UE_DECLARE_ERROR(UE_API, InstallCachePurgeError, 6, IoStoreOnDemand, NSLOCTEXT("IoStoreOnDemand", "InstallCachePurgeError", "Failed to purge unreferenced cache block(s) from the install cache."));
22UE_DECLARE_ERROR(UE_API, InstallCacheDefragError, 7, IoStoreOnDemand, NSLOCTEXT("IoStoreOnDemand", "InstallCacheDefragError", "Failed to defrag the install cache."));
23UE_DECLARE_ERROR(UE_API, InstallCacheVerificationError, 8, IoStoreOnDemand, NSLOCTEXT("IoStoreOnDemand", "InstallCacheVerificationError", "Verification of installed install cache data failed."));
24UE_DECLARE_ERROR(UE_API, CasError, 9, IoStoreOnDemand, NSLOCTEXT("IoStoreOnDemand", "CasError", "Cas error"));
25UE_DECLARE_ERROR(UE_API, CasJournalError, 10, IoStoreOnDemand, NSLOCTEXT("IoStoreOnDemand", "CasJournalError", "Cas journal error"));
26UE_DECLARE_ERROR(UE_API, CasSnapshotError, 11, IoStoreOnDemand, NSLOCTEXT("IoStoreOnDemand", "CasSnapshotError", "Cas snapshot error"));
27
29namespace UE::IoStore
30{
31
33
34template <typename ResultType>
36
37} // namespace UE::IoStore
38
41{
42
58
59inline const TCHAR* ToString(ECasErrorCode Code)
60{
61 switch (Code)
62 {
64 return TEXT("None");
66 return TEXT("InitializeFailed");
68 return TEXT("VerifyFailed");
70 return TEXT("ReadBlockFailed");
72 return TEXT("WriteBlockFailed");
74 return TEXT("DeleteBlockFailed");
76 return TEXT("CreateJournalFailed");
78 return TEXT("ReplayJournalFailed");
80 return TEXT("CommitJournalFailed");
82 return TEXT("CreateSnapshotFailed");
84 return TEXT("LoadSnapshotFailed");
86 return TEXT("SaveSnapshotFailed");
87 default:
88 return TEXT("<InvalidErrorCode>");
89 };
90}
91
99
100template <typename ResultType>
102 ECasErrorCode ErrorCode,
103 EIoErrorCode IoErrorCode,
104 FString&& ErrorMessage,
105 uint32 SystemErrorCode = FPlatformMisc::GetLastError())
106{
107 return MakeError(CasError::MakeError(FCasErrorContext
108 {
109 .ErrorCode = ErrorCode,
110 .IoErrorCode = IoErrorCode,
111 .SystemErrorCode = SystemErrorCode,
112 .ErrorMessage = MoveTemp(ErrorMessage)
114}
115
117 ECasErrorCode ErrorCode,
118 EIoErrorCode IoErrorCode,
119 FString&& ErrorMessage,
120 uint32 SystemErrorCode = FPlatformMisc::GetLastError())
121{
122 return MakeError(CasJournalError::MakeError(FCasErrorContext
123 {
124 .ErrorCode = ErrorCode,
125 .IoErrorCode = IoErrorCode,
126 .SystemErrorCode = SystemErrorCode,
127 .ErrorMessage = MoveTemp(ErrorMessage)
128 }));
129}
130
131template <typename ResultType>
133 ECasErrorCode ErrorCode,
134 EIoErrorCode IoErrorCode,
135 FString&& ErrorMessage,
136 uint32 SystemErrorCode = FPlatformMisc::GetLastError())
137{
138 using namespace UE::UnifiedError;
139 using namespace UE::UnifiedError::IoStoreOnDemand;
140
141 return MakeError(CasSnapshotError::MakeError(FCasErrorContext
142 {
143 .ErrorCode = ErrorCode,
144 .IoErrorCode = IoErrorCode,
145 .SystemErrorCode = SystemErrorCode,
146 .ErrorMessage = MoveTemp(ErrorMessage)
147 }));
148}
149
154
161
172
179
180} // namespace UE::UnifiedError::IoStoreOnDemand
181
185{
186 Writer.BeginObject();
188 Writer.AddString(ANSITEXTVIEW("$format"), TEXT("({ErrorCodeText}: {ErrorMessage})"));
189 Writer.AddInteger(ANSITEXTVIEW("ErrorCode"), uint32(Ctx.ErrorCode));
190 Writer.AddString(ANSITEXTVIEW("ErrorCodeText"), ToString(Ctx.ErrorCode));
191 Writer.AddInteger(ANSITEXTVIEW("IoErrorCode"), uint32(Ctx.IoErrorCode));
192 Writer.AddString(ANSITEXTVIEW("IoErrorCodeText"), GetIoErrorText(Ctx.IoErrorCode));
193 Writer.AddString(ANSITEXTVIEW("ErrorMessage"), Ctx.ErrorMessage);
194 Writer.EndObject();
195}
199{
200 Writer.BeginObject();
202 Writer.AddString(ANSITEXTVIEW("$format"), TEXT("(MissingCount: {MissingCount}, ChunkIds: [{ChunkIds}])"));
203
204 Writer.AddInteger(ANSITEXTVIEW("MissingCount"), Ctx.ChunkIds.Num());
205
207 Builder.Join(Ctx.ChunkIds, UTF8TEXTVIEW(", "));
208 Writer.AddString(ANSITEXTVIEW("ChunkIds"), Builder);
209
210 Writer.EndObject();
211}
215{
216 Writer.BeginObject();
218 Writer.AddString(ANSITEXTVIEW("$format"), TEXT("(ChunkId: {ChunkId}, ExpectedHash: {ExpectedHash}, ActualHash: {ActualHash})"));
219 Writer.AddString(ANSITEXTVIEW("ChunkId"), LexToString(Ctx.ChunkId));
220 Writer.AddString(ANSITEXTVIEW("ExpectedHash"), LexToString(Ctx.ExpectedHash));
221 Writer.AddString(ANSITEXTVIEW("ActualHash"), LexToString(Ctx.ActualHash));
222 Writer.EndObject();
223}
227{
228 Writer.BeginObject();
230 Writer.AddString(ANSITEXTVIEW("$format"), TEXT("({ErrorMessage})"));
231 Writer.AddInteger(ANSITEXTVIEW("ErrorCode"), int32(Ctx.IoError.GetErrorCode()));
232 Writer.AddString(ANSITEXTVIEW("ErrorMessage"), Ctx.IoError.ToString());
233 Writer.AddInteger(ANSITEXTVIEW("SystemErrorCode"), int32(Ctx.IoError.GetSystemErrorCode()));
234 Writer.AddInteger(ANSITEXTVIEW("MaxCacheSize"), Ctx.MaxCacheSize);
235 Writer.AddInteger(ANSITEXTVIEW("CacheSize"), Ctx.CacheSize);
236 Writer.AddInteger(ANSITEXTVIEW("DiskTotalBytes"), Ctx.DiskTotalBytes);
237 Writer.AddInteger(ANSITEXTVIEW("DiskFreeBytes"), Ctx.DiskFreeBytes);
238 Writer.AddInteger(ANSITEXTVIEW("LineNo"), uint32(Ctx.LineNo));
239 Writer.EndObject();
240}
244{
245 Writer.BeginObject();
247 Writer.AddString(ANSITEXTVIEW("$format"), TEXT("(CorruptChunkCount: {CorruptChunkCount}, MissingChunkCount: {MissingChunkCount}, ReadErrorCount: {ReadErrorCount})"));
248 Writer.AddInteger(ANSITEXTVIEW("CorruptChunkCount"), Ctx.CorruptChunkCount);
249 Writer.AddInteger(ANSITEXTVIEW("MissingChunkCount"), Ctx.MissingChunkCount);
250 Writer.AddInteger(ANSITEXTVIEW("ReadErrorCount"), Ctx.ReadErrorCount);
251 Writer.EndObject();
252}
253
254#undef UE_API
#define TEXT(x)
Definition Platform.h:1272
FPlatformTypes::TCHAR TCHAR
Either ANSICHAR or WIDECHAR, depending on whether the platform supports wide characters or the requir...
Definition Platform.h:1135
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
const TCHAR * LexToString(EAnalyticsRecordEventMode Mode)
Definition IAnalyticsProvider.cpp:5
#define NSLOCTEXT(InNamespace, InKey, InTextLiteral)
Definition Internationalization.h:300
const TCHAR * GetIoErrorText(EIoErrorCode ErrorCode)
Definition IoStatus.cpp:23
EIoErrorCode
Definition IoStatus.h:19
void SerializeForLog(FCbWriter &Writer, const UE::UnifiedError::IoStoreOnDemand::FCasErrorContext &Ctx)
Definition OnDemandError.h:184
#define UE_API
Definition OnDemandError.h:11
#define ANSITEXTVIEW(str)
Definition StringView.h:555
#define UTF8TEXTVIEW(str)
Definition StringView.h:557
#define UE_DECLARE_ERROR_ONEPARAM(DeclareApi, ErrorName, ErrorCode, ModuleName, FormatString, ParamOneType, ParamOneName, ParamOneDefault)
Definition UnifiedError.h:739
#define UE_DECLARE_ERRORSTRUCT_FEATURES(DetailsNameSpace, DetailsStructName)
Definition UnifiedError.h:45
#define UE_DECLARE_ERROR(DeclareApi, ErrorName, ErrorCode, ModuleName, FormatString)
Definition UnifiedError.h:725
#define UE_DECLARE_ERROR_MODULE(DeclareApi, ModuleName)
Definition UnifiedError.h:666
UE_INTRINSIC_CAST UE_REWRITE constexpr std::remove_reference_t< T > && MoveTemp(T &&Obj) noexcept
Definition UnrealTemplate.h:520
UE_REWRITE TValueOrError_ErrorProxy< ArgTypes... > MakeError(ArgTypes &&... Args UE_LIFETIMEBOUND)
Definition ValueOrError.h:41
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition CompactBinaryWriter.h:68
void AddInteger(FUtf8StringView Name, int32 Value)
Definition CompactBinaryWriter.h:180
void AddString(FUtf8StringView Name, FUtf8StringView Value)
Definition CompactBinaryWriter.h:173
void BeginObject(FUtf8StringView Name)
Definition CompactBinaryWriter.h:131
CORE_API void EndObject()
Definition CompactBinaryWriter.cpp:261
Definition IoChunkId.h:64
Definition IoStatus.h:60
Definition IoStoreOnDemand.Build.cs:6
Definition Array.h:670
Definition UnifiedError.h:23
BuilderType & Join(RangeType &&InRange, const DelimiterType &InDelimiter)
Definition StringBuilder.h:352
Definition StringBuilder.h:509
NO_LOGGING.
Definition Client.h:20
Definition OnDemandError.h:41
UE::IoStore::TResult< ResultType > MakeCasError(ECasErrorCode ErrorCode, EIoErrorCode IoErrorCode, FString &&ErrorMessage, uint32 SystemErrorCode=FPlatformMisc::GetLastError())
Definition OnDemandError.h:101
UE::IoStore::TResult< ResultType > MakeSnapshotError(ECasErrorCode ErrorCode, EIoErrorCode IoErrorCode, FString &&ErrorMessage, uint32 SystemErrorCode=FPlatformMisc::GetLastError())
Definition OnDemandError.h:132
UE::IoStore::FResult MakeJournalError(ECasErrorCode ErrorCode, EIoErrorCode IoErrorCode, FString &&ErrorMessage, uint32 SystemErrorCode=FPlatformMisc::GetLastError())
Definition OnDemandError.h:116
ECasErrorCode
Definition OnDemandError.h:44
Definition IoStatusError.cpp:13
static FORCEINLINE uint32 GetLastError()
Definition GenericPlatformMisc.h:894
Definition IoHash.h:33
ECasErrorCode ErrorCode
Definition OnDemandError.h:94
uint32 SystemErrorCode
Definition OnDemandError.h:96
FString ErrorMessage
Definition OnDemandError.h:97
EIoErrorCode IoErrorCode
Definition OnDemandError.h:95
TArray< FIoChunkId > ChunkIds
Definition OnDemandError.h:152
FIoStatus IoError
Definition OnDemandError.h:164
bool bDiskQuerySucceeded
Definition OnDemandError.h:170
uint64 DiskTotalBytes
Definition OnDemandError.h:167
uint64 DiskFreeBytes
Definition OnDemandError.h:168
uint32 ReadErrorCount
Definition OnDemandError.h:177
uint32 MissingChunkCount
Definition OnDemandError.h:176
uint32 CorruptChunkCount
Definition OnDemandError.h:175