public void RemovePeer(DetectedNode d) { announcedAddresses.Lock(); if (announcedAddresses.Contains(d)) announcedAddresses.Remove(d); announcedAddresses.Unlock(); }
private bool Connect(Domain.Entities.Network net, DetectedNode n) { try { LogManager.GetLogger("faplog").Info("Client connecting to {0}", n.Address); net.State = ConnectionState.Connecting; var verb = new ConnectVerb(); verb.ClientType = ClientType.Client; verb.Address = model.LocalNode.Location; verb.Secret = IDService.CreateID(); var client = new Client(model.LocalNode); transmitted.Data.Clear(); foreach (var info in model.LocalNode.Data.ToList()) transmitted.SetData(info.Key, info.Value); net.Overlord = new Node(); net.Overlord.Location = n.Address; net.Overlord.Secret = verb.Secret; LogManager.GetLogger("faplog").Debug("Client using secret {0}", verb.Secret); if (client.Execute(verb, n.Address)) { net.State = ConnectionState.Connected; net.Overlord.ID = verb.OverlordID; LogManager.GetLogger("faplog").Info("Client connected"); return true; } else { net.Overlord = new Node(); } } catch { net.State = ConnectionState.Disconnected; } return false; }