* A seperate variable for hashing state, now properly restarts hashing

after restart.

* Stop a torrent and show a message when it finishes the final
hash-check and finds some chunks incomplete. This prevents full disk
from causing a torrent to go into an infinit loop of re-downloading
the data.

* Moved various slots from core::Manager to core::DownloadList.


git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@679 e378c898-3ddf-0310-93e7-cc216c733640
This commit is contained in:
rakshasa
2006-05-01 18:53:21 +00:00
parent fff7838f13
commit 2b420e95a0
17 changed files with 239 additions and 105 deletions
+10
View File
@@ -155,6 +155,16 @@ VariableObject::set(const torrent::Object& arg) {
// New and prettified.
//
const torrent::Object&
VariableVoidSlot::get() {
return m_cache;
}
void
VariableVoidSlot::set(const torrent::Object& arg) {
m_slotSet();
}
const torrent::Object&
VariableValueSlot::get() {
m_cache = m_slotGet() / m_unit;
+20 -1
View File
@@ -102,6 +102,26 @@ private:
// New and pretty.
//
class VariableVoidSlot : public Variable {
public:
typedef rak::function0<void> slot_set_type;
VariableVoidSlot(slot_set_type::base_type* slotSet) {
m_slotSet.set(slotSet);
}
virtual const torrent::Object& get();
virtual void set(const torrent::Object& arg);
private:
slot_set_type m_slotSet;
// Store the cache here to avoid unnessesary copying and such. This
// should not result in any unresonable memory usage since few
// strings will be very large.
torrent::Object m_cache;
};
class VariableValueSlot : public Variable {
public:
typedef rak::function0<value_type> slot_get_type;
@@ -160,7 +180,6 @@ private:
torrent::Object m_cache;
};
}
#endif
-11
View File
@@ -198,15 +198,4 @@ VariableMap::process_file(const std::string& path) {
return true;
}
void
VariableMap::process_file_throw(const std::string& path) {
if (!process_file(path))
throw torrent::input_error("Could not open option file: " + path);
}
void
VariableMap::process_file_nothrow(const std::string& path) {
process_file(path);
}
}
-2
View File
@@ -77,8 +77,6 @@ public:
void process_command(const std::string& command);
void process_stream(std::istream* str);
bool process_file(const std::string& path);
void process_file_throw(const std::string& path);
void process_file_nothrow(const std::string& path);
private:
VariableMap(const VariableMap&);