8#include "Misc/Optional.h"
28template<
typename ConsumerType>
31 struct CSampleConsumer
34 auto Requires(T&
A) ->
decltype(
39 struct CPeekMeasurements
42 auto Requires(T&
A) ->
decltype(
43 A.PeekMeasurement(0.0, 0.0)
68 if (Consumer !=
nullptr)
70 Consumer->AddSample(
Value);
80 template<
typename InnerConsumerType=ConsumerType,
typename =
typename TEnableIf<TModels_V<CPeekMeasurements, InnerConsumerType>>::Type>
83 if (Consumer !=
nullptr)
89 template<
typename InnerConsumerType=ConsumerType,
typename =
typename TEnableIf<!TModels_V<CPeekMeasurements, InnerConsumerType>>::Type,
int32 UnusedParamForODR=0>
162 const double TimePerBin = 0.0;
165 const double BinRange = 0.0;
177 double TotalSum = 0.0;
180 int32 TotalCount = 0;
198template<
typename ConsumerType,
int32 NumBins, EBinnedValueMode InMode>
246 FBin Bins[NumBins] = {};
259template<
typename ConsumerType,
int32 NumBins, EBinnedValueMode InMode>
279 if (LastValue != std::numeric_limits<double>::min())
294 LastValue = std::numeric_limits<double>::min();
299 double LastValue = std::numeric_limits<double>::min();
305template<
typename ConsumerType,
int32 NumBins>
311template<
typename ConsumerType,
int32 NumBins>
317template<
typename ConsumerType,
int32 NumBins>
323template<
typename ConsumerType,
int32 NumBins>
339 static constexpr double TimePerBin(
double InBinSize)
370class FSampleMinMaxAvg
372 template<EMinMaxValueMode,
int32>
friend class TSampleMinMaxAvg;
390 return ((MinValue == std::numeric_limits<double>::max()) ? 0.0 :
MinValue);
400 return ((MaxValue == std::numeric_limits<double>::min()) ? 0.0 :
MaxValue);
408 double GetCurrent()
const
418 double GetAvg()
const
420 return TotalCount == 0 ? 0.0 : (TotalSum /
static_cast<double>(TotalCount));
428 double GetSum()
const
438 int32 GetSampleCount()
const
445 double MinValue = std::numeric_limits<double>::max();
448 double MaxValue = std::numeric_limits<double>::min();
451 double CurrentValue = 0.0;
454 double TotalSum = 0.0;
457 int32 TotalCount = 0;
467template<EMinMaxValueMode Mode,
int32 MinMaxTimeSeconds=1>
468class TSampleMinMaxAvg;
471class TSampleMinMaxAvg<EMinMaxValueMode::PerSample> :
public FSampleMinMaxAvg
477 void AddSample(
double Value)
479 if (
Value < MinValue)
484 if (
Value > MaxValue)
489 AddSample_Internal(
Value);
494class TSampleMinMaxAvg<EMinMaxValueMode::PerMeasurement> :
public FSampleMinMaxAvg
500 inline void AddSample(
double Value)
502 AddSample_Internal(
Value);
507 if (
Value < MinValue)
512 if (
Value > MaxValue)
519template<
int32 MinMaxTimeSeconds>
520class TSampleMinMaxAvg<EMinMaxValueMode::PerTimeSeconds,
MinMaxTimeSeconds> :
public FSampleMinMaxAvg
526 inline void AddSample(
double Value)
528 AddSample_Internal(
Value);
533 if (
UNLIKELY(MinMaxPeriodStart == 0.0))
552 MinMaxPeriodSum = 0.0;
553 MinMaxPeriodCount = 0;
556 MinMaxPeriodSum +=
Value;
562 double MinMaxPeriodStart = 0.0;
565 double MinMaxPeriodSum = 0.0;
568 int32 MinMaxPeriodCount = 0;
574class FUsingNetStatsUtils
579 template<
typename ConsumerType,
int32 NumBins, EBinnedValueMode InMode>
using TBinnedMovingValue =
581 template<
typename ConsumerType,
int32 NumBins, EBinnedValueMode InMode>
using TBinnedDeltaMovingValue =
587 using EMinMaxValueMode = EMinMaxValueMode;
588 using FSampleMinMaxAvg = FSampleMinMaxAvg;
constexpr auto MakeArrayView(OtherRangeType &&Other)
Definition ArrayView.h:873
@ INDEX_NONE
Definition CoreMiscDefines.h:150
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
Definition ArrayView.h:139
Definition NetStatsUtils.h:116
NETCORE_API void Reset()
Definition NetStatsUtils.cpp:23
NETCORE_API void AddMeasurement_Implementation(double TimeVal, double Value, TOptional< double > &OutSample)
Definition NetStatsUtils.cpp:36
NETCORE_API double GetSample() const
Definition NetStatsUtils.cpp:61
FBinnedMovingValueBase()=delete
Definition NetStatsUtils.h:261
void AddMeasurement(double TimeVal, double Value)
Definition NetStatsUtils.h:277
void Reset()
Definition NetStatsUtils.h:290
Definition NetStatsUtils.h:200
void AddMeasurement(double TimeVal, double Value)
Definition NetStatsUtils.h:218
void Flush()
Definition NetStatsUtils.h:239
TBinnedMovingValue(double TimePerBin)
Definition NetStatsUtils.h:207
Definition NetStatsUtils.h:30
void PeekMeasurement(double TimeVal, double Value)
Definition NetStatsUtils.h:81
void PeekMeasurement(double TimeVal, double Value)
Definition NetStatsUtils.h:90
void OutputSample(double Value)
Definition NetStatsUtils.h:66
void SetConsumer(ConsumerType *InConsumer)
Definition NetStatsUtils.h:55
int32 GetMax(const FIntVector3 &V)
Definition Utilities.h:67
int32 GetMin(const FIntVector3 &V)
Definition Utilities.h:53
constexpr int32 MaxValue
Definition LandscapeDataAccess.h:26
Definition NetStatsUtils.h:333
Definition NetStatsUtils.h:599
Definition NetworkVersion.cpp:28
EBinnedValueMode
Definition NetStatsUtils.h:103
TBinnedMovingValue< ConsumerType, NumBins, EBinnedValueMode::MovingAvg > TBinnedMovingAvg
Definition NetStatsUtils.h:306
TBinnedDeltaMovingValue< ConsumerType, NumBins, EBinnedValueMode::MovingSum > TDeltaBinnedMovingSum
Definition NetStatsUtils.h:324
TBinnedDeltaMovingValue< ConsumerType, NumBins, EBinnedValueMode::MovingAvg > TDeltaBinnedMovingAvg
Definition NetStatsUtils.h:312
TBinnedMovingValue< ConsumerType, NumBins, EBinnedValueMode::MovingSum > TBinnedMovingSum
Definition NetStatsUtils.h:318
Definition Optional.h:131
constexpr OptionalType & GetValue()
Definition Optional.h:443
Definition NetStatsUtils.h:119
double Sum
Definition NetStatsUtils.h:121
int32 Count
Definition NetStatsUtils.h:124