* Select the proper encoding for a torrent's name so that multi-file

torrents get the right root directory.

* Properly clean up after catching a storage_error in
EntryList::open().

* Added a funtion to torrent::Download for syncing chunks to disk, and
made torrent::resume_save_progress(...) use it.


git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@736 e378c898-3ddf-0310-93e7-cc216c733640
This commit is contained in:
rakshasa
2006-07-04 22:48:43 +00:00
parent c957d1b4d1
commit 66bb95a26c
4 changed files with 13 additions and 12 deletions
+1
View File
@@ -58,6 +58,7 @@ class timer {
static timer current(); static timer current();
static timer from_seconds(uint32_t seconds) { return rak::timer((uint64_t)seconds * 1000000); } static timer from_seconds(uint32_t seconds) { return rak::timer((uint64_t)seconds * 1000000); }
static timer from_milliseconds(uint32_t seconds) { return rak::timer((uint64_t)seconds * 1000); }
bool operator < (const timer& t) const { return m_time < t.m_time; } bool operator < (const timer& t) const { return m_time < t.m_time; }
bool operator > (const timer& t) const { return m_time > t.m_time; } bool operator > (const timer& t) const { return m_time > t.m_time; }
+1
View File
@@ -76,6 +76,7 @@ public:
bool is_shutdown_completed() { return m_shutdownQuick && torrent::is_inactive(); } bool is_shutdown_completed() { return m_shutdownQuick && torrent::is_inactive(); }
bool is_shutdown_received() { return m_shutdownReceived; } bool is_shutdown_received() { return m_shutdownReceived; }
bool is_shutdown_started() { return m_shutdownQuick; }
void initialize(); void initialize();
void cleanup(); void cleanup();
+1 -2
View File
@@ -78,8 +78,7 @@ CurlStack::perform() {
do { do {
CURLMsg* msg = curl_multi_info_read((CURLM*)m_handle, &t); CURLMsg* msg = curl_multi_info_read((CURLM*)m_handle, &t);
CurlGetList::iterator itr = std::find_if(m_getList.begin(), m_getList.end(), CurlGetList::iterator itr = std::find_if(m_getList.begin(), m_getList.end(), rak::equal(msg->easy_handle, std::mem_fun(&CurlGet::handle)));
rak::equal(msg->easy_handle, std::mem_fun(&CurlGet::handle)));
if (itr == m_getList.end()) if (itr == m_getList.end())
throw std::logic_error("Could not find CurlGet with the right easy_handle"); throw std::logic_error("Could not find CurlGet with the right easy_handle");
+4 -4
View File
@@ -126,10 +126,10 @@ load_arg_torrents(Control* c, char** first, char** last) {
} }
} }
rak::timer static inline rak::timer
client_next_timeout() { client_next_timeout(Control* c) {
if (taskScheduler.empty()) if (taskScheduler.empty())
return rak::timer::from_seconds(60); return c->is_shutdown_started() ? rak::timer::from_milliseconds(100) : rak::timer::from_seconds(60);
else if (taskScheduler.top()->time() <= cachedTime) else if (taskScheduler.top()->time() <= cachedTime)
return 0; return 0;
else else
@@ -252,7 +252,7 @@ main(int argc, char** argv) {
rak::priority_queue_perform(&taskScheduler, cachedTime); rak::priority_queue_perform(&taskScheduler, cachedTime);
// Do shutdown check before poll, not after. // Do shutdown check before poll, not after.
control->core()->get_poll_manager()->poll(client_next_timeout()); control->core()->get_poll_manager()->poll(client_next_timeout(control));
} }
control->core()->download_list()->session_save(); control->core()->download_list()->session_save();