Exemplo n.º 1
0
        public byte[] SaveNodes()
        {
            var details = new BEncodedList();

            MainLoop.QueueWait(() =>
            {
                foreach (var bucket in RoutingTable.Buckets)
                {
                    foreach (var node in bucket.Nodes)
                    {
                        if (node.State != NodeState.Bad)
                        {
                            details.Add(node.CompactNode());
                        }
                    }

                    if (bucket.Replacement != null)
                    {
                        if (bucket.Replacement.State != NodeState.Bad)
                        {
                            details.Add(bucket.Replacement.CompactNode());
                        }
                    }
                }
            });

            return(details.Encode());
        }
Exemplo n.º 2
0
        public byte[] SaveNodes()
        {
            BEncodedList details = new BEncodedList();

            MainLoop.QueueWait(delegate
            {
                foreach (Bucket b in RoutingTable.Buckets)
                {
                    foreach (Node n in b.Nodes)
                    {
                        if (n.State != NodeState.Bad)
                        {
                            details.Add(n.CompactNode());
                        }
                    }

                    if (b.Replacement != null)
                    {
                        if (b.Replacement.State != NodeState.Bad)
                        {
                            details.Add(b.Replacement.CompactNode());
                        }
                    }
                }
            });

            return(details.Encode());
        }
Exemplo n.º 3
0
        public void Stop()
        {
            if (torrentManager.State != TorrentState.Hashing)
            {
                torrentManager.Stop();

                while (torrentManager.State != TorrentState.Stopped)
                {
                    Thread.Sleep(250);
                }

                BEncodedList       bl   = new BEncodedList();
                FastResume         fr   = torrentManager.SaveFastResume();
                BEncodedDictionary item = fr.Encode();
                bl.Add(item);
                File.WriteAllBytes(fastResumeFile, bl.Encode());
            }
            else
            {
                torrentManager.Stop();
            }

            File.WriteAllBytes(dhtNodesFile, clientEngine.DhtEngine.SaveNodes());
            clientEngine.Dispose();
        }
Exemplo n.º 4
0
        public async Task <byte[]> SaveNodesAsync()
        {
            await MainLoop;

            var details = new BEncodedList();

            foreach (Bucket b in RoutingTable.Buckets)
            {
                foreach (Node n in b.Nodes)
                {
                    if (n.State != NodeState.Bad)
                    {
                        details.Add(n.CompactNode());
                    }
                }

                if (b.Replacement != null)
                {
                    if (b.Replacement.State != NodeState.Bad)
                    {
                        details.Add(b.Replacement.CompactNode());
                    }
                }
            }

            return(details.Encode());
        }
Exemplo n.º 5
0
        public void benListStackedTest()
        {
            string benString = "l6:stringl7:stringsl8:stringedei23456eei12345ee";

            byte[]       data    = System.Text.Encoding.UTF8.GetBytes(benString);
            BEncodedList list    = (BEncodedList)BEncodedValue.Decode(data);
            string       decoded = System.Text.Encoding.UTF8.GetString(list.Encode());

            Assert.AreEqual(benString, decoded);
        }
Exemplo n.º 6
0
        public void benListEncoding()
        {
            byte[]       data = System.Text.Encoding.UTF8.GetBytes("l4:test5:tests6:testede");
            BEncodedList list = new BEncodedList();

            list.Add(new BEncodedString("test"));
            list.Add(new BEncodedString("tests"));
            list.Add(new BEncodedString("tested"));

            Assert.IsTrue(Toolbox.ByteMatch(data, list.Encode()));
        }
Exemplo n.º 7
0
        public void benListEncoding()
        {
            var data = Encoding.UTF8.GetBytes("l4:test5:tests6:testede");
            var list = new BEncodedList
            {
                new BEncodedString("test"),
                new BEncodedString("tests"),
                new BEncodedString("tested")
            };

            Assert.IsTrue(Toolbox.ByteMatch(data, list.Encode()));
        }
Exemplo n.º 8
0
        public void benListEncodingBuffered()
        {
            byte[]       data = System.Text.Encoding.UTF8.GetBytes("l4:test5:tests6:testede");
            BEncodedList list = new BEncodedList();

            list.Add(new BEncodedString("test"));
            list.Add(new BEncodedString("tests"));
            list.Add(new BEncodedString("tested"));
            byte[] result = new byte[list.LengthInBytes()];
            list.Encode(result, 0);
            Assert.IsTrue(Toolbox.ByteMatch(data, result));
        }
