90 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
		
		
			
		
	
	
			90 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| 
								 | 
							
								// Copyright (c) 2023 Sentry. All Rights Reserved.
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								#include "SentryTransactionApple.h"
							 | 
						|||
| 
								 | 
							
								#include "SentrySpanApple.h"
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								#include "Infrastructure/SentryConvertorsApple.h"
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								#include "Convenience/SentryInclude.h"
							 | 
						|||
| 
								 | 
							
								#include "Convenience/SentryMacro.h"
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								#include "SentryDefines.h"
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								SentryTransactionApple::SentryTransactionApple(id<SentrySpan> transaction)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
									TransactionApple = transaction;
							 | 
						|||
| 
								 | 
							
									[TransactionApple retain];
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								SentryTransactionApple::~SentryTransactionApple()
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
									[TransactionApple release];
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								id<SentrySpan> SentryTransactionApple::GetNativeObject()
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
									return TransactionApple;
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								TSharedPtr<ISentrySpan> SentryTransactionApple::StartChild(const FString& operation, const FString& desctiption)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
									id<SentrySpan> span = [TransactionApple startChildWithOperation:operation.GetNSString() description:desctiption.GetNSString()];
							 | 
						|||
| 
								 | 
							
									return MakeShareable(new SentrySpanApple(span));
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								TSharedPtr<ISentrySpan> SentryTransactionApple::StartChildWithTimestamp(const FString& operation, const FString& desctiption, int64 timestamp)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
									UE_LOG(LogSentrySdk, Log, TEXT("Starting child span with explicit timestamp not supported on Mac/iOS."));
							 | 
						|||
| 
								 | 
							
									return StartChild(operation, desctiption);
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								void SentryTransactionApple::Finish()
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
									[TransactionApple finish];
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								void SentryTransactionApple::FinishWithTimestamp(int64 timestamp)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
									UE_LOG(LogSentrySdk, Log, TEXT("Finishing transaction with explicit timestamp not supported on Mac/iOS."));
							 | 
						|||
| 
								 | 
							
									Finish();
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								bool SentryTransactionApple::IsFinished() const
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
									return TransactionApple.isFinished;
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								void SentryTransactionApple::SetName(const FString& name)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
									// no corresponding implementation in sentry-cocoa
							 | 
						|||
| 
								 | 
							
									UE_LOG(LogSentrySdk, Warning, TEXT("The Cocoa SDK doesn't currently support SetName function"));
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								void SentryTransactionApple::SetTag(const FString& key, const FString& value)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
									[TransactionApple setTagValue:value.GetNSString() forKey:key.GetNSString()];
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								void SentryTransactionApple::RemoveTag(const FString& key)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
									[TransactionApple removeTagForKey:key.GetNSString()];
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								void SentryTransactionApple::SetData(const FString& key, const TMap<FString, FString>& values)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
									[TransactionApple setDataValue:SentryConvertorsApple::StringMapToNative(values) forKey:key.GetNSString()];
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								void SentryTransactionApple::RemoveData(const FString& key)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
									[TransactionApple removeDataForKey:key.GetNSString()];
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								void SentryTransactionApple::GetTrace(FString& name, FString& value)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
									SentryTraceHeader* traceHeader = [TransactionApple toTraceHeader];
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									name = TEXT("sentry-trace");
							 | 
						|||
| 
								 | 
							
									value = FString([traceHeader value]);
							 | 
						|||
| 
								 | 
							
								}
							 |