internal ScriptRunner(ScriptKey key, Script script, ScriptsOptions options, string id) { this.key = key; this.script = script; this.options = options; this.id = id; this.isRunning = false; }
internal ScriptSettings GetScriptSettings(FileInfo file, BuildOptions buildOptions) { ScriptKey key = new ScriptKey(file); if (!this.settings.ContainsKey(key)) { this.Build(file, buildOptions); } return(this.settings[key]); }
public void Run(FileInfo file, BuildOptions buildOptions, ScriptsOptions scriptsOptions, OpenQuant.API.ScriptSettings scriptSettings) { ScriptKey key = new ScriptKey(file); if (this.runners.ContainsKey(key)) { throw new InvalidOperationException("The script " + file.Name + " is already running"); } Script script = this.Build(file, buildOptions); if (script == null) { return; } if (scriptSettings != null) { foreach (KeyValuePair <string, object> keyValuePair in scriptSettings) { FieldInfo field = script.GetType().GetField(keyValuePair.Key, BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.GetField); if (field != (FieldInfo)null) { if (field.GetCustomAttributes(typeof(ParameterAttribute), true).Length > 0) { try { field.SetValue(script, keyValuePair.Value); } catch { } } } } } ScriptRunner scriptRunner = new ScriptRunner(key, script, scriptsOptions, this.scriptID.ToString()); scriptRunner.Starting += new EventHandler(this.runner_Starting); scriptRunner.Started += new EventHandler(this.runner_Started); scriptRunner.Stopping += new EventHandler(this.runner_Stopping); scriptRunner.Stopped += new EventHandler(this.runner_Stopped); scriptRunner.Error += new EventHandler <ScriptRunnerErrorEventArgs>(this.runner_Error); this.runners.Add(key, scriptRunner); scriptRunner.Start(); }
public Script Build(FileInfo file, BuildOptions buildOptions) { Script script = this.BuildScript(file, buildOptions); ScriptKey key = new ScriptKey(file); ScriptSettings scriptSettings; if (!this.settings.TryGetValue(key, out scriptSettings)) { scriptSettings = new ScriptSettings(file); this.settings.Add(key, scriptSettings); } scriptSettings.Script = script; if (script != null) { scriptSettings.Merge(script); scriptSettings.Populate(script); scriptSettings.Save(); } return(script); }