zworld-em/Plugins/sentry-unreal/Source/Sentry/Private/SentryEvent.cpp

103 lines
1.9 KiB
C++
Raw Normal View History

2025-05-11 22:07:21 +08:00
// Copyright (c) 2022 Sentry. All Rights Reserved.
#include "SentryEvent.h"
#include "Interface/SentryEventInterface.h"
#if PLATFORM_ANDROID
#include "Android/SentryEventAndroid.h"
#elif PLATFORM_IOS || PLATFORM_MAC
#include "Apple/SentryEventApple.h"
#elif PLATFORM_WINDOWS || PLATFORM_LINUX
#include "Desktop/SentryEventDesktop.h"
#endif
USentryEvent::USentryEvent()
{
if (USentryEvent::StaticClass()->GetDefaultObject() != this)
{
#if PLATFORM_ANDROID
EventNativeImpl = MakeShareable(new SentryEventAndroid());
#elif PLATFORM_IOS || PLATFORM_MAC
EventNativeImpl = MakeShareable(new SentryEventApple());
#elif (PLATFORM_WINDOWS || PLATFORM_LINUX) && USE_SENTRY_NATIVE
EventNativeImpl = MakeShareable(new SentryEventDesktop());
#endif
}
}
USentryEvent* USentryEvent::CreateEventWithMessageAndLevel(const FString& Message, ESentryLevel Level)
{
USentryEvent* Event = NewObject<USentryEvent>();
if(!Message.IsEmpty())
{
Event->SetMessage(Message);
}
Event->SetLevel(Level);
return Event;
}
void USentryEvent::SetMessage(const FString& Message)
{
if (!EventNativeImpl)
return;
EventNativeImpl->SetMessage(Message);
}
FString USentryEvent::GetMessage() const
{
if(!EventNativeImpl)
return FString();
return EventNativeImpl->GetMessage();
}
void USentryEvent::SetLevel(ESentryLevel Level)
{
if (!EventNativeImpl)
return;
EventNativeImpl->SetLevel(Level);
}
ESentryLevel USentryEvent::GetLevel() const
{
if(!EventNativeImpl)
return ESentryLevel::Debug;
return EventNativeImpl->GetLevel();
}
bool USentryEvent::IsCrash() const
{
if(!EventNativeImpl)
return false;
return EventNativeImpl->IsCrash();
}
bool USentryEvent::IsAnr() const
{
if(!EventNativeImpl)
return false;
return EventNativeImpl->IsAnr();
}
void USentryEvent::InitWithNativeImpl(TSharedPtr<ISentryEvent> eventImpl)
{
if (!EventNativeImpl)
return;
EventNativeImpl = eventImpl;
}
TSharedPtr<ISentryEvent> USentryEvent::GetNativeImpl()
{
return EventNativeImpl;
}