Beispiel #1
0
        private void OnRequestPeersMessageDirect(RequestPeersMessage m)
        {
            var peers = allPeers.ToList();

            peers.Sort(peerComparer);

            var peersToSend = peers.Where(peer => peer.Status == PeerStatus.Connected && peer.Hash != Hash);

            peersToSend = peersToSend.Take(m.Count);

            var peersAddresses = peersToSend.Select(peer => peer.Address);
            var message        = new PeersMessage(peersAddresses.ToList());

            Connection.SendObject(typeof(PeersMessage).Name, message);


            foreach (var peer in peersToSend)
            {
                peer.SendToOthersCount++;
            }
        }
Beispiel #2
0
        private void OnRequestPeersMessageWithTracker(object sender, MessageEventArgs e)
        {
            if (e.SenderAddress.Equals(Address))
            {
                var message = e.Message as RequestPeersMessage;

                var peers = allPeers.ToList();
                peers.Sort(peerComparer);

                var peersToSend = peers.Where(peer => peer.Status == PeerStatus.Connected && peer.Hash != Hash);
                peersToSend = peersToSend.Take(message.Count);
                var peersAddresses = peersToSend.Select(peer => peer.Address);
                var messageToSend  = new PeersMessage(peersAddresses.ToList());

                tracker.SendMessageToPeer(messageToSend, this);

                foreach (var peer in peersToSend)
                {
                    peer.SendToOthersCount++;
                }
            }
        }