/// <summary> /// Connect to a peer /// </summary> /// <param name="VirtualIpOrDns"></param> /// <param name="peer"></param> /// <returns></returns> public PeerErrorCode ConnectToPeer(string VirtualIpOrDns, RootPeer peer) { if (peer.Connected) { throw new Exception("Peer is already connected"); } PeerResponse response = SharedRoot.ConnectToPeer(VirtualIpOrDns); if (response.ErrorCode == PeerErrorCode.Success) { peer.Connected = true; //temp peer.VirtualIP = response.VirtualIP; peer.ConnectionId = response.ConnectionId; peer._client = this; peer.FromClient = this; if (!PeerConnections.ContainsKey(response.ConnectionId)) { PeerConnections.Add(response.ConnectionId, peer); } else { PeerConnections[response.ConnectionId] = peer; } peer.onRegisterMessages(this.MessageHandler); peer.onClientConnect(); return(PeerErrorCode.Success); } return(response.ErrorCode); }
public static PeerInfo From(PeerResponse response) { return(new PeerInfo { PeerId = response.PeerId, Ip = response.Ip, Port = int.Parse(response.Port), BitField = response.BitField, AmChoking = bool.Parse(response.AmChoking), PeerChoking = bool.Parse(response.PeerChoking), DownloadSpeed = long.Parse(response.DownloadSpeed), UploadSpeed = long.Parse(response.UploadSpeed), Seeder = bool.Parse(response.Seeder) }); }