From 7b938302603d6e2d1c0662fb6c6af186090ece14 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Tue, 5 Dec 2006 19:52:54 +0000 Subject: [PATCH] upload memory persistency --- library/pytorrent.py | 16 +++++++++++++--- library/pytorrent_core.cpp | 2 +- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/library/pytorrent.py b/library/pytorrent.py index a4131b2c7..ee291a3b3 100644 --- a/library/pytorrent.py +++ b/library/pytorrent.py @@ -82,8 +82,8 @@ class torrent_info: self.save_dir = save_dir self.compact = compact - self.user_paused = False # start out unpaused - self.uploaded_memory = 0 + self.user_paused = False # start out unpaused + self.uploaded_memory = 0 self.file_filter = [] @@ -172,6 +172,9 @@ class manager: self.state = persistent_state() def quit(self): + # Analyze data needed for pickling, etc. + self.pre_quitting() + # Pickle the prefs print "Pickling prefs..." output = open(self.base_dir + "/" + PREFS_FILENAME, 'wb') @@ -197,6 +200,13 @@ class manager: print "Quitting the core..." pytorrent_core.quit() + def pre_quitting(self): + # Save the uploaded data from this session to the existing upload memory + for unique_ID in self.unique_IDs.keys(): + self.unique_IDs[unique_ID].uploaded_memory = \ + self.unique_IDs[unique_ID].uploaded_memory + \ + self.get_torrent_core_state(unique_ID, False)['total_upload'] # Purposefully ineffi. + # Preference management functions def get_pref(self, key): @@ -380,7 +390,7 @@ class manager: # Call this when a session starts, to apply existing filters def apply_all_file_filters(self): - for unique_ID in unique_IDs.keys(): + for unique_ID in self.unique_IDs.keys(): try: self.set_file_filter(self.unique_IDs[unique_ID].file_filter) except AttributeError: diff --git a/library/pytorrent_core.cpp b/library/pytorrent_core.cpp index 563a1ecab..9984f4ca2 100755 --- a/library/pytorrent_core.cpp +++ b/library/pytorrent_core.cpp @@ -1168,7 +1168,7 @@ static PyMethodDef pytorrent_core_methods[] = { {"reannounce", torrent_reannounce, METH_VARARGS, "."}, {"pause", torrent_pause, METH_VARARGS, "."}, {"resume", torrent_resume, METH_VARARGS, "."}, - {"get_torrent_state", torrent_get_torrent_state, METH_VARARGS, "."}, + {"get_torrent_state", torrent_get_torrent_state, METH_VARARGS, "."}, {"pop_event", torrent_pop_event, METH_VARARGS, "."}, {"get_session_info", torrent_get_session_info, METH_VARARGS, "."}, {"get_peer_info", torrent_get_peer_info, METH_VARARGS, "."},