mirror of
https://github.com/rakshasa/rtorrent.git
synced 2026-08-12 13:12:32 +00:00
* Include locally available chunks in the "chunks seen" statistics for completed/distributed copies. Patch by Josef Drexler.
* Added 'd.get_bitfield' command for retrieving the bitfield in hex format. Patch by Thomas Rosner. (PD) * Fixed include headers for gcc-4.4.0. Patch by 'kloeri'. * Switched a 'long long' with 'int64_t' in xmlrpc.cc to avoid incompatible types for some systems. git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@1092 e378c898-3ddf-0310-93e7-cc216c733640
This commit is contained in:
+19
-1
@@ -3,7 +3,7 @@
|
||||
.\" <http://shell.ipoline.com/~elmert/comp/docbook2X/>
|
||||
.\" Please send any bug reports, improvements, comments, patches,
|
||||
.\" etc. to Steve Cheng <steve@ggi-project.org>.
|
||||
.TH "RTORRENT" "1" "07 May 2008" "BitTorrent client for ncurses" ""
|
||||
.TH "RTORRENT" "1" "14 May 2009" "BitTorrent client for ncurses" ""
|
||||
|
||||
.SH NAME
|
||||
rtorrent \- a BitTorrent client for ncurses
|
||||
@@ -349,6 +349,24 @@ setting \fB0\fR\&.
|
||||
\fBmax_downloads_global = \fIvalue\fB\fR
|
||||
Max upload and download slots allowed. Disable by
|
||||
setting \fB0\fR\&.
|
||||
.TP
|
||||
\fBthrottle_up = \fIname\fB, \fIupload_rate\fB\fR
|
||||
.TP
|
||||
\fBthrottle_down = \fIname\fB, \fIdownload_rate\fB\fR
|
||||
Define secondary throttle and/or set the given upload or download rate. Attach to a download with the d.set_throttle_name=name command
|
||||
or switch throttles with Ctrl-T. Download must be stopped when changing throttles. Note that secondary throttles only work if the
|
||||
global upload/download is throttled. Setting a download to use the \fBNULL\fR throttle makes the download unthrottled
|
||||
even when there is a global throttle. Note that this special case bypasses the global throttle entirely, and as such its rate and
|
||||
transfer amounts are not included in the global statistics.
|
||||
.TP
|
||||
\fBthrottle_ip = \fIname\fB, \fIhost\fB\fR
|
||||
.TP
|
||||
\fBthrottle_ip = \fIname\fB, \fInetwork/prefix\fB\fR
|
||||
.TP
|
||||
\fBthrottle_ip = \fIname\fB, \fIstart\fB, \fIend\fB\fR
|
||||
Use the given secondary throttle for a host, CIDR network or IP range. All peers with a matching IP will use this throttle instead
|
||||
of the global throttle or a custom download throttle. The name may be \fBNULL\fR to make these peers unthrottled, with
|
||||
the same caveats as explained above.
|
||||
.SH "TRACKER RELATED SETTINGS"
|
||||
.PP
|
||||
Tracker related settings.
|
||||
|
||||
+8
-6
@@ -9,12 +9,12 @@ SUBDIRS = \
|
||||
bin_PROGRAMS = rtorrent
|
||||
|
||||
rtorrent_LDADD = \
|
||||
$(top_srcdir)/src/ui/libsub_ui.a \
|
||||
$(top_srcdir)/src/core/libsub_core.a \
|
||||
$(top_srcdir)/src/display/libsub_display.a \
|
||||
$(top_srcdir)/src/input/libsub_input.a \
|
||||
$(top_srcdir)/src/rpc/libsub_rpc.a \
|
||||
$(top_srcdir)/src/utils/libsub_utils.a
|
||||
ui/libsub_ui.a \
|
||||
core/libsub_core.a \
|
||||
display/libsub_display.a \
|
||||
input/libsub_input.a \
|
||||
rpc/libsub_rpc.a \
|
||||
utils/libsub_utils.a
|
||||
|
||||
rtorrent_SOURCES = \
|
||||
command_download.cc \
|
||||
@@ -39,3 +39,5 @@ rtorrent_SOURCES = \
|
||||
option_parser.h \
|
||||
signal_handler.cc \
|
||||
signal_handler.h
|
||||
|
||||
INCLUDES = -I$(srcdir) -I$(top_srcdir)
|
||||
|
||||
@@ -38,6 +38,7 @@
|
||||
|
||||
#include <functional>
|
||||
#include <unistd.h>
|
||||
#include <cstdio>
|
||||
#include <rak/file_stat.h>
|
||||
#include <rak/error_number.h>
|
||||
#include <rak/path.h>
|
||||
@@ -289,6 +290,13 @@ retrieve_d_custom_throw(core::Download* download, const std::string& key) {
|
||||
}
|
||||
}
|
||||
|
||||
torrent::Object
|
||||
retrieve_d_bitfield(core::Download* download) {
|
||||
const torrent::Bitfield* bitField = download->download()->file_list()->bitfield();
|
||||
|
||||
return torrent::Object(rak::transform_hex(bitField->begin(), bitField->end()));
|
||||
}
|
||||
|
||||
// Just a helper function atm.
|
||||
torrent::Object
|
||||
cmd_d_initialize_logs(core::Download* download) {
|
||||
@@ -552,6 +560,7 @@ initialize_command_download() {
|
||||
ADD_CD_VOID("hash", &retrieve_d_hash);
|
||||
ADD_CD_VOID("local_id", &retrieve_d_local_id);
|
||||
ADD_CD_VOID("local_id_html", &retrieve_d_local_id_html);
|
||||
ADD_CD_VOID("bitfield", &retrieve_d_bitfield);
|
||||
ADD_CD_VOID("base_path", &retrieve_d_base_path);
|
||||
ADD_CD_VOID("base_filename", &retrieve_d_base_filename);
|
||||
ADD_CD_STRING_UNI("name", rak::on(std::mem_fun(&core::Download::download), std::mem_fun(&torrent::Download::name)));
|
||||
|
||||
@@ -37,6 +37,7 @@
|
||||
#include "config.h"
|
||||
|
||||
#include <functional>
|
||||
#include <cstdio>
|
||||
#include <rak/file_stat.h>
|
||||
#include <rak/path.h>
|
||||
#include <rak/string_manip.h>
|
||||
|
||||
@@ -37,6 +37,7 @@
|
||||
#include "config.h"
|
||||
|
||||
#include <functional>
|
||||
#include <cstdio>
|
||||
#include <rak/address_info.h>
|
||||
#include <rak/path.h>
|
||||
#include <torrent/connection_manager.h>
|
||||
|
||||
@@ -131,7 +131,7 @@ Download::receive_storage_error(std::string msg) {
|
||||
float
|
||||
Download::distributed_copies() const {
|
||||
const uint8_t* avail = m_download.chunks_seen();
|
||||
const uint8_t* end = avail + m_download.file_list()->size_chunks();
|
||||
const torrent::Bitfield* bitfield = m_download.file_list()->bitfield();
|
||||
|
||||
if (avail == NULL)
|
||||
return 0;
|
||||
@@ -139,15 +139,17 @@ Download::distributed_copies() const {
|
||||
int minAvail = std::numeric_limits<uint8_t>::max();
|
||||
int num = 0;
|
||||
|
||||
for (; avail < end; ++avail)
|
||||
if (*avail == minAvail) {
|
||||
for (uint32_t i = m_download.file_list()->size_chunks(); i-- > 0; ) {
|
||||
int totAvail = (int)avail[i] + bitfield->get(i);
|
||||
if (totAvail == minAvail) {
|
||||
num++;
|
||||
} else if (*avail < minAvail) {
|
||||
minAvail = *avail;
|
||||
} else if (totAvail < minAvail) {
|
||||
minAvail = totAvail;
|
||||
num = 1;
|
||||
}
|
||||
}
|
||||
|
||||
return minAvail + 1 - (float)num / m_download.file_list()->size_chunks();
|
||||
return minAvail + 1 - bitfield->is_all_set() - (float)num / m_download.file_list()->size_chunks();
|
||||
}
|
||||
|
||||
void
|
||||
|
||||
@@ -37,6 +37,7 @@
|
||||
#include "config.h"
|
||||
|
||||
#include <cstring>
|
||||
#include <cstdio>
|
||||
#include <sstream>
|
||||
#include <iomanip>
|
||||
#include <rak/socket_address.h>
|
||||
|
||||
@@ -38,6 +38,7 @@
|
||||
#define RTORRENT_DISPLAY_UTILS_H
|
||||
|
||||
#include <ctime>
|
||||
#include <cstdio>
|
||||
#include <string>
|
||||
|
||||
namespace core {
|
||||
|
||||
@@ -67,7 +67,7 @@ WindowDownloadChunksSeen::redraw() {
|
||||
return;
|
||||
|
||||
m_canvas->print(2, 0, "Chunks seen: [C/A/D %i/%i/%.2f]",
|
||||
(int)m_download->download()->peers_complete(),
|
||||
(int)m_download->download()->peers_complete() + m_download->download()->file_list()->is_done(),
|
||||
(int)m_download->download()->peers_accounted(),
|
||||
std::floor(m_download->distributed_copies() * 100.0f) / 100.0f);
|
||||
|
||||
|
||||
@@ -37,6 +37,7 @@
|
||||
#include "config.h"
|
||||
|
||||
#include <cstring>
|
||||
#include <cstdio>
|
||||
#include <locale>
|
||||
#include <rak/path.h>
|
||||
#include <torrent/exceptions.h>
|
||||
|
||||
@@ -37,6 +37,7 @@
|
||||
#include "config.h"
|
||||
|
||||
#include <rak/error_number.h>
|
||||
#include <cstdio>
|
||||
#include <sys/types.h>
|
||||
#include <sys/socket.h>
|
||||
#include <torrent/exceptions.h>
|
||||
|
||||
+2
-2
@@ -98,7 +98,7 @@ xmlrpc_list_entry_to_value(xmlrpc_env* env, xmlrpc_value* src, int index) {
|
||||
|
||||
#ifdef XMLRPC_HAVE_I8
|
||||
case XMLRPC_TYPE_I8:
|
||||
long long v2;
|
||||
int64_t v2;
|
||||
xmlrpc_read_i8(env, tmp, &v2);
|
||||
xmlrpc_DECREF(tmp);
|
||||
return v2;
|
||||
@@ -244,7 +244,7 @@ xmlrpc_to_object(xmlrpc_env* env, xmlrpc_value* value, int callType, rpc::target
|
||||
|
||||
#ifdef XMLRPC_HAVE_I8
|
||||
case XMLRPC_TYPE_I8:
|
||||
long long v2;
|
||||
int64_t v2;
|
||||
xmlrpc_read_i8(env, value, &v2);
|
||||
|
||||
return torrent::Object((int64_t)v2);
|
||||
|
||||
@@ -40,6 +40,7 @@
|
||||
#include <cctype>
|
||||
#include <cerrno>
|
||||
#include <cstring>
|
||||
#include <cstdio>
|
||||
#include <sstream>
|
||||
#include <fcntl.h>
|
||||
#include <signal.h>
|
||||
|
||||
Reference in New Issue
Block a user