Save/Load Fast Resume

 1         public void SaveFastResume (List <TorrentManager> managers)
 2         {
 3             // Store the fast resume for each torrent in a list,
 4             // then serialise the list to the disk.
 5             BEncodedList list = new BEncodedList ();
 6             foreach (TorrentManager manager in managers) {
 7 
 8                 // Get the fast resume data for the torrent
 9                 FastResume data = manager.SaveFastResume ();
10 
11                 // Encode the FastResume data to a BEncodedDictionary.
12                 BEncodedDictionary fastResume = data.Encode ();
13 
14                 // Add the FastResume dictionary to the main dictionary using
15                 // the torrents infohash as the key
16                 list.Add (data);
17             }
18 
19             // Write all the fast resume data to disk
20             File.WriteAllBytes (fastResumePath, list.Encode ());
21         }
22 
23         public void LoadFastResume (List <TorrentManager> managers)
24         {
25             // Read the main dictionary from disk and iterate through
26             // all the fast resume items
27             BEncodedList list = (BEncodedList) BEncodedValue.Decode (File.ReadAllBytes (fastResumePath));
28             foreach (BEncodedDictionary fastResume in list) {
29 
30                 // Decode the FastResume data from the BEncodedDictionary
31                 FastResume data = new FastResume (fastResume);
32 
33                 // Find the torrentmanager that the fastresume belongs to
34                 // and then load it
35                 foreach (TorrentManager manager in managers)
36                     if (manager.InfoHash == data.Infohash)
37                         manager.LoadFastResume (data);
38             }
39         }