UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
NetworkMetricsMutators.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "HAL/Platform.h"
7#include "Misc/TVariant.h"
9
10#include <limits>
11
12#include "NetworkMetricsMutators.generated.h"
13
14namespace UE::Net
15{
16 struct FNetworkMetricSnapshot;
17}
18
26USTRUCT()
28{
30
31public:
33
34 virtual ~FNetworkMetricsMutator() = default;
35
40 FName GetName() const;
41
43 virtual void ProcessFrame(const UE::Net::FNetworkMetricSnapshot& Snapshot) PURE_VIRTUAL(FNetworkMetricsMutator::ProcessFrame, );
44
47
49 virtual FValueVariant GetValue() const PURE_VIRTUAL(FNetworkMetricsMutator::GetValue, return FValueVariant(TInPlaceType<float>(), 0.0f););
50
52 virtual TArrayView<const FName> GetAllMetricNames() const PURE_VIRTUAL(FNetworkMetricsMutator::GetAllMetricNames, return TArrayView<const FName>(););
53
56 virtual FName GetNameInternal() const PURE_VIRTUAL(FNetworkMetricsMutator::GetNameInternal, return FName(););
57
63 UPROPERTY(Config)
64 FName NameOverride;
65};
66
75
77USTRUCT()
79{
81
82public:
83 virtual void ProcessFrame(const UE::Net::FNetworkMetricSnapshot& Snapshot) override;
84 virtual void Reset() override;
85 virtual FValueVariant GetValue() const override;
86
88 {
89 return MakeConstArrayView(&MetricName, 1);
90 }
91
92private:
93 virtual FName GetNameInternal() const override;
94
95 void AddIntSample(int64 Sample);
96 void AddFloatSample(float Sample);
97
98 int64 IntTotal = 0;
99 float FloatTotal = 0.0f;
100 uint32 NumSamples = 0;
101
103 UPROPERTY(Config)
104 FName MetricName;
105
107 mutable FName MutatorName;
108};
109
111USTRUCT()
113{
115
116public:
117 virtual void ProcessFrame(const UE::Net::FNetworkMetricSnapshot& Snapshot) override;
118 virtual void Reset() override;
119 virtual FValueVariant GetValue() const override;
120
122 {
123 return MakeConstArrayView(&MetricName, 1);
124 }
125
126private:
127 virtual FName GetNameInternal() const override;
128
129 FValueVariant MinValue = FValueVariant(TInPlaceType<int64>(), std::numeric_limits<int64>::max());
130
132 UPROPERTY(Config)
133 FName MetricName;
134
136 mutable FName MutatorName;
137};
138
140USTRUCT()
142{
144
145public:
146 virtual void ProcessFrame(const UE::Net::FNetworkMetricSnapshot& Snapshot) override;
147 virtual void Reset() override;
148 virtual FValueVariant GetValue() const override;
149
151 {
152 return MakeConstArrayView(&MetricName, 1);
153 }
154
155private:
156 virtual FName GetNameInternal() const override;
157
158 FValueVariant MaxValue = FValueVariant(TInPlaceType<int64>(), std::numeric_limits<int64>::lowest());
159
161 UPROPERTY(Config)
162 FName MetricName;
163
165 mutable FName MutatorName;
166};
167
171USTRUCT()
173{
175
176public:
177 virtual void ProcessFrame(const UE::Net::FNetworkMetricSnapshot& Snapshot) override;
178 virtual void Reset() override;
179
181 virtual FValueVariant GetValue() const override;
182
183 virtual TArrayView<const FName> GetAllMetricNames() const override;
184
185protected:
187 {
188 NumeratorName = MetricName;
189 }
190
192 {
193 DenominatorName = MetricName;
194 }
195
196private:
197 virtual FName GetNameInternal() const override;
198
199 // Private template so it can be defined in the .cpp file.
200 template<class T>
201 static void UpdateFromSnapshotValue(FNetworkMetricsMutator::FValueVariant& InOutValue, T MetricValue);
202
203 // Source metric names stored in an array so we can return a view to it from GetAllMetricNames.
204 mutable TArray<FName, TInlineAllocator<2>> SourceMetricNames;
205
206 FValueVariant Numerator = FValueVariant(TInPlaceType<int64>(), 0);
207 FValueVariant Denominator = FValueVariant(TInPlaceType<int64>(), 0);
208
209 UPROPERTY(Config)
210 FName NumeratorName;
211
212 UPROPERTY(Config)
213 FName DenominatorName;
214
215 // Auto-generated mutator name, derived from source metrics.
216 mutable FName MutatorName;
217};
218
220USTRUCT()
222{
224
225public:
227
228private:
229 virtual FName GetNameInternal() const override
230 {
231 return FName("OutPacketLoss");
232 }
233};
234
236USTRUCT()
238{
240
241public:
243
244private:
245 virtual FName GetNameInternal() const override
246 {
247 return FName("InPacketLoss");
248 }
249};
constexpr auto MakeConstArrayView(OtherRangeType &&Other)
Definition ArrayView.h:904
#define PURE_VIRTUAL(func,...)
Definition CoreMiscDefines.h:103
FPlatformTypes::int64 int64
A 64-bit signed integer.
Definition Platform.h:1127
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define UPROPERTY(...)
UObject definition macros.
Definition ObjectMacros.h:744
#define GENERATED_BODY(...)
Definition ObjectMacros.h:765
#define USTRUCT(...)
Definition ObjectMacros.h:746
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition NameTypes.h:617
Definition ArrayView.h:139
Definition Array.h:670
Definition TVariant.h:48
Definition NetworkVersion.cpp:28
Definition NetworkMetricsMutators.h:79
virtual TArrayView< const FName > GetAllMetricNames() const override
Definition NetworkMetricsMutators.h:87
Definition NetworkMetricsMutators.h:238
Definition NetworkMetricsMutators.h:142
virtual TArrayView< const FName > GetAllMetricNames() const override
Definition NetworkMetricsMutators.h:150
Definition NetworkMetricsMutators.h:113
virtual TArrayView< const FName > GetAllMetricNames() const override
Definition NetworkMetricsMutators.h:121
Definition NetworkMetricsMutators.h:222
Definition NetworkMetricsMutators.h:173
void SetNumeratorMetricName(FName MetricName)
Definition NetworkMetricsMutators.h:186
void SetDenominatorMetricName(FName MetricName)
Definition NetworkMetricsMutators.h:191
Definition NetworkMetricsMutators.h:28
virtual ~FNetworkMetricsMutator()=default
Definition TVariant.h:13
Definition StructOpsTypeTraits.h:11
Definition StructOpsTypeTraits.h:46
Definition NetworkMetricsDatabase.h:26