private void Restart_Click(object sender, RoutedEventArgs e) { Task.Run(() => { Thread.CurrentThread.IsBackground = true; SnapShotGenerator.Reset(); App.Engine.StopEngine(); }); }
private void HandleCommand(Commands command, string[] args) { OutputQueue.Enqueue("Command " + command + " recieved."); switch (command) { case Commands.help: OutputQueue.Enqueue("Available commands:"); foreach (var avCom in Enum.GetValues(typeof(Commands))) { OutputQueue.Enqueue(avCom.ToString()); } break; case Commands.exit: Program.RunRestartLoop = false; Engine.StopEngine(); Running = false; EventHubProcessor.StopReceiver(); SnapShotGenerator.Stop(); OutputQueue.Enqueue("Command sent to engine. See log for info."); break; case Commands.reloadrulesforanal: if (args.Length < 2 || string.IsNullOrEmpty(args[1])) { OutputQueue.Enqueue("missing analyzer name"); break; } Engine.ReloadRulesForAnalyzer(args[1]); OutputQueue.Enqueue("Command sent to engine. See log for info."); break; case Commands.showrulesforanal: if (args.Length < 2 || string.IsNullOrEmpty(args[1])) { OutputQueue.Enqueue("missing analyzer name"); break; } var rules = Engine.GetRulesLoadedInAnalyzer(args[1]); var loaded = rules.Aggregate("", (current, rule) => current + rule + Environment.NewLine); OutputQueue.Enqueue(loaded); break; case Commands.state: OutputQueue.Enqueue(CurrentState.ToString()); break; case Commands.showloadedanal: OutputQueue.Enqueue(Environment.NewLine); OutputQueue.Enqueue(string.Join(Environment.NewLine, Engine.GetCurrentAnalyzersInfo().Select(item => $"{item.Name}\t\t{item.State}\tin queue {item.EventsInQueue}.\tLoaded rules {item.NumberOfRulesLoaded}."))); break; case Commands.restart: Task.Run(() => { Thread.CurrentThread.IsBackground = true; SnapShotGenerator.Reset(); Engine.StopEngine(); }); OutputQueue.Enqueue("Command sent to engine. See log for info."); break; } }