* 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:
rakshasa
2005-12-20 19:12:15 +00:00
parent 3989ae8975
commit 2c5151def5
6 changed files with 48 additions and 4 deletions
+22
View File
@@ -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
View File
@@ -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.
#
+8
View File
@@ -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++;
}
}
+5
View File
@@ -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;
+4
View File
@@ -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.
+3 -2
View File
@@ -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",