internal void OnNodeAdded(LocalDiscovery.NodeShareInfo ninfo, string nodename, long pctimeStamp) { var newinf = new NodeInfoForPC { NodeGuid = ninfo.NodeId, PCVersion = ninfo.PCVersion, PCTimeStamp = pctimeStamp, Url = ninfo.Url, Name = nodename }; lock (CachedNodes) { CachedNodes.Add(newinf); } OnCachedNodesChange(); }
private void SyncSharePCs(LocalNodeInfo node, List <SSDPPCInfo> res) { //remove lock (sharedPCs) { sharedPCs.RemoveAll(x => (x.NodeId == node.NodeId) && ( res.FirstOrDefault(y => (y.Id == x.PCId) && (!string.IsNullOrWhiteSpace(y.CodeHash))) == null ) ); } //add lock (sharedPCs) { foreach (var item in res) { if (!string.IsNullOrWhiteSpace(item.CodeHash)) { var prev = sharedPCs.FirstOrDefault(x => ((x.NodeId == node.NodeId) && (x.PCId == item.Id))); if (prev == null) { var hash = ulong.Parse(item.CodeHash, CultureInfo.InvariantCulture); var snode = new NodeShareInfo { Hash = hash, NodeId = node.NodeId, Url = node.Url, PCId = item.Id, PCVersion = node.PCVersion, }; sharedPCs.Add(snode); } logger.LogTrace($"{node.Url}:A PC is sharing"); } } } }