Difference between revisions of "Watchdog"
Line 16: | Line 16: | ||
state_entry() { | state_entry() { | ||
llSetTimerEvent(interval); | llSetTimerEvent(interval); | ||
} | |||
on_rez(integer param) { | |||
llResetScript(); | |||
} | } | ||
timer() { | timer() { | ||
Line 23: | Line 26: | ||
llSetScriptState(watchee, TRUE); | llSetScriptState(watchee, TRUE); | ||
llRegionSay(DEBUG_CHANNEL, "Watchdog Trip: The script ["+watchee+"] has crashed and has been restarted."); | llRegionSay(DEBUG_CHANNEL, "Watchdog Trip: The script ["+watchee+"] has crashed and has been restarted."); | ||
} | } | ||
llSleep(1); | |||
llResetScript(); // Reset this script to keep it clean | |||
} | } | ||
} | } | ||
Line 33: | Line 35: | ||
'''BASIC LSL WATCHDOG FOR MULTIPLE SCRIPTS''' | '''BASIC LSL WATCHDOG FOR MULTIPLE SCRIPTS''' | ||
<lsl> | <lsl> | ||
// Basic LSL Watchdog Script to watch multiple scripts | // Basic LSL Watchdog Script to watch multiple scripts | ||
// 2012-01-17 By Tika Oberueng | // 2012-01-17 By Tika Oberueng | ||
Line 48: | Line 45: | ||
state_entry() { | state_entry() { | ||
llSetTimerEvent(interval); | llSetTimerEvent(interval); | ||
} | |||
on_rez(integer param) { | |||
llResetScript(); | |||
} | } | ||
timer() { | timer() { | ||
Line 60: | Line 60: | ||
llSetScriptState(watchee, TRUE); | llSetScriptState(watchee, TRUE); | ||
llRegionSay(DEBUG_CHANNEL, "Multiple Watchdog Trip: The script ["+watchee+"] has crashed and has been restarted."); | llRegionSay(DEBUG_CHANNEL, "Multiple Watchdog Trip: The script ["+watchee+"] has crashed and has been restarted."); | ||
} | } | ||
} | } | ||
} | } | ||
llSleep(1); | |||
llResetScript(); // Reset this script to keep it clean | |||
} | } | ||
} | } | ||
</lsl> | </lsl> |
Revision as of 03:39, 17 January 2012
LSL WATCHDOG
These are some simple scripts that watch other scripts in the same prim and restarts them if they crash.
BASIC LSL WATCHDOG FOR A SINGLE PRIMARY SCRIPT <lsl> // Basic LSL Watchdog Script to watch a single script // 2012-01-17 By Tika Oberueng // Released to the public domain. // You break it, you get to keep both pieces. // string watchee = "Test"; // Set this to the name of a script in prim inventory to watch float interval = 10.0; // Number of seconds between watchdog checks. Probably best to keep this above >= 10
default {
state_entry() { llSetTimerEvent(interval); } on_rez(integer param) { llResetScript(); } timer() { llSetTimerEvent(0); if (!llGetScriptState(watchee)) { llResetOtherScript(watchee); llSetScriptState(watchee, TRUE); llRegionSay(DEBUG_CHANNEL, "Watchdog Trip: The script ["+watchee+"] has crashed and has been restarted."); } llSleep(1); llResetScript(); // Reset this script to keep it clean }
} </lsl>
BASIC LSL WATCHDOG FOR MULTIPLE SCRIPTS <lsl> // Basic LSL Watchdog Script to watch multiple scripts // 2012-01-17 By Tika Oberueng // Released to the public domain. // You break it, you get to keep both pieces. // float interval = 10.0; // Number of seconds between watchdog checks. Probably best to keep this above >= 10
default {
state_entry() { llSetTimerEvent(interval); } on_rez(integer param) { llResetScript(); } timer() { integer loop; string watchee; llSetTimerEvent(0); for (loop = llGetInventoryNumber(INVENTORY_SCRIPT) -1; loop > -1; --loop) { watchee = llGetInventoryName(INVENTORY_SCRIPT,loop); if (!llGetScriptState(watchee)) { if (watchee != llGetScriptName()) { llResetOtherScript(watchee); llSetScriptState(watchee, TRUE); llRegionSay(DEBUG_CHANNEL, "Multiple Watchdog Trip: The script ["+watchee+"] has crashed and has been restarted."); } } } llSleep(1); llResetScript(); // Reset this script to keep it clean }
} </lsl>