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); } }
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); }
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); }