public void UpdateMembers() { ClientCount = _server.ClientCount; OverallRx = _server.OverallRx; OverallTx = _server.OverallTx; Bandwidth = _server.PeakBandwidth; UsedBandwidth = _server.UsedBandwidth; PeakTx = _server.PeakTx; PeakRx = _server.PeakRx; IsStarted = _server.Started; AutoDiscoveryEnabled = Netst.Settings.Persistent.TrackServers; lock (DiscoveredClients) { for (int i = DiscoveredClients.Count - 1; i >= 0; i--) { if ((DateTime.Now - DiscoveredClients[i].DiscoveredAt).TotalSeconds > 30) { DiscoveredClients.RemoveAt(i); } } } if (_clientUpdateSw.ElapsedMilliseconds > 1000) { XxBufferCount = _server.XxBufferCount; TxHistory = _server.TxHistory; RxHistory = _server.RxHistory; Client[] cs = _server.Clients; Clients.Clear(); foreach (Client c in cs) { Clients.Add(c); } TxHistorySerie.Values.Clear(); RxHistorySerie.Values.Clear(); int pointsInChart = 120; // 60 seconds for (int i = Math.Min(XxBufferCount, pointsInChart) - 1; i >= 0; i--) { TxHistorySerie.Values.Add(TxHistory[i] / 1000 / 1000); } for (int i = Math.Min(XxBufferCount, pointsInChart) - 1; i >= 0; i--) { RxHistorySerie.Values.Add(RxHistory[i] / 1000 / 1000); } _clientUpdateSw.Restart(); } }
private void RemoteClientDiscovered(Tracker tracker, IPEndPoint endpoint, NodeInfo info) { if (!CheckAccess()) { Dispatcher.InvokeAsync(() => { RemoteClientDiscovered(tracker, endpoint, info); }); return; } lock (DiscoveredClients) { foreach (NodeInfo i in DiscoveredClients) { if (string.Equals(i.AddressStr, info.AddressStr) && i.Port == info.Port) { DiscoveredClients.Remove(i); break; } } DiscoveredClients.Add(info); } }