private void handleScriptTouched(string message, ScriptTouchEvents type)
{
var path = _touchHandler.GetPath(message);
if (new ScriptFilter().IsValid(path) == false)
return;
if (type == ScriptTouchEvents.Removed) {
Logger.Write("Removing touched rscript");
removeScript(path);
return;
}
// Read script and dispatch errors
var script = _reader.ReadScript(path, true);
if (script == null) {
Logger.Write("No "+path+" rscript found or script crashed. exiting..");
removeScript(path);
return;
}
if (type == ScriptTouchEvents.Pause) {
script.Shutdown();
if (!_pausedScripts.Contains(script.Name))
_pausedScripts.Add(script.Name);
}
if (type == ScriptTouchEvents.Resume) {
_pausedScripts.Remove(script.Name);
if (script.IsService && !script.IsServiceRunning)
script.StartService();
}
if (type == ScriptTouchEvents.Changed || type == ScriptTouchEvents.Added || type == ScriptTouchEvents.Restart) {
Logger.Write("Reloading / adding existing rscript");
removeScript(path);
_scripts.Add(script);
if (script.IsService)
script.StartService();
}
}