Exemplo n.º 9
0
        private void SaveFastResume(TorrentManager[] managers)
        {
            BEncodedList list = new BEncodedList();

            foreach (TorrentManager manager in managers)
            {
                FastResume         data       = manager.SaveFastResume();
                BEncodedDictionary fastResume = data.Encode();
                list.Add(fastResume);
            }

            File.WriteAllBytes(pathToFolderApplicationData + "\\FastResume.dat", list.Encode());
        }
Exemplo n.º 10
0
        public void benListEncodingBuffered()
        {
            var data = Encoding.UTF8.GetBytes("l4:test5:tests6:testede");
            var list = new BEncodedList
            {
                new BEncodedString("test"),
                new BEncodedString("tests"),
                new BEncodedString("tested")
            };
            var result = new byte[list.LengthInBytes()];

            list.Encode(result, 0);
            Assert.IsTrue(Toolbox.ByteMatch(data, result));
        }
Exemplo n.º 11
0
 public void StoreFastResume()
 {
     try
     {
         logger.Info("storing fast resume");
         BEncodedList list = new BEncodedList();
         foreach (Download t in Torrents)
         {
             list.Add(t.SaveFastResume().Encode());
         }
         File.WriteAllBytes(Defines.SerializedFastResume, list.Encode());
     }
     catch (Exception ex)
     {
         logger.Warn(string.Format("Couldn't store fast resume: {0}", ex));
     }
 }
Exemplo n.º 12
0
        public void SaveFastResume()
        {
            if (string.IsNullOrWhiteSpace(settings.FastResumePath))
            {
                return;
            }

            var encodedList    = new BEncodedList();
            var fastResumeData = torrentsReadonly
                                 .Where(x => x.HashChecked)
                                 .Select(tm => tm.SaveFastResume().Encode());

            foreach (var data in fastResumeData)
            {
                encodedList.Add(data);
            }

            File.WriteAllBytes(settings.FastResumePath, encodedList.Encode());
        }
Exemplo n.º 13
0
        public void benListEncoding()
        {
            var data = Encoding.UTF8.GetBytes("l4:test5:tests6:testede");
            var list = new BEncodedList();
            list.Add(new BEncodedString("test"));
            list.Add(new BEncodedString("tests"));
            list.Add(new BEncodedString("tested"));

            Assert.True(Toolbox.ByteMatch(data, list.Encode()));
        }
Exemplo n.º 14
0
        public byte[] SaveNodes()
        {
            BEncodedList details = new BEncodedList();

            MainLoop.QueueWait((MainLoopTask)delegate {
                foreach (Bucket b in RoutingTable.Buckets)
                {
                    foreach (Node n in b.Nodes)
                        if (n.State != NodeState.Bad)
                            details.Add(n.CompactNode());

                    if (b.Replacement != null)
                        if (b.Replacement.State != NodeState.Bad)
                            details.Add(b.Replacement.CompactNode());
                }
            });

            return details.Encode();
        }
Exemplo n.º 15
0
        public void SaveFastResume()
        {
            if (string.IsNullOrWhiteSpace(settings.FastResumePath))
                return;

            var encodedList = new BEncodedList();
            var fastResumeData = torrentsReadonly
                .Where(x => x.HashChecked)
                .Select(tm => tm.SaveFastResume().Encode());
            foreach (var data in fastResumeData)
                encodedList.Add(data);

            File.WriteAllBytes(settings.FastResumePath, encodedList.Encode());
        }
Exemplo n.º 16
0
 public void benListEncodingBuffered()
 {
     byte[] data = System.Text.Encoding.UTF8.GetBytes("l4:test5:tests6:testede");
     BEncodedList list = new BEncodedList();
     list.Add(new BEncodedString("test"));
     list.Add(new BEncodedString("tests"));
     list.Add(new BEncodedString("tested"));
     byte[] result = new byte[list.LengthInBytes()];
     list.Encode(result, 0);
     Assert.IsTrue(Toolbox.ByteMatch(data, result));
 }
