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); }
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 }
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)); }