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