// Copyright Epic Games, Inc. All Rights Reserved. #include "TelemetryService.h" #include "Logging/SubmitToolLog.h" #include "Parameters/SubmitToolParameters.h" #include "NullTelemetry.h" #include "StandAloneTelemetry.h" #include "SubmitToolStudioTelemetry.h" FCriticalSection FTelemetryService::InstanceCriticalSection; TSharedPtr FTelemetryService::TelemetryInstance = nullptr; const TSharedPtr& FTelemetryService::Get() { return TelemetryInstance; } void FTelemetryService::Init(const FTelemetryParameters& InTelemetryParameters) { if (InTelemetryParameters.Instance.Equals(TEXT("StandAlone"), ESearchCase::IgnoreCase)) { if (InTelemetryParameters.Url.IsEmpty()) { Set(MakeShared()); } else { Set(MakeShared(InTelemetryParameters.Url, FGuid())); } } else if (InTelemetryParameters.Instance.Equals(TEXT("StudioTelemetry"), ESearchCase::IgnoreCase)) { Set(MakeShared()); } else { Set(MakeShared()); } } void FTelemetryService::Set(TSharedPtr InInstance) { if (InInstance == nullptr) { UE_LOG(LogSubmitTool, Warning, TEXT("Trying to set a null telemetry instance. Operation aborted.")); return; } InstanceCriticalSection.Lock(); TelemetryInstance = InInstance; InstanceCriticalSection.Unlock(); } void FTelemetryService::BlockFlush(float InTimeout) { TelemetryInstance->BlockFlush(InTimeout); } void FTelemetryService::Shutdown() { TelemetryInstance = nullptr; }