UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
NetAnalytics.h File Reference
#include "Containers/Map.h"
#include "Containers/UnrealString.h"
#include "CoreMinimal.h"
#include "HAL/Platform.h"
#include "Templates/Atomic.h"
#include "Templates/SharedPointer.h"
#include "Templates/UnrealTypeTraits.h"
#include "UObject/NameTypes.h"

Go to the source code of this file.

Classes

struct  FLocalNetAnalyticsStruct
 
struct  FNetAnalyticsData
 
struct  TBasicNetAnalyticsData< TDataStruct >
 
struct  FNetAnalyticsDataDeleter
 
class  FNetAnalyticsAggregator
 

Macros

#define NET_ANALYTICS_MULTITHREADING   0
 
#define REGISTER_NET_ANALYTICS(Aggregator, AnalyticsDataType, InDataName)
 

Typedefs

template<class T = FNetAnalyticsData>
using TNetAnalyticsDataRef = TSharedRef< T, NetAnalyticsThreadSafety >
 
template<class T = FNetAnalyticsData>
using TNetAnalyticsDataPtr = TSharedPtr< T, NetAnalyticsThreadSafety >
 
template<class T = FNetAnalyticsData>
using TNetAnalyticsDataWeakPtr = TWeakPtr< T, NetAnalyticsThreadSafety >
 

Variables

constexpr const ESPMode NetAnalyticsThreadSafety = ESPMode::ThreadSafe
 
NETCORE_API TAtomic< uint8GNetAnalyticsCounter
 

Macro Definition Documentation

◆ NET_ANALYTICS_MULTITHREADING

#define NET_ANALYTICS_MULTITHREADING   0

Whether or not to enable multithreaded support (future proofing for netcode multithreading) - comes with a performance cost

◆ REGISTER_NET_ANALYTICS

#define REGISTER_NET_ANALYTICS (   Aggregator,
  AnalyticsDataType,
  InDataName 
)
Value:
(Aggregator->RegisterAnalyticsData_Internal(MakeShareable(new AnalyticsDataType(), FNetAnalyticsDataDeleter()), InDataName, \
#define TEXT(x)
Definition Platform.h:1272
SharedPointerInternals::TRawPtrProxy< ObjectType > MakeShareable(ObjectType *InObject)
Definition SharedPointer.h:1947
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
Definition NetAnalytics.h:307

Registers a named FNetAnalyticsData instance with the net analytics aggregator. Implemented this way, to support runtime name/type checks, without relying on statics.

NOTE: May return nullptr! The analytics aggregator can selectively enable/disable analytics, based on the analytics data name

Parameters
AggregatorThe net analytics aggregator to register with
AnalyticsDataTypeThe net analytics data type to create and register
InDataNameThe name associated with this analytics data - for looking it up
Returns
Returns a shared pointer to the newly created net analytics data instance

Typedef Documentation

◆ TNetAnalyticsDataPtr

template<class T = FNetAnalyticsData>
using TNetAnalyticsDataPtr = TSharedPtr<T, NetAnalyticsThreadSafety>

◆ TNetAnalyticsDataRef

template<class T = FNetAnalyticsData>
using TNetAnalyticsDataRef = TSharedRef<T, NetAnalyticsThreadSafety>

◆ TNetAnalyticsDataWeakPtr

template<class T = FNetAnalyticsData>
using TNetAnalyticsDataWeakPtr = TWeakPtr<T, NetAnalyticsThreadSafety>

Variable Documentation

◆ GNetAnalyticsCounter

NETCORE_API TAtomic<uint8> GNetAnalyticsCounter
extern

Counter used to detect when a new FNetAnalyticsAggregator (i.e. new NetDriver) has been created - to trigger cleanup of TLS data

◆ NetAnalyticsThreadSafety

constexpr const ESPMode NetAnalyticsThreadSafety = ESPMode::ThreadSafe
inlineconstexpr