Exemplo n.º 17
0
        public void benListEncoding()
        {
            byte[] data = System.Text.Encoding.UTF8.GetBytes("l4:test5:tests6:testede");
            BEncodedList list = new BEncodedList();
            list.Add(new BEncodedString("test"));
            list.Add(new BEncodedString("tests"));
            list.Add(new BEncodedString("tested"));

            Assert.IsTrue(Toolbox.ByteMatch(data, list.Encode()));
        }
Exemplo n.º 18
0
    public void SaveFastResume(List <TorrentManager> managers)
    {
        // Store the fast resume for each torrent in a list,
         // then serialise the list to the disk.
         BEncodedList list = new BEncodedList ();
         foreach (TorrentManager manager in managers) {

             // Get the fast resume data for the torrent
             FastResume data = manager.SaveFastResume ();

             // Encode the FastResume data to a BEncodedDictionary.
             BEncodedDictionary fastResume = data.Encode ();
             // Add the FastResume dictionary to the main dictionary using
             // the torrents infohash as the key
             list.Add((fastResume as BEncodedValue));

         }

         // Write all the fast resume data to disk
         File.WriteAllBytes (fastResumePath, list.Encode ());
    }
Exemplo n.º 19
0
        public byte[] SaveNodes()
        {
            var details = new BEncodedList();

            MainLoop.QueueWait(delegate
            {
                foreach (var b in RoutingTable.Buckets)
                {
                    foreach (var n in b.Nodes.Where(n => n.State != NodeState.Bad))
                        details.Add(n.CompactNode());

                    if (b.Replacement != null)
                        if (b.Replacement.State != NodeState.Bad)
                            details.Add(b.Replacement.CompactNode());
                }
            });

            return details.Encode();
        }
Exemplo n.º 20
0
        public void SaveState()
        {
            BEncodedList list = new BEncodedList ();
            foreach (TorrentManagerAdapter adapter in this.downloaders.Values)
            {
                TorrentData d = new TorrentData ();
                d.FastResume = adapter.Manager.SaveFastResume ();
                d.SavePath = adapter.Manager.SavePath;
                d.Settings = adapter.Manager.Settings;
                d.TorrentPath = adapter.Manager.Torrent.TorrentPath;
                list.Add (d.Serialize ());
            }

            System.IO.File.WriteAllBytes (System.IO.Path.Combine (StoragePath, SettingsFile), list.Encode ());
        }
Exemplo n.º 21
0
 public void saveFastResume(List<TorrentManager> managers)
 {
     BEncodedList list = new BEncodedList();
     foreach (TorrentManager manager in managers)
     {
         FastResume data = manager.SaveFastResume();
         BEncodedDictionary fastResume = data.Encode();
         list.Add(fastResume);
     }
     File.WriteAllBytes(fastResumePath, list.Encode());
 }
Exemplo n.º 22
0
 public void StoreFastResume()
 {
     try
     {
         logger.Info("storing fast resume");
         BEncodedList list = new BEncodedList();
         foreach (Download t in Torrents)
             list.Add(t.SaveFastResume().Encode ());
         File.WriteAllBytes(Defines.SerializedFastResume, list.Encode());
     }
     catch (Exception ex)
     {
         logger.Warn (string.Format("Couldn't store fast resume: {0}", ex));
     }
 }
Exemplo n.º 23
0
        public byte[] SaveNodes()
        {
            var details = new BEncodedList();

            MainLoop.QueueWait(() =>
                                   {
                                       foreach (var bucket in RoutingTable.Buckets)
                                       {
                                           foreach (var node in bucket.Nodes)
                                               if (node.State != NodeState.Bad)
                                                   details.Add(node.CompactNode());

                                           if (bucket.Replacement != null)
                                               if (bucket.Replacement.State != NodeState.Bad)
                                                   details.Add(bucket.Replacement.CompactNode());
                                       }
                                   });

            return details.Encode();
        }
Exemplo n.º 24
0
        public void SaveState()
        {
            BEncodedList list = new BEncodedList();

            foreach (TorrentManagerAdapter adapter in this.downloaders.Values)
            {
                TorrentData d = new TorrentData();
                d.FastResume  = adapter.Manager.SaveFastResume();
                d.SavePath    = adapter.Manager.SavePath;
                d.Settings    = adapter.Manager.Settings;
                d.TorrentPath = adapter.Manager.Torrent.TorrentPath;
                list.Add(d.Serialize());
            }

            System.IO.File.WriteAllBytes(System.IO.Path.Combine(StoragePath, SettingsFile), list.Encode());
        }