2016-01-07 08:17:16 -05:00
|
|
|
// Copyright 1998-2016 Epic Games, Inc. All Rights Reserved.
|
2015-01-15 11:57:16 -05:00
|
|
|
|
|
|
|
|
#include "PerfCounters.h"
|
|
|
|
|
|
|
|
|
|
class FPerfCountersModule : public IPerfCountersModule
|
|
|
|
|
{
|
|
|
|
|
private:
|
|
|
|
|
|
|
|
|
|
/** All created perf counter instances from this module */
|
|
|
|
|
FPerfCounters* PerfCountersSingleton;
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
|
|
|
|
FPerfCountersModule() :
|
|
|
|
|
PerfCountersSingleton(NULL)
|
|
|
|
|
{}
|
|
|
|
|
|
|
|
|
|
void ShutdownModule()
|
|
|
|
|
{
|
|
|
|
|
if (PerfCountersSingleton)
|
|
|
|
|
{
|
|
|
|
|
delete PerfCountersSingleton;
|
|
|
|
|
PerfCountersSingleton = nullptr;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
virtual bool SupportsDynamicReloading() override
|
|
|
|
|
{
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
virtual bool SupportsAutomaticShutdown() override
|
|
|
|
|
{
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
2015-10-28 08:58:16 -04:00
|
|
|
IPerfCounters* GetPerformanceCounters() const
|
2015-01-15 11:57:16 -05:00
|
|
|
{
|
|
|
|
|
return PerfCountersSingleton;
|
|
|
|
|
}
|
|
|
|
|
|
2015-10-28 08:58:16 -04:00
|
|
|
IPerfCounters* CreatePerformanceCounters(const FString& UniqueInstanceId) override
|
2015-01-15 11:57:16 -05:00
|
|
|
{
|
|
|
|
|
if (PerfCountersSingleton)
|
|
|
|
|
{
|
2015-10-28 08:58:16 -04:00
|
|
|
UE_LOG(LogPerfCounters, Display, TEXT("CreatePerformanceCounters: instance already exists, new instance not created."));
|
2015-01-15 11:57:16 -05:00
|
|
|
return PerfCountersSingleton;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
FString InstanceUID = UniqueInstanceId;
|
|
|
|
|
if (InstanceUID.IsEmpty())
|
|
|
|
|
{
|
|
|
|
|
InstanceUID = FString::Printf(TEXT("perfcounters-of-pid-%d"), FPlatformProcess::GetCurrentProcessId());
|
|
|
|
|
}
|
|
|
|
|
|
2015-10-28 08:58:16 -04:00
|
|
|
FPerfCounters* PerfCounters = new FPerfCounters(InstanceUID);
|
2015-03-18 10:12:32 -04:00
|
|
|
if (!PerfCounters->Initialize())
|
2015-01-15 11:57:16 -05:00
|
|
|
{
|
2015-03-18 10:12:32 -04:00
|
|
|
UE_LOG(LogPerfCounters, Warning, TEXT("CreatePerformanceCounters: could not create perfcounters"));
|
2015-01-15 11:57:16 -05:00
|
|
|
delete PerfCounters;
|
|
|
|
|
return nullptr;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
PerfCountersSingleton = PerfCounters;
|
|
|
|
|
return PerfCounters;
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
IMPLEMENT_MODULE(FPerfCountersModule, PerfCounters)
|
|
|
|
|
DEFINE_LOG_CATEGORY(LogPerfCounters);
|