127 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			127 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
// Copyright (c) 2023 Sentry. All Rights Reserved.
 | 
						|
 | 
						|
#include "SentryTransaction.h"
 | 
						|
#include "SentrySpan.h"
 | 
						|
 | 
						|
#include "Interface/SentryTransactionInterface.h"
 | 
						|
 | 
						|
#if PLATFORM_ANDROID
 | 
						|
#include "Android/SentryTransactionAndroid.h"
 | 
						|
#elif PLATFORM_IOS || PLATFORM_MAC
 | 
						|
#include "Apple/SentryTransactionApple.h"
 | 
						|
#elif PLATFORM_WINDOWS || PLATFORM_LINUX
 | 
						|
#include "Desktop/SentryTransactionDesktop.h"
 | 
						|
#endif
 | 
						|
 | 
						|
USentryTransaction::USentryTransaction()
 | 
						|
{
 | 
						|
}
 | 
						|
 | 
						|
USentrySpan* USentryTransaction::StartChild(const FString& Operation, const FString& Description)
 | 
						|
{
 | 
						|
	if (!SentryTransactionNativeImpl || SentryTransactionNativeImpl->IsFinished())
 | 
						|
		return nullptr;
 | 
						|
 | 
						|
	TSharedPtr<ISentrySpan> spanNativeImpl = SentryTransactionNativeImpl->StartChild(Operation, Description);
 | 
						|
 | 
						|
	USentrySpan* unrealSpan = NewObject<USentrySpan>();
 | 
						|
	unrealSpan->InitWithNativeImpl(spanNativeImpl);
 | 
						|
 | 
						|
	return unrealSpan;
 | 
						|
}
 | 
						|
 | 
						|
USentrySpan* USentryTransaction::StartChildWithTimestamp(const FString& Operation, const FString& Description, int64 Timestamp)
 | 
						|
{
 | 
						|
	if (!SentryTransactionNativeImpl || SentryTransactionNativeImpl->IsFinished())
 | 
						|
		return nullptr;
 | 
						|
 | 
						|
	TSharedPtr<ISentrySpan> spanNativeImpl = SentryTransactionNativeImpl->StartChildWithTimestamp(Operation, Description, Timestamp);
 | 
						|
 | 
						|
	USentrySpan* unrealSpan = NewObject<USentrySpan>();
 | 
						|
	unrealSpan->InitWithNativeImpl(spanNativeImpl);
 | 
						|
 | 
						|
	return unrealSpan;
 | 
						|
}
 | 
						|
 | 
						|
void USentryTransaction::Finish()
 | 
						|
{
 | 
						|
	if (!SentryTransactionNativeImpl || SentryTransactionNativeImpl->IsFinished())
 | 
						|
		return;
 | 
						|
 | 
						|
	SentryTransactionNativeImpl->Finish();
 | 
						|
}
 | 
						|
 | 
						|
void USentryTransaction::FinishWithTimestamp(int64 Timestamp)
 | 
						|
{
 | 
						|
	if (!SentryTransactionNativeImpl || SentryTransactionNativeImpl->IsFinished())
 | 
						|
		return;
 | 
						|
 | 
						|
	SentryTransactionNativeImpl->FinishWithTimestamp(Timestamp);
 | 
						|
}
 | 
						|
 | 
						|
bool USentryTransaction::IsFinished() const
 | 
						|
{
 | 
						|
	if (!SentryTransactionNativeImpl)
 | 
						|
		return false;
 | 
						|
 | 
						|
	return SentryTransactionNativeImpl->IsFinished();
 | 
						|
}
 | 
						|
 | 
						|
void USentryTransaction::SetName(const FString& name)
 | 
						|
{
 | 
						|
	if (!SentryTransactionNativeImpl || SentryTransactionNativeImpl->IsFinished())
 | 
						|
		return;
 | 
						|
 | 
						|
	SentryTransactionNativeImpl->SetName(name);
 | 
						|
}
 | 
						|
 | 
						|
void USentryTransaction::SetTag(const FString& key, const FString& value)
 | 
						|
{
 | 
						|
	if (!SentryTransactionNativeImpl || SentryTransactionNativeImpl->IsFinished())
 | 
						|
		return;
 | 
						|
 | 
						|
	SentryTransactionNativeImpl->SetTag(key, value);
 | 
						|
}
 | 
						|
 | 
						|
void USentryTransaction::RemoveTag(const FString& key)
 | 
						|
{
 | 
						|
	if (!SentryTransactionNativeImpl || SentryTransactionNativeImpl->IsFinished())
 | 
						|
		return;
 | 
						|
 | 
						|
	SentryTransactionNativeImpl->RemoveTag(key);
 | 
						|
}
 | 
						|
 | 
						|
void USentryTransaction::SetData(const FString& key, const TMap<FString, FString>& values)
 | 
						|
{
 | 
						|
	if (!SentryTransactionNativeImpl || SentryTransactionNativeImpl->IsFinished())
 | 
						|
		return;
 | 
						|
 | 
						|
	SentryTransactionNativeImpl->SetData(key, values);
 | 
						|
}
 | 
						|
 | 
						|
void USentryTransaction::RemoveData(const FString& key)
 | 
						|
{
 | 
						|
	if (!SentryTransactionNativeImpl || SentryTransactionNativeImpl->IsFinished())
 | 
						|
		return;
 | 
						|
 | 
						|
	SentryTransactionNativeImpl->RemoveData(key);
 | 
						|
}
 | 
						|
 | 
						|
void USentryTransaction::GetTrace(FString& name, FString& value)
 | 
						|
{
 | 
						|
	if (!SentryTransactionNativeImpl || SentryTransactionNativeImpl->IsFinished())
 | 
						|
		return;
 | 
						|
 | 
						|
	SentryTransactionNativeImpl->GetTrace(name, value);
 | 
						|
}
 | 
						|
 | 
						|
void USentryTransaction::InitWithNativeImpl(TSharedPtr<ISentryTransaction> transactionImpl)
 | 
						|
{
 | 
						|
	SentryTransactionNativeImpl = transactionImpl;
 | 
						|
}
 | 
						|
 | 
						|
TSharedPtr<ISentryTransaction> USentryTransaction::GetNativeImpl()
 | 
						|
{
 | 
						|
	return SentryTransactionNativeImpl;
 | 
						|
}
 |