UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
NetConnectionFaultRecoveryBase.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5
6#include "Containers/Array.h"
8#include "HAL/PlatformCrt.h"
14#include "Templates/PimplPtr.h"
15#include "Templates/UniquePtr.h"
18
19#include "NetConnectionFaultRecoveryBase.generated.h"
20
21class UClass;
22
23// Forward declarations
24namespace UE
25{
26 namespace Net
27 {
28 class FNetConnectionFaultRecovery;
29 struct FNetResult;
30 }
31}
32
33
38USTRUCT()
40{
42
43 friend UE::Net::FNetConnectionFaultRecovery;
44
45public:
47 UPROPERTY(config)
48 bool bCloseConnection = false;
49
50
54 UPROPERTY(config)
55 int16 EscalateQuotaFaultsPerPeriod = -1;
56
58 UPROPERTY(config)
59 int8 EscalateQuotaFaultPercentPerPeriod = -1;
60
62 UPROPERTY(config)
63 int16 DescalateQuotaFaultsPerPeriod = -1;
64
66 UPROPERTY(config)
67 int8 DescalateQuotaFaultPercentPerPeriod = -1;
68
70 UPROPERTY(config)
71 int8 EscalateQuotaTimePeriod = -1;
72
73
74public:
75 static NETCORE_API const TCHAR* GetConfigSection();
76 static NETCORE_API UClass* GetBaseConfigClass();
77
78
80 NETCORE_API virtual EInitStateDefaultsResult InitConfigDefaultsInternal() override;
81 NETCORE_API virtual void ApplyImpliedValuesInternal() override;
82 NETCORE_API virtual void ValidateConfigInternal() override;
83
85 NETCORE_API virtual bool HasHitAnyQuota(FHasHitAnyQuotaParms Parms) const override;
86};
87
88
89namespace UE
90{
91namespace Net
92{
93
98enum class ENetFaultCounters : uint8
99{
100 PacketCount, // Total number of packets received per-period
101 NetConnPacketFault, // Faults encountered by low level NetConnection packet processing (signifying packet corruption - excludes PacketHandler)
102
103 Max,
104
105 NumPrealloc = 6
106};
107
108
113enum class ENetFaultCounterCategory : uint8
114{
119 NetworkCorruption,
120
121 Max
122};
123
130inline uint8 ToInt(ENetFaultCounters CounterVal)
131{
132 return static_cast<uint8>(CounterVal);
133}
134
141inline uint8 ToInt(ENetFaultCounterCategory CategoryVal)
142{
143 return static_cast<uint8>(CategoryVal);
144}
145
146// Hacky base class to avoid 8 bytes of padding after the vtable
147class FNetConnectionFaultRecoveryBaseFixLayout
148{
149public:
150 virtual ~FNetConnectionFaultRecoveryBaseFixLayout() = default;
151};
152
156class FNetConnectionFaultRecoveryBase : public FNetConnectionFaultRecoveryBaseFixLayout
157{
158public:
160
168 NETCORE_API EHandleNetResult NotifyHandledFault(FNetResult&& InResult);
169
170
176 FNetResultManager& GetFaultManager()
177 {
178 return FaultManager;
179 }
180
184 NETCORE_API EHandleNetResult HandleNetResult(FNetCloseResult&& InResult);
185
189 NETCORE_API int32 AddNewCounter(int32 Count=1);
190
194 NETCORE_API FEscalationCounter& GetFrameCounter(int32 CounterIndex);
195
199 NETCORE_API void RegisterCounterCategory(ENetFaultCounterCategory Category, int32 CounterIndex);
200
201
202private:
203 virtual void InitEscalationManager()
204 {
205 }
206
207
208protected:
210 bool bDisconnected = false;
211
213 int32 LastCounterIndex = static_cast<int32>(ENetFaultCounters::Max);
214
216 TUniquePtr<FNetFaultEscalationHandler> NetFaultEscalationManager;
217
219 {
220 int32 CategoryIndex = 0;
221 int32 CounterIndex = 0;
222
223 friend bool operator == (const FPendingCategoryRegister& A, const FPendingCategoryRegister& B)
224 {
225 return A.CategoryIndex == B.CategoryIndex && A.CounterIndex == B.CounterIndex;
226 }
227 };
228
230 TArray<FPendingCategoryRegister> PendingCategories;
231
234
236 TArray<uint32, TInlineAllocator<FMath::Max(static_cast<int32>(ENetFaultCounters::Max), 8)>> TrackedFaultEnumHashes;
237
238
240 FNetResultManager FaultManager;
241};
242
243}
244}
245
FPlatformTypes::int16 int16
A 16-bit signed integer.
Definition Platform.h:1123
FPlatformTypes::int8 int8
An 8-bit signed integer.
Definition Platform.h:1121
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
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
const bool
Definition NetworkReplayStreaming.h:178
#define UPROPERTY(...)
UObject definition macros.
Definition ObjectMacros.h:744
#define GENERATED_BODY(...)
Definition ObjectMacros.h:765
#define USTRUCT(...)
Definition ObjectMacros.h:746
EInitStateDefaultsResult
Definition StateStruct.h:98
uint8_t uint8
Definition binka_ue_file_header.h:8
Definition Array.h:670
Definition UniquePtr.h:107
Definition Class.h:3793
Definition NetResultManager.h:48
Definition AdvancedWidgetsModule.cpp:13
@ false
Definition radaudio_common.h:23
Definition EscalationStates.h:159
Definition EscalationStates.h:133
Definition NetConnectionFaultRecoveryBase.h:40
Definition PimplPtr.h:50
Definition NetConnectionFaultRecoveryBase.h:219
int32 CategoryIndex
Definition NetConnectionFaultRecoveryBase.h:220