mirror of
https://github.com/rakshasa/rtorrent.git
synced 2026-08-06 02:02:30 +00:00
* Checked and fixed calls to priority_queue_insert to make sure they
don't end up in an infinite loop. * Fixed a bug that caused failed chunk downloads to result in ChunkSelector's forgetting to download them again. * Added note to the man page about the schedule and schedule_remove setting. * Display the number of failed chunks in the client. git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@612 e378c898-3ddf-0310-93e7-cc216c733640
This commit is contained in:
@@ -414,6 +414,28 @@
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term>schedule = <replaceable>id</replaceable>,<replaceable>start</replaceable>,<replaceable>interval</replaceable>,<replaceable>command</replaceable></term>
|
||||
<listitem><para>
|
||||
|
||||
Call <emphasis>command</emphasis> every <emphasis>interval</emphasis>
|
||||
seconds, starting from <emphasis>start</emphasis>. An
|
||||
<emphasis>interval</emphasis> of zero calls the task once, while a
|
||||
<emphasis>start</emphasis> of zero calls it immediately. Currently
|
||||
<emphasis>command</emphasis> is forwarded to the option handler.
|
||||
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term>schedule_remove = <replaceable>id</replaceable></term>
|
||||
<listitem><para>
|
||||
|
||||
Delete <emphasis>id</emphasis> from the scheduler.
|
||||
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
</variablelist>
|
||||
|
||||
</refsect1>
|
||||
|
||||
+6
-2
@@ -27,11 +27,11 @@
|
||||
#session = ./session
|
||||
|
||||
# The ip address reported to the tracker.
|
||||
#ip = 127.0.0.1
|
||||
#ip = rakshasa
|
||||
|
||||
# The ip address the listening socket and outgoing connections is
|
||||
# bound to.
|
||||
#bind = 127.0.0.1
|
||||
#bind = rakshasa
|
||||
|
||||
# Port range to use for listening.
|
||||
#port_range = 6890-6999
|
||||
@@ -46,6 +46,10 @@
|
||||
# Set whetever the client should try to connect to UDP trackers.
|
||||
#use_udp_trackers = yes
|
||||
|
||||
# Alternative calls to bind and ip that should handle dynamic ip's.
|
||||
#schedule = ip_tick,0,1800,ip=rakshasa
|
||||
#schedule = bind_tick,0,1800,bind=rakshasa
|
||||
|
||||
#
|
||||
# Do not modify the following parameters unless you know what you're doing.
|
||||
#
|
||||
|
||||
@@ -47,6 +47,7 @@
|
||||
namespace core {
|
||||
|
||||
Download::Download() :
|
||||
m_chunksFailed(0),
|
||||
m_connectionLeech(torrent::Download::CONNECTION_LEECH),
|
||||
m_connectionSeed(torrent::Download::CONNECTION_SEED) {
|
||||
}
|
||||
@@ -71,6 +72,8 @@ Download::set_download(torrent::Download d) {
|
||||
m_connTrackerSucceded = m_download.signal_tracker_succeded(sigc::bind(sigc::mem_fun(*this, &Download::receive_tracker_msg), ""));
|
||||
m_connTrackerFailed = m_download.signal_tracker_failed(sigc::mem_fun(*this, &Download::receive_tracker_msg));
|
||||
m_connStorageError = m_download.signal_storage_error(sigc::mem_fun(*this, &Download::receive_storage_error));
|
||||
|
||||
m_download.signal_chunk_failed(sigc::mem_fun(*this, &Download::receive_chunk_failed));
|
||||
}
|
||||
|
||||
void
|
||||
@@ -144,4 +147,9 @@ Download::connection_type_to_string(torrent::Download::ConnectionType t) {
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
Download::receive_chunk_failed(uint32_t idx) {
|
||||
m_chunksFailed++;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -65,6 +65,8 @@ public:
|
||||
|
||||
const std::string& get_message() { return m_message; }
|
||||
|
||||
uint32_t chunks_failed() const { return m_chunksFailed; }
|
||||
|
||||
void set_root_directory(const std::string& d);
|
||||
|
||||
ConnType get_connection_current() const { return m_download.connection_type(); }
|
||||
@@ -95,9 +97,12 @@ private:
|
||||
void receive_tracker_msg(std::string msg);
|
||||
void receive_storage_error(std::string msg);
|
||||
|
||||
void receive_chunk_failed(uint32_t idx);
|
||||
|
||||
torrent::Download m_download;
|
||||
|
||||
std::string m_message;
|
||||
uint32_t m_chunksFailed;
|
||||
|
||||
ConnType m_connectionLeech;
|
||||
ConnType m_connectionSeed;
|
||||
|
||||
@@ -103,6 +103,10 @@ public:
|
||||
void print(int x, int y, char* str,
|
||||
A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) { mvwprintw(m_window, y, x, str, a1, a2, a3, a4, a5, a6, a7); }
|
||||
|
||||
template <typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
|
||||
void print(int x, int y, char* str,
|
||||
A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) { mvwprintw(m_window, y, x, str, a1, a2, a3, a4, a5, a6, a7, a8); }
|
||||
|
||||
void set_attr(int x, int y, int n, int attr, int color) { mvwchgat(m_window, y, x, n, attr, color, NULL); }
|
||||
|
||||
// Initialize stdscr.
|
||||
|
||||
@@ -65,14 +65,15 @@ WindowDownloadStatusbar::redraw() {
|
||||
position = print_download_info(buffer, last - buffer, m_download);
|
||||
m_canvas->print(0, 0, "%s", buffer);
|
||||
|
||||
m_canvas->print(0, 1, "Peers: %i(%i) Min/Max: %i/%i Uploads: %i U/I: %i/%i",
|
||||
m_canvas->print(0, 1, "Peers: %i(%i) Min/Max: %i/%i Uploads: %i U/I: %i/%i Failed: %i",
|
||||
(int)m_download->get_download().peers_connected(),
|
||||
(int)m_download->get_download().peers_not_connected(),
|
||||
(int)m_download->get_download().peers_min(),
|
||||
(int)m_download->get_download().peers_max(),
|
||||
(int)m_download->get_download().uploads_max(),
|
||||
(int)m_download->get_download().peers_currently_unchoked(),
|
||||
(int)m_download->get_download().peers_currently_interested());
|
||||
(int)m_download->get_download().peers_currently_interested(),
|
||||
(int)m_download->chunks_failed());
|
||||
|
||||
position = print_download_status(buffer, last - buffer, m_download);
|
||||
m_canvas->print(0, 2, "[%c:%i] %s",
|
||||
|
||||
Reference in New Issue
Block a user