6#include "Containers/Array.h"
26#include "EscalationStates.generated.h"
104#define ESCALATION_QUOTA_DEBUG 0
114 class FEscalationManager;
115 struct FEscalationCounter;
265 return T::GetConfigSection();
273 return T::GetBaseConfigClass();
309#if ESCALATION_QUOTA_DEBUG
324#if ESCALATION_QUOTA_DEBUG
339#if ESCALATION_QUOTA_DEBUG
388 template<
typename T,
typename = decltype(TBaseStructure<T>::Get())>
403 T* operator->()
const
408 explicit operator bool()
const
424 const U*
Cast()
const
426 return const_cast<TStructOnScopeLite*
>(
this)->
Cast<U>();
431 struct FEscalationManagerParms
433 int32 NumCounters = 0;
435 const UStruct* StateStruct =
nullptr;
436 uint8* StateMemory =
nullptr;
439 struct FEscalationManagerInitParms
448 NETCORE_API FEscalationManager(FEscalationManagerParms Parms);
450 NETCORE_API void InitParms(FEscalationManagerInitParms Parms);
452 FEscalationManager() =
delete;
499 check(CounterIndex < NumCounters);
501 return FrameCounters[CounterIndex];
556 FString ManagerContext;
562 int32 NumCounters = 0;
565 bool bEnabled =
false;
569 TStructOnScopeLite<FEscalationState> State;
572 int8 ActiveState = 0;
575 double LastMetEscalationConditions = 0.0;
585 double LastPerSecQuotaBegin = 0.0;
594 int32 LastCountersPerSecHistoryIdx = 0;
617template<
typename CountersEnum,
typename EscalationStateType,
typename CounterCategoriesEnum=EEmptyCategories>
625 struct CHasEnumPreallocNum
628 auto Requires() ->
decltype(
634 template<
typename T,
typename TEnableIf<TModels_V<CHasEnumPreallocNum, T>>::Type* =
nullptr>
635 inline static constexpr int32 GetCounterNumPrealloc()
637 return FMath::Max((
int32)T::NumPrealloc, (
int32)T::Max);
640 template<
typename T,
typename TEnableIf<!TModels_V<CHasEnumPreallocNum, T>>::Type* =
nullptr>
641 inline static constexpr int32 GetCounterNumPrealloc()
643 return (
int32)T::Max;
647 static constexpr int32 TNum = (
int32)CountersEnum::Max;
653 static constexpr int32 TNumCategories = (
int32)CounterCategoriesEnum::Max;
662 FEscalationManagerParms
664 TNum,
MakeArrayView(RegisteredCountersCacheAlloc, TNumCategories),
665 EscalationStateType::StaticStruct(), (
uint8*)&StateAlloc
669 "CountersPerPeriodAlloc initialization must match CountersPerPeriodHistory length");
671 FrameCountersAlloc.SetNum(TNumPrealloc);
672 SecondCountersAlloc.SetNum(TNumPrealloc);
673 CountersPerPeriodAlloc.SetNum(TNumPrealloc *
UE_ARRAY_COUNT(CountersPerPeriodHistory));
676 FEscalationManagerInitParms
688 void Init(FString ConfigContext)
692 EscalationStateType::StaticStruct()
705 FrameCountersAlloc.AddDefaulted(
Count);
706 SecondCountersAlloc.AddDefaulted(
Count);
725 check(CounterIndex >= 0);
760 NETCORE_API virtual void LoadStateConfig()
override;
OODEFFUNC typedef void(OODLE_CALLBACK t_fp_OodleCore_Plugin_Free)(void *ptr)
constexpr auto MakeArrayView(OtherRangeType &&Other)
Definition ArrayView.h:873
#define check(expr)
Definition AssertionMacros.h:314
@ INDEX_NONE
Definition CoreMiscDefines.h:150
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
TCopyQualifiersFromTo_T< From, To > * Cast(From *Src)
Definition Casts.h:95
EQuotaType
Definition EscalationStates.h:124
const bool
Definition NetworkReplayStreaming.h:178
#define UPROPERTY(...)
UObject definition macros.
Definition ObjectMacros.h:744
#define GENERATED_BODY(...)
Definition ObjectMacros.h:765
#define UCLASS(...)
Definition ObjectMacros.h:776
#define USTRUCT(...)
Definition ObjectMacros.h:746
#define UE_ARRAY_COUNT(array)
Definition UnrealTemplate.h:212
Definition Engine.Build.cs:7
Definition StructOnScope.h:13
virtual const UStruct * GetStruct() const
Definition StructOnScope.h:72
uint8 * SampleStructMemory
Definition StructOnScope.h:16
virtual bool IsValid() const
Definition StructOnScope.h:85
Definition ArrayView.h:139
Definition ContainerAllocationPolicies.h:894
Definition StructOnScope.h:142
Definition EscalationStates.h:380
NETCORE_API void SetNotifySeverityUpdate(FNotifySeverityUpdate &&InNotifySeverityUpdate)
Definition EscalationStates.cpp:526
NETCORE_API void SetManagerContext(FString InManagerContext)
Definition EscalationStates.cpp:521
NETCORE_API bool IsDormant() const
Definition EscalationStates.cpp:511
NETCORE_API void CheckQuotas()
Definition EscalationStates.cpp:502
NETCORE_API void TickRealtime(double TimeSeconds)
Definition EscalationStates.cpp:306
bool DoesRequireTick() const
Definition EscalationStates.h:522
FEscalationCounter & GetFrameCounter(int32 CounterIndex)
Definition EscalationStates.h:497
NETCORE_API const UEscalationManagerConfig * GetBaseConfig() const
Definition EscalationStates.cpp:516
Definition EscalationStates.h:619
void RegisterCounterCategory(int32 CategoryIndex, int32 CounterIndex)
Definition EscalationStates.h:722
void Init(FString ConfigContext)
Definition EscalationStates.h:688
int32 AddNewCounter(int32 Count=1)
Definition EscalationStates.h:703
TEscalationManager()
Definition EscalationStates.h:660
Definition EscalationStates.h:756
Definition StateStruct.h:205
EEscalateResult
Definition EscalationStates.h:369
ESeverityUpdate
Definition EscalationStates.h:349
EEmptyCategories
Definition EscalationStates.h:606
@ Max
Definition EscalationStates.h:607
EEscalateReason
Definition EscalationStates.h:359
Definition AdvancedWidgetsModule.cpp:13
@ false
Definition radaudio_common.h:23
Definition EscalationStates.h:159
EValidateTime
Definition EscalationStates.h:168
friend UEscalationManagerConfig
Definition EscalationStates.h:161
Definition EscalationStates.h:133
const TArrayView< FEscalationCounter > & SecondCounters
Definition EscalationStates.h:143
const TArrayView< TArrayView< int32 > > & RegisteredCounters
Definition EscalationStates.h:137
EQuotaType QuotaType
Definition EscalationStates.h:149
const TArrayView< FEscalationCounter > & FrameCounters
Definition EscalationStates.h:146
Definition StateStruct.h:108
Definition StateStruct.h:128
Definition EscalationStates.h:259
static UClass * GetBaseConfigClass()
Definition EscalationStates.h:271
static const TCHAR * GetConfigSection()
Definition EscalationStates.h:263
Definition UnrealTypeTraits.h:40
Definition EscalationStates.h:302
void AccumulateCounter(const FEscalationCounter &InCounter)
Definition EscalationStates.h:334
double AccumTime
Definition EscalationStates.h:307
int32 Counter
Definition EscalationStates.h:304
void ResetCounters()
Definition EscalationStates.h:319