65 lines
2.0 KiB
C++
65 lines
2.0 KiB
C++
/***
|
|
Copyright (C) 2022 J Reece Wilson (a/k/a "Reece"). All rights reserved.
|
|
|
|
File: Main.cpp
|
|
Date: 2022-2-18
|
|
Author: Reece
|
|
***/
|
|
#include <AuroraRuntime.hpp>
|
|
#include <gtest/gtest.h>
|
|
|
|
static void AddHooks()
|
|
{
|
|
AuExit::ExitHandlerAdd(AuExit::ETriggerLevel::eProblematicEvent,
|
|
AuMakeShared<AuExit::IExitSubscriberFunctional>(
|
|
[](AuExit::ETriggerLevel level, const AuExit::ExitInvoker *pInvoker)
|
|
{
|
|
AuLogInfo("A problematic event occoured");
|
|
}));
|
|
|
|
AuExit::ExitHandlerAdd(AuExit::ETriggerLevel::eFatalException,
|
|
AuMakeShared<AuExit::IExitSubscriberFunctional>(
|
|
[](AuExit::ETriggerLevel level, const AuExit::ExitInvoker *pInvoker)
|
|
{
|
|
AuLogInfo("A fatal event occoured");
|
|
}));
|
|
|
|
AuExit::ExitHandlerAdd(AuExit::ETriggerLevel::eSigTerminate,
|
|
AuMakeShared<AuExit::IExitSubscriberFunctional>(
|
|
[](AuExit::ETriggerLevel level, const AuExit::ExitInvoker *pInvoker)
|
|
{
|
|
AuLogInfo("A terminate event was sent");
|
|
// You must synchronize / join all spawned threads here
|
|
// Aurora APIs may become unstable after this point
|
|
// Yes, we can try to design around and mitigate issues, but it's time to go...
|
|
}));
|
|
|
|
AuExit::ExitHandlerAdd(AuExit::ETriggerLevel::eSafeTermination,
|
|
AuMakeShared<AuExit::IExitSubscriberFunctional>(
|
|
[](AuExit::ETriggerLevel level, const AuExit::ExitInvoker *pInvoker)
|
|
{
|
|
AuLogInfo("Safe termination of application");
|
|
}));
|
|
|
|
AuLogInfo("Throwing exception...");
|
|
try
|
|
{
|
|
AU_THROW_STRING("hi");
|
|
}
|
|
catch (...)
|
|
{
|
|
|
|
}
|
|
|
|
AuLogInfo("Sleeping for 20s. Send a control+c, if you want");
|
|
AuThreading::Sleep(20'000);
|
|
}
|
|
|
|
void RunTests()
|
|
{
|
|
Aurora::RuntimeStartInfo info;
|
|
info.console.fio.enableLogging = false;
|
|
Aurora::RuntimeStart(info);
|
|
|
|
AddHooks();
|
|
} |