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);
        }
Example #2
0
        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();
            }
        }