Download Jar. Uses 5404K of libraries. Click here for Pure Java version (11527L/83K).
!7 sS iconID = #1101427; static double interval = 60.0, timeout = 30.0; // change for fast computers static int consecutiveFailsThreshold = 3; // TODO: change if loading sS osBotName = "Discord Bots OS"; sS vmArgs = "--add-opens java.base/jdk.internal.loader=ALL-UNNAMED --add-opens java.base/jdk.internal.module=ALL-UNNAMED --add-opens java.base/jdk.internal.ref=ALL-UNNAMED --add-opens java.base/jdk.internal.reflect=ALL-UNNAMED --add-opens java.base/java.lang.module=ALL-UNNAMED --illegal-access=permit -Xmx1g"; sbool v6; static int consecutiveFails; static volatile S status; static TrayIcon trayIcon; sS osProgramID; p { // TODO osProgramID = or(get(args, 0), #1025342); // TODO: put "Restart OS Now" in consoleMemoryView()'s popup menu S myName = "Watch dog for " + osBotName; bot(myName); trayIcon = installTrayIcon(iconID, myName, r showConsole, "Restart " + osBotName + " Now", r restartOSNow, "Show Watch Dog Window", r showConsole, "Hide Watch Dog Window", r hideConsole, "Exit Watch Dog", rThread cleanKill); consoleIcon(iconID); //printWithDateAndTimeInThisThread(); doEvery(interval, r { bool ok = false; pcall { long time = sysNow(); S s = sendOptWithTimeout(timeout, osBotName, "live check"); if "i'm alive" { hideConsole(); ok = true; consecutiveFails = 0; setStatus(osBotName + " OK"); } else showConsole(); consoleStatus(ok ? "OK" : "FAIL"); } if (!ok) { ++consecutiveFails; printAndProgramLog(status = osBotName + " #" + consecutiveFails + " of " + consecutiveFailsThreshold); /*S stackTraces = sendOptWithTimeout(timeout, osBotName, "stack traces"); if (nempty(stackTraces)) { stackTraces = unquote(stackTraces); print(stackTraces); saveTextFile(newFile(stefansOS_watchDogStackTracesDir(), "discord-audio-stack-trace-" + ymd_minus_hms() + ".txt"), stackTraces); }*/ pcall { osFailActivity(); } } }); hideConsole(); sleep(); } svoid osFailActivity { if (consecutiveFails >= consecutiveFailsThreshold) restartOSNow(); } svoid restartOSNow { printAndProgramLog("RESTARTING " + osBotName + "."); consecutiveFails = 0; hardKillProgram(osProgramID, level := 9); nohupJavax(osProgramID, vmArgs); } answer { if "status" ret status; } svoid setStatus(S status) { printAndProgramLog(main.status = status); setTrayIconToolTip(trayIcon, status); }
Began life as a copy of #1019683
download show line numbers debug dex old transpilations
Travelled to 9 computer(s): bhatertpkbcr, mowyntqkapby, mqqgnosmbjvj, pyentgdyhuwx, pzhvpgtvlbxg, tvejysmllsmz, vouqrxazstgt, whxojlpjdney, xrpafgyirdlv
No comments. add comment
Snippet ID: | #1028187 |
Snippet name: | Discord Audio Bots Watch Dog |
Eternal ID of this version: | #1028187/8 |
Text MD5: | edcc3b3f697686088cf5a72c3bb4a10b |
Transpilation MD5: | f4044e64768b9872ccef218dcc5a7ac4 |
Author: | stefan |
Category: | javax |
Type: | JavaX source code (desktop) |
Public (visible to everyone): | Yes |
Archived (hidden from active list): | No |
Created/modified: | 2020-11-10 12:44:40 |
Source code size: | 2571 bytes / 83 lines |
Pitched / IR pitched: | No / No |
Views / Downloads: | 323 / 1138 |
Version history: | 7 change(s) |
Referenced in: | #1028188 - Discord Audio Watch Dog [restarts bot OS when it hangs] |