Пример #1
0
        public void PeerExchangeMessageTest()
        {
            // Decodes as: 192.168.0.1:100
            byte[] peer = new byte[] { 192, 168, 0, 1, 100, 0 };
            byte[] supports = new byte[] { (byte)(1 | 2) }; // 1 == encryption, 2 == seeder

            byte id = MonoTorrent.Client.Messages.Libtorrent.PeerExchangeMessage.Support.MessageId;
            PeerExchangeMessage message = new PeerExchangeMessage(id, peer, supports, null);

            byte[] buffer = message.Encode();
            PeerExchangeMessage m = (PeerExchangeMessage)PeerMessage.DecodeMessage(buffer, 0, buffer.Length, this.rig.Manager);
            Assert.IsTrue(Toolbox.ByteMatch(peer, m.Added), "#1");
            Assert.IsTrue(Toolbox.ByteMatch(supports, m.AddedDotF), "#1");
        }
        public void PeerExchangeMessageTest()
        {
            // Decodes as: 192.168.0.1:100
            var peer = new byte[] {192, 168, 0, 1, 100, 0};
            var supports = new[] {(byte) (1 | 2)}; // 1 == encryption, 2 == seeder

            var id = PeerExchangeMessage.Support.MessageId;
            var message = new PeerExchangeMessage(id, peer, supports, null);

            var buffer = message.Encode();
            var m =
                (PeerExchangeMessage) PeerMessage.DecodeMessage(buffer, 0, buffer.Length, rig.Manager);
            Assert.True(Toolbox.ByteMatch(peer, m.Added));
            Assert.True(Toolbox.ByteMatch(supports, m.AddedDotF));
        }
 public void PeerExchangeMessageTest()
 {
     var data = new BEncodedDictionary().Encode();
     var message = new PeerExchangeMessage();
     message.Decode(data, 0, data.Length);
     Assert.NotNull(message.Added);
     Assert.NotNull(message.AddedDotF);
     Assert.NotNull(message.Dropped);
 }
Пример #4
0
        protected virtual void HandlePeerExchangeMessage(PeerId id, PeerExchangeMessage message)
        {
            // Ignore peer exchange messages on private torrents
            if (id.TorrentManager.Torrent.IsPrivate || !id.TorrentManager.Settings.EnablePeerExchange)
                return;

            // If we already have lots of peers, don't process the messages anymore.
            if ((Manager.Peers.Available + Manager.OpenConnections) >= manager.Settings.MaxConnections)
                return;

            IList<Peer> peers = Peer.Decode((BEncodedString)message.Added);
            int count = id.TorrentManager.AddPeersCore(peers);
            id.TorrentManager.RaisePeersFound(new PeerExchangePeersAdded(id.TorrentManager, count, peers.Count, id));
        }
 protected override void HandlePeerExchangeMessage(PeerId id, PeerExchangeMessage message)
 {
     // Nothing
 }
Пример #6
0
        protected virtual void HandlePeerExchangeMessage(PeerId id, PeerExchangeMessage message)
        {
            // Ignore peer exchange messages on private torrents
            if (id.TorrentManager.Torrent.IsPrivate || !id.TorrentManager.Settings.EnablePeerExchange)
                return;

            IList<Peer> peers = Peer.Decode((BEncodedString)message.Added);
            int count = id.TorrentManager.AddPeersCore(peers);
            id.TorrentManager.RaisePeersFound(new PeerExchangePeersAdded(id.TorrentManager, count, peers.Count, id));
        }