243 lines
4.4 KiB
C++
243 lines
4.4 KiB
C++
// Copyright (c) 2022 Sentry. All Rights Reserved.
|
|
|
|
#include "SentryScope.h"
|
|
#include "SentryBreadcrumb.h"
|
|
#include "SentryAttachment.h"
|
|
|
|
#include "Interface/SentryScopeInterface.h"
|
|
|
|
#if PLATFORM_ANDROID
|
|
#include "Android/SentryScopeAndroid.h"
|
|
#elif PLATFORM_IOS || PLATFORM_MAC
|
|
#include "Apple/SentryScopeApple.h"
|
|
#elif PLATFORM_WINDOWS || PLATFORM_LINUX
|
|
#include "Desktop/SentryScopeDesktop.h"
|
|
#endif
|
|
|
|
USentryScope::USentryScope()
|
|
{
|
|
if (USentryScope::StaticClass()->GetDefaultObject() != this)
|
|
{
|
|
#if PLATFORM_ANDROID
|
|
ScopeNativeImpl = MakeShareable(new SentryScopeAndroid());
|
|
#elif PLATFORM_IOS || PLATFORM_MAC
|
|
ScopeNativeImpl = MakeShareable(new SentryScopeApple());
|
|
#elif (PLATFORM_WINDOWS || PLATFORM_LINUX) && USE_SENTRY_NATIVE
|
|
ScopeNativeImpl = MakeShareable(new SentryScopeDesktop());
|
|
#endif
|
|
}
|
|
}
|
|
|
|
void USentryScope::AddBreadcrumb(USentryBreadcrumb* Breadcrumb)
|
|
{
|
|
if (!ScopeNativeImpl)
|
|
return;
|
|
|
|
ScopeNativeImpl->AddBreadcrumb(Breadcrumb->GetNativeImpl());
|
|
}
|
|
|
|
void USentryScope::ClearBreadcrumbs()
|
|
{
|
|
if (!ScopeNativeImpl)
|
|
return;
|
|
|
|
ScopeNativeImpl->ClearBreadcrumbs();
|
|
}
|
|
|
|
void USentryScope::AddAttachment(USentryAttachment* Attachment)
|
|
{
|
|
if (!ScopeNativeImpl)
|
|
return;
|
|
|
|
ScopeNativeImpl->AddAttachment(Attachment->GetNativeImpl());
|
|
}
|
|
|
|
void USentryScope::ClearAttachments()
|
|
{
|
|
if (!ScopeNativeImpl)
|
|
return;
|
|
|
|
ScopeNativeImpl->ClearAttachments();
|
|
}
|
|
|
|
void USentryScope::SetTagValue(const FString& Key, const FString& Value)
|
|
{
|
|
if (!ScopeNativeImpl)
|
|
return;
|
|
|
|
ScopeNativeImpl->SetTagValue(Key, Value);
|
|
}
|
|
|
|
FString USentryScope::GetTagValue(const FString& Key) const
|
|
{
|
|
if (!ScopeNativeImpl)
|
|
return FString();
|
|
|
|
return ScopeNativeImpl->GetTagValue(Key);
|
|
}
|
|
|
|
void USentryScope::RemoveTag(const FString& Key)
|
|
{
|
|
if (!ScopeNativeImpl)
|
|
return;
|
|
|
|
ScopeNativeImpl->RemoveTag(Key);
|
|
}
|
|
|
|
void USentryScope::SetTags(const TMap<FString, FString>& Tags)
|
|
{
|
|
if (!ScopeNativeImpl)
|
|
return;
|
|
|
|
ScopeNativeImpl->SetTags(Tags);
|
|
}
|
|
|
|
TMap<FString, FString> USentryScope::GetTags() const
|
|
{
|
|
if (!ScopeNativeImpl)
|
|
return TMap<FString, FString>();
|
|
|
|
return ScopeNativeImpl->GetTags();
|
|
}
|
|
|
|
void USentryScope::SetDist(const FString& Dist)
|
|
{
|
|
if (!ScopeNativeImpl)
|
|
return;
|
|
|
|
ScopeNativeImpl->SetDist(Dist);
|
|
}
|
|
|
|
FString USentryScope::GetDist() const
|
|
{
|
|
if (!ScopeNativeImpl)
|
|
return FString();
|
|
|
|
return ScopeNativeImpl->GetDist();
|
|
}
|
|
|
|
void USentryScope::SetEnvironment(const FString& Environment)
|
|
{
|
|
if (!ScopeNativeImpl)
|
|
return;
|
|
|
|
ScopeNativeImpl->SetEnvironment(Environment);
|
|
}
|
|
|
|
FString USentryScope::GetEnvironment() const
|
|
{
|
|
if (!ScopeNativeImpl)
|
|
return FString();
|
|
|
|
return ScopeNativeImpl->GetEnvironment();
|
|
}
|
|
|
|
void USentryScope::SetFingerprint(const TArray<FString>& Fingerprint)
|
|
{
|
|
if (!ScopeNativeImpl)
|
|
return;
|
|
|
|
ScopeNativeImpl->SetFingerprint(Fingerprint);
|
|
}
|
|
|
|
TArray<FString> USentryScope::GetFingerprint() const
|
|
{
|
|
if (!ScopeNativeImpl)
|
|
return TArray<FString>();
|
|
|
|
return ScopeNativeImpl->GetFingerprint();
|
|
}
|
|
|
|
void USentryScope::SetLevel(ESentryLevel Level)
|
|
{
|
|
if (!ScopeNativeImpl)
|
|
return;
|
|
|
|
ScopeNativeImpl->SetLevel(Level);
|
|
}
|
|
|
|
ESentryLevel USentryScope::GetLevel() const
|
|
{
|
|
if(!ScopeNativeImpl)
|
|
return ESentryLevel::Debug;
|
|
|
|
return ScopeNativeImpl->GetLevel();
|
|
}
|
|
|
|
void USentryScope::SetContext(const FString& Key, const TMap<FString, FString>& Values)
|
|
{
|
|
if(!ScopeNativeImpl)
|
|
return;
|
|
|
|
ScopeNativeImpl->SetContext(Key, Values);
|
|
}
|
|
|
|
void USentryScope::RemoveContext(const FString& Key)
|
|
{
|
|
if(!ScopeNativeImpl)
|
|
return;
|
|
|
|
ScopeNativeImpl->RemoveContext(Key);
|
|
}
|
|
|
|
void USentryScope::SetExtraValue(const FString& Key, const FString& Value)
|
|
{
|
|
if(!ScopeNativeImpl)
|
|
return;
|
|
|
|
ScopeNativeImpl->SetExtraValue(Key, Value);
|
|
}
|
|
|
|
FString USentryScope::GetExtraValue(const FString& Key) const
|
|
{
|
|
if(!ScopeNativeImpl)
|
|
return FString();
|
|
|
|
return ScopeNativeImpl->GetExtraValue(Key);
|
|
}
|
|
|
|
void USentryScope::RemoveExtra(const FString& Key)
|
|
{
|
|
if(!ScopeNativeImpl)
|
|
return;
|
|
|
|
ScopeNativeImpl->RemoveExtra(Key);
|
|
}
|
|
|
|
void USentryScope::SetExtras(const TMap<FString, FString>& Extras)
|
|
{
|
|
if(!ScopeNativeImpl)
|
|
return;
|
|
|
|
ScopeNativeImpl->SetExtras(Extras);
|
|
}
|
|
|
|
TMap<FString, FString> USentryScope::GetExtras() const
|
|
{
|
|
if (!ScopeNativeImpl)
|
|
return TMap<FString, FString>();
|
|
|
|
return ScopeNativeImpl->GetExtras();
|
|
}
|
|
|
|
void USentryScope::Clear()
|
|
{
|
|
if (!ScopeNativeImpl)
|
|
return;
|
|
|
|
ScopeNativeImpl->Clear();
|
|
}
|
|
|
|
void USentryScope::InitWithNativeImpl(TSharedPtr<ISentryScope> scopeImpl)
|
|
{
|
|
if (!ScopeNativeImpl)
|
|
return;
|
|
|
|
ScopeNativeImpl = scopeImpl;
|
|
}
|
|
|
|
TSharedPtr<ISentryScope> USentryScope::GetNativeImpl()
|
|
{
|
|
return ScopeNativeImpl;
|
|
}
|