From e48d6880c92b87efb694798b43873dc07a570035 Mon Sep 17 00:00:00 2001 From: Grant Limberg Date: Fri, 18 Nov 2016 13:52:48 -0800 Subject: Wired up connected checkbox and delete button. just something not working with refresh. --- windows/WinUI/NetworkMonitor.cs | 58 ++++++++++++++++++++++++++++++----------- 1 file changed, 43 insertions(+), 15 deletions(-) (limited to 'windows/WinUI/NetworkMonitor.cs') diff --git a/windows/WinUI/NetworkMonitor.cs b/windows/WinUI/NetworkMonitor.cs index de5543f6..7743c5b9 100644 --- a/windows/WinUI/NetworkMonitor.cs +++ b/windows/WinUI/NetworkMonitor.cs @@ -68,9 +68,13 @@ namespace WinUI { var bformatter = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter(); netList = (List)bformatter.Deserialize(stream); + stream.Close(); } - _knownNetworks = netList; + lock (_knownNetworks) + { + _knownNetworks = netList; + } } } @@ -86,28 +90,36 @@ namespace WinUI using (Stream stream = File.Open(dataFile, FileMode.OpenOrCreate)) { - var bformatter = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter(); - bformatter.Serialize(stream, _knownNetworks); + lock (_knownNetworks) + { + var bformatter = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter(); + bformatter.Serialize(stream, _knownNetworks); + stream.Flush(); + stream.Close(); + } } } private void apiNetworkCallback(List networks) { - _knownNetworks = _knownNetworks.Union(networks, new NetworkEqualityComparer()).ToList(); - - foreach (ZeroTierNetwork n in _knownNetworks) + lock (_knownNetworks) { - if (networks.Contains(n)) - { - n.IsConnected = true; - } - else + _knownNetworks = _knownNetworks.Union(networks, new NetworkEqualityComparer()).ToList(); + + foreach (ZeroTierNetwork n in _knownNetworks) { - n.IsConnected = false; + if (networks.Contains(n)) + { + n.IsConnected = true; + } + else + { + n.IsConnected = false; + } } - } - _nwCb(_knownNetworks); + _nwCb(_knownNetworks); + } writeNetworks(); } @@ -136,7 +148,7 @@ namespace WinUI } catch { - + Console.WriteLine("Monitor Thread Ended"); } } @@ -159,5 +171,21 @@ namespace WinUI { _nwCb -= cb; } + + public void RemoveNetwork(String networkID) + { + lock(_knownNetworks) + { + foreach (ZeroTierNetwork n in _knownNetworks) + { + if (n.NetworkId.Equals(networkID)) + { + _knownNetworks.Remove(n); + writeNetworks(); + break; + } + } + } + } } } -- cgit v1.2.3