* 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
+2 -1
View File
@@ -57,7 +57,8 @@ class timer {
timeval tval() const { return (timeval) { m_time / 1000000, m_time % 1000000}; }
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; }
+1
View File
@@ -76,6 +76,7 @@ public:
bool is_shutdown_completed() { return m_shutdownQuick && torrent::is_inactive(); }
bool is_shutdown_received() { return m_shutdownReceived; }
bool is_shutdown_started() { return m_shutdownQuick; }
void initialize();
void cleanup();
+6 -7
View File
@@ -76,15 +76,14 @@ CurlStack::perform() {
int t;
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(),
rak::equal(msg->easy_handle, std::mem_fun(&CurlGet::handle)));
CurlGetList::iterator itr = std::find_if(m_getList.begin(), m_getList.end(), rak::equal(msg->easy_handle, std::mem_fun(&CurlGet::handle)));
if (itr == m_getList.end())
throw std::logic_error("Could not find CurlGet with the right easy_handle");
(*itr)->perform(msg);
if (itr == m_getList.end())
throw std::logic_error("Could not find CurlGet with the right easy_handle");
(*itr)->perform(msg);
} while (t);
}
+4 -4
View File
@@ -126,10 +126,10 @@ load_arg_torrents(Control* c, char** first, char** last) {
}
}
rak::timer
client_next_timeout() {
static inline rak::timer
client_next_timeout(Control* c) {
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)
return 0;
else
@@ -252,7 +252,7 @@ main(int argc, char** argv) {
rak::priority_queue_perform(&taskScheduler, cachedTime);
// 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();