public bool AddOrUpdatePeer(IPeerIdentification peerIdentification, IPEndPoint ipEndPoint)
        {
            _peers.TryGetValue(peerIdentification, out IPEndPoint existingValue);

            if (ipEndPoint.Equals(existingValue))
            {
                return(false);
            }

            _peers[peerIdentification] = ipEndPoint;

            return(existingValue == null);
        }
        protected bool DisposedValue; // To detect redundant calls

        public UDPNetworking(IPeerIdentification peerName, IPeerManager peerManager, ISerializer serializer, IPEndPoint ipEndPoint)
        {
            PeerName    = peerName;
            PeerManager = peerManager;
            Serializer  = serializer;

            UDPClient = new UDPClient(ipEndPoint);
            UDPClient.OnMessageReceived +=
                (sender, udpResult) => RecieveMessageAsync(udpResult.Buffer, udpResult.RemoteEndPoint);
            UDPClient.OnMessageReceivedFailure +=
                (sender, exception) => OnMessageReceivedFailure?.Invoke(sender, exception);
            UDPClient.OnMessageSendFailure +=
                (sender, exception) => OnMessageSendFailure?.Invoke(sender, exception);
            UDPClient.WaitForStartup();
        }
Beispiel #3
0
        public void TestMethodFaker()
        {
            IPeerManager peerManagement = new PeerManager();

            IPeerIdentification peerIdentification = _faker.Random.PeerIdentification();
            IPEndPoint          ipEndPoint         = _faker.Internet.IpEndPoint();



            //Add
            peerManagement.AddOrUpdatePeer(_faker.Random.PeerIdentification(), _faker.Internet.IpEndPoint());
            peerManagement.AddOrUpdatePeer(_faker.Random.PeerIdentification(), _faker.Internet.IpEndPoint());
            peerManagement.AddOrUpdatePeer(peerIdentification, _faker.Internet.IpEndPoint());

            //Update
            peerManagement.AddOrUpdatePeer(peerIdentification, ipEndPoint);

            IPEndPoint result = peerManagement[peerIdentification];
        }
Beispiel #4
0
 public bool Equals(IPeerIdentification obj)
 {
     return(Equals((object)obj));
 }
 public IPEndPoint this[IPeerIdentification peerIdentification] => GetPeerIPEndPoint(peerIdentification);
 public IPEndPoint GetPeerIPEndPoint(IPeerIdentification peerIdentification)
 {
     _peers.TryGetValue(peerIdentification, out IPEndPoint ipEndPoint);
     return(ipEndPoint);
 }