コード例 #1
0
 private void eventProduces(string message, ScriptTouchEvents result)
 {
     Assert.That(
         new ScriptTouchHandler(
                 new System.Collections.Generic.List<string>(new[] {"/this/is/rscript"}))
             .Handle(message),
         Is.EqualTo(result));
 }
コード例 #2
0
ファイル: ScriptTouchHandler.cs プロジェクト: acken/OpenIDE
 private ScriptTouchEvents parseMessage(string message, string addedPattern, ScriptTouchEvents type)
 {
     foreach (var path in _rscriptPaths) {
         if (message.StartsWith(addedPattern + path)) {
             return type;
         }
     }
     return ScriptTouchEvents.None;
 }
コード例 #3
0
 private void eventProduces(string message, ScriptTouchEvents result)
 {
     Assert.That(
         new ScriptTouchHandler(
             new System.Collections.Generic.List <string>(new[]   {
         "/this/is/rscript"
     }))
         .Handle(message),
         Is.EqualTo(result));
 }
コード例 #4
0
        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();
                }
            }
        }
コード例 #5
0
 private ScriptTouchEvents parseMessage(string message, string addedPattern, ScriptTouchEvents type)
 {
     foreach (var path in _rscriptPaths)
     {
         if (message.StartsWith(addedPattern + path))
         {
             var scriptRoot = Path.GetDirectoryName(GetPath(message));
             // Only accept scripts in rscript root folder
             if (scriptRoot != path)
             {
                 continue;
             }
             return(type);
         }
     }
     return(ScriptTouchEvents.None);
 }
コード例 #6
0
ファイル: ReactiveScriptEngine.cs プロジェクト: acken/OpenIDE
 private void handleScriptTouched(string message, ScriptTouchEvents type)
 {
     var path = _touchHandler.GetPath(message);
     if (type == ScriptTouchEvents.Removed) {
         Logger.Write("Removing touched rscript");
         _scripts.RemoveAll(x => x.File.Equals(path));
         return;
     }
     var script = _reader.ReadScript(path);
     if (script == null) {
         Logger.Write("No rscript found. Exiting");
         return;
     }
     if (type == ScriptTouchEvents.Changed || type == ScriptTouchEvents.Added) {
         Logger.Write("Reloading / adding existing rscript");
         _scripts.RemoveAll(x => x.File.Equals(path));
         _scripts.Add(script);
     }
 }
コード例 #7
0
 private ScriptTouchEvents parseMessage(string message, string addedPattern, ScriptTouchEvents type)
 {
     foreach (var path in _rscriptPaths) {
         if (message.StartsWith(addedPattern + path)) {
             var scriptRoot = Path.GetDirectoryName(GetPath(message));
             // Only accept scripts in rscript root folder
             if (scriptRoot != path)
                 continue;
             return type;
         }
     }
     return ScriptTouchEvents.None;
 }
コード例 #8
0
 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();
     }
 }