public GetServicesAnalyticsResponse GetServicesAnalytics() { var response = new GetServicesAnalyticsResponse(); foreach (var an in this.Manager.Analytics.Services) { var sa = Newtonsoft.Json.JsonConvert.DeserializeObject <ServiceAnalytics>(Newtonsoft.Json.JsonConvert.SerializeObject(an)); if (sa == null) { continue; } sa.Output = ""; sa.Error = ""; response.Analytics.Add(sa); } response.Services = this.Manager.Config.ServiceList; return(response); }
private void UpdateServiceList(GetServicesAnalyticsResponse analytics) { if (InvokeRequired) { Invoke((Action)(() => { UpdateServiceList(analytics); })); return; } lock (_sync) { var selected = lsvServices.SelectedItems.Cast <ListViewDataItem>().FirstOrDefault(); lsvServices.BeginUpdate(); lsvServices.Items.Clear(); int active = 0; this.Services = analytics.Services; foreach (var item in analytics.Services) { var a = analytics.Analytics.FirstOrDefault(b => b.ServiceID == item.ID); if (a == null) { continue; } var itm = new ListViewDataItem(item.ID.ToString()); if (!a.IsRunning) { itm.Image = null; } itm.SubItems.Add(""); itm.SubItems.Add((a.IsRunning ? a.ProcessID.ToString() : "-")); itm.SubItems.Add(item.Title); itm.Tag = item.ID; lsvServices.Items.Add(itm); if (a.IsRunning) { active++; } //if (a.IsRunning && a.Exiting != null) //{ // itm.SubItems.Add("shutting down"); //} //else //{ // itm.SubItems.Add(a.IsRunning ? "running" : "offline"); //} itm.SubItems.Add(a.Status); itm.SubItems.Add(a.Restarts.ToString()); itm.SubItems.Add(item.ForceRestart ? "yes" : "no"); } if (selected != null) { var item = lsvServices.Items.Cast <ListViewDataItem>().FirstOrDefault(a => a.Tag.ToString() == selected.Tag.ToString()); lsvServices.SelectedItem = item; } lblActiveServiceCount.Text = active.ToString(); lsvServices.EndUpdate(); } }