Beispiel #1
0
        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();
        }
Beispiel #2
0
        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");
                    }
                }
            }
        }