/// <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);
        }
Esempio n. 2
0
        /// <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);
        }