/*** Copyright (C) 2021 J Reece Wilson (a/k/a "Reece"). All rights reserved. File: Runtime.hpp Date: 2021-6-9 Author: Reece ***/ #pragma once #if defined(AURORA_ENGINE_KERNEL_STATIC) #define AUKN_SYM #else #if defined(AURORA_ENGINE_KERNEL_EXPORT) #define AUKN_SYM AURORA_SYMBOL_EXPORT #else #define AUKN_SYM AURORA_SYMBOL_IMPORT #endif #endif #include "../AuroraMacros.hpp" #include #include #include #include "../AuroraTypedefs.hpp" #include "../AuroraUtils.hpp" #if defined(_AUHAS_FMT) #include #include #include #include #endif #if !defined(_AUHAS_UUID) #error Missing stduuid library #endif #include #define AUKN_SHARED_API(name, type, ...) AU_SHARED_API_EX(AUKN_SYM, name, type, ## __VA_ARGS__) #include "Memory/Memory.hpp" #include "Console/Console.hpp" #include "Crypto/Crypto.hpp" #include "Compression/Compression.hpp" #include "Data/Data.hpp" #include "Debug/Debug.hpp" #include "Hashing/Hashing.hpp" #include "HWInfo/HWInfo.hpp" #include "IO/IO.hpp" #include "Legacy/Legacy.hpp" #include "Locale/Locale.hpp" #include "Parse/Parse.hpp" #include "Process/Process.hpp" #include "Processes/Processes.hpp" #include "Registry/Registry.hpp" #include "RNG/RNG.hpp" #include "Telemetry/Telemetery.hpp" #include "Threading/Threading.hpp" #include "Async/Async.hpp" #include "Time/Time.hpp" #include "Loop/Loop.hpp" namespace Aurora { struct LocalLogInfo { bool enableLogging {true}; bool autoCompressOldLogs {false}; AuUInt32 maxSizeMB {128 * 1024 * 1024}; // these numbers feel insane, but at least we have a max threshold int maxLogs {1024}; // by default, we neither leak disk space or waste opportunities of being able to dig through old data }; struct TelemetryConfigDoc { LocalLogInfo localLogging; bool enabled {false}; AuString address; AuUInt16 port {45069}; AuString serviceIdnt {"7b5f7a54-7122-4489-ac1a-3d75884b307e"}; bool wantsActiveMonitoring {false}; bool privacyNoData {false}; bool privacyNoMod {false}; bool privacyNoLog {false}; bool privacyNoWarn {false}; bool alwaysCrashdump {true}; bool alwaysDisableCrashdump {false}; }; struct TelemetryConfig { bool readModNameJsonConfig {}; TelemetryConfigDoc defaultConfig; }; struct ConsoleConfig { /// Enables Aurora::Console::xxxStd functions; defer to enableStdXX for default logger behaviour bool enableStdPassthrough {}; /// Disables standard, debug, and GUI consoles bool disableAllConsoles {}; /// Attempt to force a terminal emulator host under graphical subsystems bool forceConsoleWindow {}; /// Attempt to force a GUI console under command line targets bool forceToolKitWindow {}; /// In conjunction with enableStdPassthrough, enables Aurora::Console::ReadStd to read binary /// In conjunction with !enableStdPassthrough, enables stdout logging bool enableStdIn {true}; /// In conjunction with enableStdPassthrough, enables Aurora::Console::WriteStd to write binary, otherwise enables the console logger /// In conjunction with !enableStdPassthrough, enables stdin cmd processing, otherwise disables stdin input bool enableStdOut {true}; /// Use WxWidgets when possible bool enableWxWidgets {true}; /// FIO config LocalLogInfo fio; AuString titleBrand = "Aurora SDK Sample"; AuString supportPublic {"https://git.reece.sx/AuroraSupport/AuroraRuntime/issues"}; AuString supportInternal {"https://jira.reece.sx"}; }; struct CryptoConfig { /// Defer to the rationales in the implementation bool allowChineseCerts {false}; /// Defer to the rationales in the implementation bool allowRussianCerts {true}; /// WIP bool allowHTTPRetrievalOfCerts {true}; /// bool enablePinning {true}; /// AuList blacklistedCerts{}; AuList whitelistedCerts{}; }; struct AsyncConfig { AuUInt32 schedularFrequency {2}; // * 0.5 or 1 MS depending on the platform AuUInt32 sysPumpFrequency {25}; // x amount of schedularFrequencys }; struct FIOConfig { AuOptional defaultBrand = "Aurora"; }; struct RuntimeStartInfo { ConsoleConfig console; CryptoConfig crypto; TelemetryConfig telemetry; AsyncConfig async; FIOConfig fio; }; AUKN_SYM void RuntimeStart(const RuntimeStartInfo &info); AUKN_SYM void RuntimeOverloadLocality(const AuPair &locality); AUKN_SYM void RuntimeShutdown(); AUKN_SYM void RuntimeSysPump(); }