75 lines
1.8 KiB
C++
75 lines
1.8 KiB
C++
|
|
// Copyright (c) 2022 Sentry. All Rights Reserved.
|
||
|
|
|
||
|
|
#include "SentryEventApple.h"
|
||
|
|
|
||
|
|
#include "Infrastructure/SentryConvertorsApple.h"
|
||
|
|
|
||
|
|
#include "Convenience/SentryInclude.h"
|
||
|
|
#include "Convenience/SentryMacro.h"
|
||
|
|
|
||
|
|
SentryEventApple::SentryEventApple()
|
||
|
|
{
|
||
|
|
EventApple = [[SENTRY_APPLE_CLASS(SentryEvent) alloc] init];
|
||
|
|
}
|
||
|
|
|
||
|
|
SentryEventApple::SentryEventApple(SentryEvent* event)
|
||
|
|
{
|
||
|
|
EventApple = event;
|
||
|
|
}
|
||
|
|
|
||
|
|
SentryEventApple::~SentryEventApple()
|
||
|
|
{
|
||
|
|
// Put custom destructor logic here if needed
|
||
|
|
}
|
||
|
|
|
||
|
|
SentryEvent* SentryEventApple::GetNativeObject()
|
||
|
|
{
|
||
|
|
return EventApple;
|
||
|
|
}
|
||
|
|
|
||
|
|
void SentryEventApple::SetMessage(const FString& message)
|
||
|
|
{
|
||
|
|
SentryMessage* msg = [SENTRY_APPLE_CLASS(SentryMessage) alloc];
|
||
|
|
msg.message = message.GetNSString();
|
||
|
|
EventApple.message = msg;
|
||
|
|
}
|
||
|
|
|
||
|
|
FString SentryEventApple::GetMessage() const
|
||
|
|
{
|
||
|
|
SentryMessage* msg = EventApple.message;
|
||
|
|
return FString(msg.message);
|
||
|
|
}
|
||
|
|
|
||
|
|
void SentryEventApple::SetLevel(ESentryLevel level)
|
||
|
|
{
|
||
|
|
EventApple.level = SentryConvertorsApple::SentryLevelToNative(level);
|
||
|
|
}
|
||
|
|
|
||
|
|
ESentryLevel SentryEventApple::GetLevel() const
|
||
|
|
{
|
||
|
|
return SentryConvertorsApple::SentryLevelToUnreal(EventApple.level);
|
||
|
|
}
|
||
|
|
|
||
|
|
bool SentryEventApple::IsCrash() const
|
||
|
|
{
|
||
|
|
return EventApple.error != nullptr;
|
||
|
|
}
|
||
|
|
|
||
|
|
bool SentryEventApple::IsAnr() const
|
||
|
|
{
|
||
|
|
bool isErrorLevel = EventApple.level == kSentryLevelError;
|
||
|
|
bool isAppHangException = false;
|
||
|
|
bool isAppHangMechanism = false;
|
||
|
|
bool isAppHangMessage = false;
|
||
|
|
|
||
|
|
if (EventApple.exceptions != nil && EventApple.exceptions.count == 1)
|
||
|
|
{
|
||
|
|
SentryException *exception = EventApple.exceptions[0];
|
||
|
|
isAppHangException = [exception.type isEqualToString:@"App Hanging"];
|
||
|
|
isAppHangMechanism = exception.mechanism != nil && [exception.mechanism.type isEqualToString:@"AppHang"];
|
||
|
|
isAppHangMessage = [exception.value hasPrefix:@"App hanging for at least"];
|
||
|
|
}
|
||
|
|
|
||
|
|
return isErrorLevel && isAppHangException && isAppHangMechanism && isAppHangMessage;
|
||
|
|
}
|