mirror of
https://github.com/rakshasa/rtorrent.git
synced 2026-10-18 23:26:17 +00:00
* 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:
+2
-1
@@ -57,7 +57,8 @@ class timer {
|
|||||||
timeval tval() const { return (timeval) { m_time / 1000000, m_time % 1000000}; }
|
timeval tval() const { return (timeval) { m_time / 1000000, m_time % 1000000}; }
|
||||||
|
|
||||||
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; }
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|||||||
@@ -76,15 +76,14 @@ CurlStack::perform() {
|
|||||||
int t;
|
int t;
|
||||||
|
|
||||||
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");
|
||||||
|
|
||||||
(*itr)->perform(msg);
|
(*itr)->perform(msg);
|
||||||
} while (t);
|
} while (t);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+4
-4
@@ -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();
|
||||||
|
|||||||
Reference in New Issue
Block a user