15 template<
typename DATA_TYPE,
typename =
void>
18 template<
typename DATA_TYPE>
21 std::enable_if_t<std::is_same_v<std::decay_t<
decltype(DATA_TYPE::TelemetryID)>,
FGuid>>> =
true;
23 template <
typename DATA_TYPE>
28 return DATA_TYPE::TelemetryID;
36 template <
typename DATA_TYPE>
40 "Unsupported type for telemetry router, must have a static constexpr FGuid member TelemetryID");
44 return DATA_TYPE::TelemetryID;
82 template<
typename DATA_TYPE>
85 ProvideTelemetryInternal(UE::Telemetry::Private::GetDataKey<DATA_TYPE>(),
MakeMemoryView(&Data,
sizeof(
DATA_TYPE)));
93 template<
typename DATA_TYPE>
96 check(Sink.IsBound());
98 RegisterTelemetrySinkInternal(UE::Telemetry::Private::GetDataKey<DATA_TYPE>(),
sizeof(
DATA_TYPE),
Handle,
100 return Sink.ExecuteIfBound(*
reinterpret_cast<const DATA_TYPE*
>(Data.GetData()));
111 typename = std::enable_if_t<std::is_invocable_v<CALLABLE, const DATA_TYPE&>>
116 RegisterTelemetrySinkInternal(UE::Telemetry::Private::GetDataKey<DATA_TYPE>(),
sizeof(
DATA_TYPE),
Handle,
118 Sink(*
reinterpret_cast<const DATA_TYPE*
>(Data.GetData()));
127 template<
typename DATA_TYPE>
130 UnregisterTelemetrySinkInternal(UE::Telemetry::Private::GetDataKey<DATA_TYPE>(),
Handle);
#define check(expr)
Definition AssertionMacros.h:314
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
constexpr TMemoryView< void > MakeMemoryView(void *Data, uint64 Size)
Definition MemoryView.h:257
const bool
Definition NetworkReplayStreaming.h:178
UE_INTRINSIC_CAST UE_REWRITE constexpr std::remove_reference_t< T > && MoveTemp(T &&Obj) noexcept
Definition UnrealTemplate.h:520
Definition IDelegateInstance.h:14
@ GenerateNewHandle
Definition IDelegateInstance.h:18
Definition TelemetryRouter.h:70
static TELEMETRYUTILS_API FTelemetryRouter & Get()
Definition TelemetryRouter.cpp:26
FDelegateHandle OnTelemetry(TDelegate< void(const DATA_TYPE &)> Sink)
Definition TelemetryRouter.h:94
FTelemetryRouter()
Definition TelemetryRouter.cpp:18
FDelegateHandle OnTelemetry(CALLABLE &&Sink)
Definition TelemetryRouter.h:113
~FTelemetryRouter()
Definition TelemetryRouter.cpp:22
void ProvideTelemetry(const DATA_TYPE &Data)
Definition TelemetryRouter.h:83
void UnregisterTelemetrySink(FDelegateHandle Handle)
Definition TelemetryRouter.h:128
Definition DelegateSignatureImpl.inl:310
Definition AndroidPlatformMisc.h:14
Definition UnrealString.h.inl:34
Definition TelemetryRouter.h:14
FGuid GetDataKey()
Definition TelemetryRouter.h:37
auto GetDataKeyInternal()
Definition TelemetryRouter.h:24
constexpr bool HasTelemetryID
Definition TelemetryRouter.h:16