private void UpdateSnapshotAnalyzerInfo() { var analyzerlist = Engine.GetCurrentAnalyzersInfo(); foreach (var anal in analyzerlist) { SnapShotGenerator.AddAnalyzerInfoToSnapShot(anal); } }
private void Restart_Click(object sender, RoutedEventArgs e) { Task.Run(() => { Thread.CurrentThread.IsBackground = true; SnapShotGenerator.Reset(); App.Engine.StopEngine(); }); }
public MainWindow(FileLogger logger) { Logger = logger; InitializeComponent(); ShutDownButton.IsEnabled = false; EventProcessor.OnUpdatedInfo += HandleEventProcessorInfo; App.Engine.OnStateChanged += HandleEngineStateChange; App.Engine.OnNewAnalyzerInfo += HandleAnalyzerInfo; Task.Run(() => { while (true) { MessageAggregator.Collection.Clear(); for (var i = 0; i < 50; ++i) { if (App.Engine.EngineMessages.TryDequeue(out var msg)) { MessageAggregator.AddMessage(msg, msg.Message.GenerateMessageIdentifierFromString()); } } foreach (var messageTracker in MessageAggregator.Collection) { MesseageOutputQueue.Enqueue($"{messageTracker.Value.Message} | {messageTracker.Value.AmountCounter} times from {messageTracker.Value.FirstOccurrence} to {messageTracker.Value.LastOccurrence}"); } for (int i = 1; i <= 14; ++i) { if (MesseageOutputQueue.TryDequeue(out string message)) { //UpdateMessageBox($"{DateTime.UtcNow}\t{message}{Environment.NewLine}"); Logger.AddRow(message); SnapShotGenerator.AddMessageToSnapShot(DateTime.UtcNow, message); } } } }); Task.Run(() => { while (true) { UpdateSnapshotAnalyzerInfo(); Task.Delay(4000).Wait(); } }); StartUpdateSelectedAnalyzerTask(); }
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; } }