public static List <IPEndPoint> ToIPEndpoints(IReadOnlyCollection <string> addresses) { var results = new List <IPEndPoint>(); foreach (var address in addresses) { results.Add(NodeStorage.ParseIPEndPoint(address)); } return(results); }
public P2PConnection(P2PConfiguration configuration, IEnumerable <IPEndPoint> nodes, int min, int max) { server = new Server(configuration); server.OnClientAuthenticated += OnClientAuthenticated; discovery = new DiscoveryProtocol { OnServerPort = HandleServerPort, OnEndPointTable = HandleEndPointTable, OnPing = HandlePing, OnPong = HandlePong }; certificate = configuration.Certificate; // todo GetNode(configuration.IPEndpoint) var self = new Persona(certificate); nodeManager = new NodeManager(self, configuration.IPEndpoint, configuration.ForwardedPort, nodes); peerManager = new PeerManager(); nodeStorage = new NodeStorage(logger); connectionsManager = new ConnectionsManager(min, max); timer = new Timer(OnTick, null, Timeout.Infinite, Timeout.Infinite); peerManager.OnPeerConnected = peer => { connectionsManager.NewConnection(); onConnected.Call(peer); }; peerManager.OnPeerDisconnected = peer => { connectionsManager.PeerDisconnected(); }; peerManager.OnReceived = (peer, channel, message) => { OnReceived(peer, GetChannel(channel), message); }; DISCOVER_CHANNEL = CreateChannel(0); }