27template<
typename>
struct TNetResult;
103 return Result ==
A.Result &&
ErrorContext ==
A.ErrorContext && RawResultEnumObj ==
A.RawResultEnumObj &&
104 NextResult.IsValid() ==
A.NextResult.IsValid() && (!NextResult.IsValid() || *NextResult == *
A.NextResult);
119 template<
typename T,
typename>
138 template<
typename T,
typename>
176 while (
ChainEnd->NextResult.IsValid())
195 while (
ChainEnd->NextResult.IsValid())
217 if (CurResult !=
nullptr &&
static_cast<ResultEnum>(CurResult->Result) ==
A)
238 return CurResult !=
nullptr;
243 check(CurResult !=
nullptr);
255 if (CurResult !=
nullptr)
257 CurResult = CurResult->NextResult.Get();
274 const void* RawResultEnumObj =
nullptr;
277 FString ErrorContext;
291 if (ResultPtr.IsValid())
293 ResultPtr->AddChainResult(
MoveTemp(Result));
328template<
typename ResultEnum>
332 static_assert(ResultEnum::Success != ResultEnum::Unknown,
"ResultEnum must contain a 'Success' and 'Unknown' (i.e. undetermined) value");
407 return static_cast<ResultEnum>(Result) == ResultEnum::Success;
469#define DECLARE_NETRESULT_ENUM(EnumType) \
474 inline void AddToChainResultPtr(TPimplPtr<FNetResult, EPimplPtrMode::DeepCopy>& ResultPtr, TNetResult<EnumType>&& Result) { AddToChainResultPtr(ResultPtr, static_cast<FNetResult&&>(Result)); } \
475 inline FNetResult AddToAndConsumeChainResultPtr(TPimplPtr<FNetResult, EPimplPtrMode::DeepCopy>& ResultPtr, TNetResult<EnumType>&& Result) { return AddToAndConsumeChainResultPtr(ResultPtr, static_cast<FNetResult&&>(Result)); } \
#define check(expr)
Definition AssertionMacros.h:314
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
const bool
Definition NetworkReplayStreaming.h:178
constexpr uint32 HashCombine(uint32 A, uint32 C)
Definition TypeHash.h:36
UE_FORCEINLINE_HINT const UE_STRING_CLASS::ElementType * ToCStr(const UE_STRING_CLASS &Str)
Definition UnrealString.h.inl:2326
UE_INTRINSIC_CAST UE_REWRITE constexpr std::remove_reference_t< T > && MoveTemp(T &&Obj) noexcept
Definition UnrealTemplate.h:520
Definition OverriddenPropertySet.cpp:45
Definition NetworkVersion.cpp:28
void NetResultToString(FString &OutResultStr, const TCHAR *LexResult, const FString &ErrorContext, ENetResultString ConversionType)
Definition NetResult.cpp:57
const TCHAR * LexToString(UE::Net::EStopReplicatingReason Reason)
Definition EngineReplicationBridge.cpp:121
FNetResult AddToAndConsumeChainResultPtr(TPimplPtr< FNetResult, EPimplPtrMode::DeepCopy > &ResultPtr, FNetResult &&Result)
Definition NetResult.h:308
void AddToChainResultPtr(TPimplPtr< FNetResult, EPimplPtrMode::DeepCopy > &ResultPtr, FNetResult &&Result)
Definition NetResult.h:289
TNetResult< T > * Cast(FNetResult *InResult)
Definition NetResult.h:120
ENetResultString
Definition NetResult.h:42
Definition AdvancedWidgetsModule.cpp:13
Definition WeakObjectPtrTemplates.h:25
Definition NetResult.h:230
const FNetResult * operator->() const
Definition NetResult.h:248
void operator++()
Definition NetResult.h:253
FConstIterator(const FNetResult &InResult)
Definition NetResult.h:231
const FNetResult & operator*() const
Definition NetResult.h:241
Definition NetResult.h:64
FNetResult(FNetResult &&)=default
FNetResult & operator=(const FNetResult &)=default
void AddChainResult(FNetResult &&InResult)
Definition NetResult.h:171
NETCORE_API FString DynamicToString(ENetResultString ConversionType=ENetResultString::WithoutChain) const
Definition NetResult.cpp:17
FNetResult(const FNetResult &)=default
bool HasChainResult(ResultEnum A) const
Definition NetResult.h:211
FNetResult & operator=(FNetResult &&)=default
bool operator!=(const FNetResult &A) const
Definition NetResult.h:107
bool operator==(const FNetResult &A) const
Definition NetResult.h:101
friend const TNetResult< T > * Cast(const FNetResult *InResult)
Definition NetResult.h:139
friend uint32 GetTypeHash(FNetResult const &Hash)
Definition NetResult.h:160
friend TNetResult< T > * Cast(FNetResult *InResult)
Definition NetResult.h:120
void AddChainResult(TNetResult< T > &&InResult)
Definition NetResult.h:190
Definition NetResult.h:330
FString ToString(ENetResultString ConversionType=ENetResultString::WithoutChain) const
Definition NetResult.h:373
bool WasSuccessful() const
Definition NetResult.h:405
bool operator!=(ResultEnum A) const
Definition NetResult.h:449
bool operator==(ResultEnum A) const
Definition NetResult.h:444
bool HasChainResult(const TNetResult &A) const
Definition NetResult.h:428
TNetResult(ResultEnum InResult=ResultEnum::Unknown)
Definition NetResult.h:342
TNetResult(ResultEnum InResult, const FString &InErrorContext)
Definition NetResult.h:357
const FString & GetErrorContext() const
Definition NetResult.h:415
__underlying_type(ResultEnum) UnderlyingResultType
Definition NetResult.h:334
ResultEnum GetResult() const
Definition NetResult.h:410