Save/Load Fast Resume


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

            // Write all the fast resume data to disk
            File.WriteAllBytes (fastResumePath, list.Encode ());
        }

        public void LoadFastResume (List <TorrentManager> managers)
        {
            // Read the main dictionary from disk and iterate through
            // all the fast resume items
            BEncodedList dictionary = (BEncodedList) BEncodedValue.Decode (File.ReadAllBytes (fastResumePath));
            foreach (BEncodedDictionary fastResume in dictionary) {

                // Decode the FastResume data from the BEncodedDictionary
                FastResume data = new FastResume (fastResume);

                // Find the torrentmanager that the fastresume belongs to
                // and then load it
                foreach (TorrentManager manager in managers)
                    if (manager.InfoHash == data.Infohash)
                        manager.LoadFastResume (data);
            }
        }