/// <summary> /// Every interval, update all of our statuses. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void UpdateDisplay(object sender, EventArgs e) { if (Data_Integration.CommLoaded) { UpdateCommunicationsLinkages(); } UpdateMMCommStatus(); UpdateLogText(); MM_Server_Information.UpdateServerInformation(MMServers, lvMacomberMapServers); long Mem; UIHelper.UpdateCPUAndMemory(out Mem); lblUptime.Text = "Uptime: " + MM_Repository.TimeSpanToText(DateTime.Now - Data_Integration.ModelLoadCompletion); //Update the status of all of our queries ListViewItem FoundListView; int WorstColor = 0; foreach (KeyValuePair <Type, MM_DataRetrieval_Information> kvp in MM_Server_Interface.DataRetrievalInformation) { Color DrawColor = kvp.Value.ProperColor(); if (DrawColor == MM_Repository.OverallDisplay.WarningColor) { WorstColor = Math.Max(WorstColor, 1); } else if (DrawColor == MM_Repository.OverallDisplay.ErrorColor) { WorstColor = 2; } if (!Queries.TryGetValue(kvp.Key, out FoundListView)) { Queries.Add(kvp.Key, FoundListView = lvQueryStatus.Items.Add(kvp.Key.Name.Replace("MM_", "").Replace('_', ' '))); FoundListView.Tag = kvp.Value; FoundListView.SubItems.Add(MM_Repository.TimeSpanToText(DateTime.Now - kvp.Value.LastUpdate)); FoundListView.UseItemStyleForSubItems = true; FoundListView.ForeColor = DrawColor; } else { FoundListView.SubItems[1].Text = MM_Repository.TimeSpanToText(DateTime.Now - kvp.Value.LastUpdate); FoundListView.ForeColor = DrawColor; } } CommStatus.SetQueryAndServerStatus(WorstColor, MM_Server_Interface.Client == null ? 2 : MM_Server_Interface.Client.InnerChannel.State == System.ServiceModel.CommunicationState.Opened ? 0 : 2); }
/// <summary> /// Handle the timer update /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void UpdateTimer(object sender, EventArgs e) { int WorstProcess = 0; foreach (MM_Process Process in new List <MM_Process>(Data_Integration.Processes.Values)) { try { TimeSpan ThisTime = (Data_Integration.SaveTime.ToOADate() == 0 ? DateTime.Now : Data_Integration.SaveTime) - Process.LastExecution; //If it's not already set, locate the item associated with the process if (Process.lvItem == null) { Process.lvItem = lvProcesses.Items.Add(Process.Name); if (Process.LastExecution.ToOADate() == 0) { Process.lvItem.SubItems.Add("Never"); } else { Process.lvItem.SubItems.Add(MM_Repository.TimeSpanToText(ThisTime)); } ListViewGroup ProcessGroup = lvProcesses.Groups[Process.BaseElement.ParentNode.Attributes["Name"].Value]; if (ProcessGroup == null) { ProcessGroup = lvProcesses.Groups.Add(Process.BaseElement.ParentNode.Attributes["Name"].Value, Process.BaseElement.ParentNode.Attributes["Name"].Value); } Process.lvItem.Group = ProcessGroup; } else if (Process.LastExecution.ToOADate() == 0) { Process.lvItem.SubItems[1].Text = "Never"; } else { Process.lvItem.SubItems[1].Text = MM_Repository.TimeSpanToText(ThisTime); } if (Process.ErrorTime == TimeSpan.Zero) { } else if (ThisTime >= Process.ErrorTime) { WorstProcess = 2; } else if (ThisTime >= Process.WarningTime && WorstProcess != 2) { WorstProcess = 1; } } catch (Exception ex) { MM_System_Interfaces.LogError("Error processing process completion " + Process.Name + ": " + ex.Message); } } foreach (ColumnHeader col in lvProcesses.Columns) { col.AutoResize(ColumnHeaderAutoResizeStyle.ColumnContent); } //Update our process viewer SetProcessColor(WorstProcess); }