public void MergeDataRows(AgentConnection agentConnection, AgentHealthState state, string message)
        {
            if (agentConnection == null || state == null)
            {
                return;
            }

            //Add and update nodes
            var matchingNodes = from DataRow r in DataTable.Rows
                                let nodeInDataTable = (AgentConnection)r["Agent"]
                                                      where nodeInDataTable.Address == agentConnection.Address
                                                      select r;

            if (!matchingNodes.Any())
            {
                object[] rowData = new object[2];

                CreateColumnIfNotExist("Status", "", typeof(Bitmap), 16);
                rowData[DataTable.Columns.IndexOf("Status")] = StatusIconProvider.GrayCircle;

                CreateColumnIfNotExist("Agent", "Agent", typeof(AgentConnection), 60);
                rowData[DataTable.Columns.IndexOf("Agent")] = agentConnection;

                DataTable.Rows.Add(rowData);
            }
        }
 public void OnAgentHealthcheckStatsUpdated(AgentConnection clientConnection, AgentHealthState agentHealthState, string message)
 {
     if (AgentHealthcheckStatsUpdated != null)
     {
         AgentHealthcheckStatsUpdated.Invoke(clientConnection, agentHealthState, message);
     }
 }
Esempio n. 3
0
        public List <Task> UpdateJob()
        {
            List <Task> tasks = new List <Task>();

            if (AgentHealthState == null)
            {
                AgentHealthState = new AgentHealthState();
            }

            tasks.Add(Task.Run(() => CheckAgentResources()));
            tasks.Add(Task.Run(() => CheckGitRepositoryInformation()));

            return(tasks);
        }
Esempio n. 4
0
        public override void OpenEnvelope()
        {
            try
            {
                AgentHealthState = Message.GetPayload <AgentHealthState>();
            }
            catch (Exception ex)
            {
                logger.Error(ex, $"Cannot deserialize Agent Health State message from agent {Client.Address}");
                return;
            }

            logger.Info($"Received AgentHealthState from agent {Client.Address}");
        }
        public void UpdateNodes(AgentConnection agentConnection, AgentHealthState state, string message)
        {
            Mapper.MergeDataRows(agentConnection, state, message);
            Mapper.UpdateDataTable(agentConnection, state, message);
            if (this.DataSource == null)
            {
                ConfigureDataGridView();
            }

            if (SelectedRows.Count > 0)
            {
                DataGridViewRow selectedRow            = SelectedRows[0];
                DataGridViewRowStateChangedEventArgs e = new DataGridViewRowStateChangedEventArgs(selectedRow, DataGridViewElementStates.None);
                this.OnRowStateChanged(selectedRow.Index, e);
            }
        }
        public void UpdateDataTable(AgentConnection agentConnection, AgentHealthState state, string message)
        {
            if (agentConnection == null || state == null)
            {
                return;
            }

            foreach (DataRow dataRow in DataTable.Rows)
            {
                if (((AgentConnection)dataRow["Agent"]).Address.Equals(agentConnection.Address))
                {
                    switch (agentConnection.State)
                    {
                    case WebSocketState.None:
                        dataRow["Status"] = StatusIconProvider.GrayCircle;
                        break;

                    case WebSocketState.Connecting:
                        dataRow["Status"] = StatusIconProvider.OrangeCircle;
                        break;

                    case WebSocketState.Open:
                        dataRow["Status"] = StatusIconProvider.GreenCircle;
                        break;

                    case WebSocketState.CloseSent:
                        dataRow["Status"] = StatusIconProvider.GrayCircle;
                        break;

                    case WebSocketState.CloseReceived:
                        dataRow["Status"] = StatusIconProvider.GrayCircle;
                        break;

                    case WebSocketState.Closed:
                        dataRow["Status"] = StatusIconProvider.GrayCircle;
                        break;

                    case WebSocketState.Aborted:
                        dataRow["Status"] = StatusIconProvider.RedCircle;
                        break;

                    default:
                        throw new ArgumentOutOfRangeException();
                    }

                    dataRow["Agent"] = agentConnection;

                    CreateColumnIfNotExist("LastUpdated", "Updated", typeof(AgentHealthState), 40);
                    dataRow["LastUpdated"] = state;

                    CreateColumnIfNotExist("Threads", "Threads", typeof(int), 40);
                    dataRow["Threads"] = state.ThreadCount;

                    CreateColumnIfNotExist("Memory", "Memory", typeof(string), 40);
                    dataRow["Memory"] = state.MemoryUsageMb;

                    CreateColumnIfNotExist("Clients", "Clients", typeof(int), 40);
                    dataRow["Clients"] = state.ClientCount;

                    CreateColumnIfNotExist("Info", "Info", typeof(string), 120);
                    if (string.IsNullOrEmpty(dataRow["Info"] as String) && string.IsNullOrEmpty(message))
                    {
                        dataRow["Info"] = agentConnection.State.ToString();
                    }
                    else if (!string.IsNullOrEmpty(message))
                    {
                        dataRow["Info"] = $"{agentConnection.State}: {message}";
                    }
                }
            }
        }
 private void AgentDataTableUpdated(AgentConnection agentConnection, AgentHealthState state, string message)
 {
     dataGridViewAgents.UpdateNodes(agentConnection, state, message);
 }