made sequenced_download_threshold a per torrent setting. Updated the project page layout. Removed incorrect invariant checks in piece picker.

This commit is contained in:
Arvid Norberg
2006-09-04 17:17:45 +00:00
parent 7bc1214749
commit 191fd76b42
14 changed files with 220 additions and 203 deletions

View File

@@ -75,89 +75,90 @@
<li><a class="reference" href="#connect-peer" id="id57" name="id57">connect_peer()</a></li>
<li><a class="reference" href="#set-ratio" id="id58" name="id58">set_ratio()</a></li>
<li><a class="reference" href="#set-upload-limit-set-download-limit" id="id59" name="id59">set_upload_limit() set_download_limit()</a></li>
<li><a class="reference" href="#set-peer-upload-limit-set-peer-download-limit" id="id60" name="id60">set_peer_upload_limit() set_peer_download_limit()</a></li>
<li><a class="reference" href="#pause-resume-is-paused" id="id61" name="id61">pause() resume() is_paused()</a></li>
<li><a class="reference" href="#is-seed" id="id62" name="id62">is_seed()</a></li>
<li><a class="reference" href="#has-metadata" id="id63" name="id63">has_metadata()</a></li>
<li><a class="reference" href="#set-tracker-login" id="id64" name="id64">set_tracker_login()</a></li>
<li><a class="reference" href="#trackers-replace-trackers" id="id65" name="id65">trackers() replace_trackers()</a></li>
<li><a class="reference" href="#add-url-seed" id="id66" name="id66">add_url_seed()</a></li>
<li><a class="reference" href="#use-interface" id="id67" name="id67">use_interface()</a></li>
<li><a class="reference" href="#info-hash" id="id68" name="id68">info_hash()</a></li>
<li><a class="reference" href="#id5" id="id69" name="id69">set_max_uploads() set_max_connections()</a></li>
<li><a class="reference" href="#write-resume-data" id="id70" name="id70">write_resume_data()</a></li>
<li><a class="reference" href="#metadata" id="id71" name="id71">metadata()</a></li>
<li><a class="reference" href="#id6" id="id72" name="id72">status()</a></li>
<li><a class="reference" href="#get-download-queue" id="id73" name="id73">get_download_queue()</a></li>
<li><a class="reference" href="#get-peer-info" id="id74" name="id74">get_peer_info()</a></li>
<li><a class="reference" href="#get-torrent-info" id="id75" name="id75">get_torrent_info()</a></li>
<li><a class="reference" href="#is-valid" id="id76" name="id76">is_valid()</a></li>
<li><a class="reference" href="#set-sequenced-download-threshold" id="id60" name="id60">set_sequenced_download_threshold()</a></li>
<li><a class="reference" href="#set-peer-upload-limit-set-peer-download-limit" id="id61" name="id61">set_peer_upload_limit() set_peer_download_limit()</a></li>
<li><a class="reference" href="#pause-resume-is-paused" id="id62" name="id62">pause() resume() is_paused()</a></li>
<li><a class="reference" href="#is-seed" id="id63" name="id63">is_seed()</a></li>
<li><a class="reference" href="#has-metadata" id="id64" name="id64">has_metadata()</a></li>
<li><a class="reference" href="#set-tracker-login" id="id65" name="id65">set_tracker_login()</a></li>
<li><a class="reference" href="#trackers-replace-trackers" id="id66" name="id66">trackers() replace_trackers()</a></li>
<li><a class="reference" href="#add-url-seed" id="id67" name="id67">add_url_seed()</a></li>
<li><a class="reference" href="#use-interface" id="id68" name="id68">use_interface()</a></li>
<li><a class="reference" href="#info-hash" id="id69" name="id69">info_hash()</a></li>
<li><a class="reference" href="#id5" id="id70" name="id70">set_max_uploads() set_max_connections()</a></li>
<li><a class="reference" href="#write-resume-data" id="id71" name="id71">write_resume_data()</a></li>
<li><a class="reference" href="#metadata" id="id72" name="id72">metadata()</a></li>
<li><a class="reference" href="#id6" id="id73" name="id73">status()</a></li>
<li><a class="reference" href="#get-download-queue" id="id74" name="id74">get_download_queue()</a></li>
<li><a class="reference" href="#get-peer-info" id="id75" name="id75">get_peer_info()</a></li>
<li><a class="reference" href="#get-torrent-info" id="id76" name="id76">get_torrent_info()</a></li>
<li><a class="reference" href="#is-valid" id="id77" name="id77">is_valid()</a></li>
</ul>
</li>
<li><a class="reference" href="#torrent-status" id="id77" name="id77">torrent_status</a></li>
<li><a class="reference" href="#peer-info" id="id78" name="id78">peer_info</a></li>
<li><a class="reference" href="#session-settings" id="id79" name="id79">session_settings</a></li>
<li><a class="reference" href="#ip-filter" id="id80" name="id80">ip_filter</a><ul>
<li><a class="reference" href="#id8" id="id81" name="id81">ip_filter()</a></li>
<li><a class="reference" href="#add-rule" id="id82" name="id82">add_rule()</a></li>
<li><a class="reference" href="#access" id="id83" name="id83">access()</a></li>
<li><a class="reference" href="#export-filter" id="id84" name="id84">export_filter()</a></li>
<li><a class="reference" href="#torrent-status" id="id78" name="id78">torrent_status</a></li>
<li><a class="reference" href="#peer-info" id="id79" name="id79">peer_info</a></li>
<li><a class="reference" href="#session-settings" id="id80" name="id80">session_settings</a></li>
<li><a class="reference" href="#ip-filter" id="id81" name="id81">ip_filter</a><ul>
<li><a class="reference" href="#id8" id="id82" name="id82">ip_filter()</a></li>
<li><a class="reference" href="#add-rule" id="id83" name="id83">add_rule()</a></li>
<li><a class="reference" href="#access" id="id84" name="id84">access()</a></li>
<li><a class="reference" href="#export-filter" id="id85" name="id85">export_filter()</a></li>
</ul>
</li>
<li><a class="reference" href="#big-number" id="id85" name="id85">big_number</a></li>
<li><a class="reference" href="#hasher" id="id86" name="id86">hasher</a></li>
<li><a class="reference" href="#fingerprint" id="id87" name="id87">fingerprint</a></li>
<li><a class="reference" href="#free-functions" id="id88" name="id88">free functions</a><ul>
<li><a class="reference" href="#identify-client" id="id89" name="id89">identify_client()</a></li>
<li><a class="reference" href="#client-fingerprint" id="id90" name="id90">client_fingerprint()</a></li>
<li><a class="reference" href="#bdecode-bencode" id="id91" name="id91">bdecode() bencode()</a></li>
<li><a class="reference" href="#big-number" id="id86" name="id86">big_number</a></li>
<li><a class="reference" href="#hasher" id="id87" name="id87">hasher</a></li>
<li><a class="reference" href="#fingerprint" id="id88" name="id88">fingerprint</a></li>
<li><a class="reference" href="#free-functions" id="id89" name="id89">free functions</a><ul>
<li><a class="reference" href="#identify-client" id="id90" name="id90">identify_client()</a></li>
<li><a class="reference" href="#client-fingerprint" id="id91" name="id91">client_fingerprint()</a></li>
<li><a class="reference" href="#bdecode-bencode" id="id92" name="id92">bdecode() bencode()</a></li>
</ul>
</li>
<li><a class="reference" href="#alerts" id="id92" name="id92">alerts</a><ul>
<li><a class="reference" href="#listen-failed-alert" id="id93" name="id93">listen_failed_alert</a></li>
<li><a class="reference" href="#file-error-alert" id="id94" name="id94">file_error_alert</a></li>
<li><a class="reference" href="#tracker-announce-alert" id="id95" name="id95">tracker_announce_alert</a></li>
<li><a class="reference" href="#tracker-alert" id="id96" name="id96">tracker_alert</a></li>
<li><a class="reference" href="#tracker-reply-alert" id="id97" name="id97">tracker_reply_alert</a></li>
<li><a class="reference" href="#tracker-warning-alert" id="id98" name="id98">tracker_warning_alert</a></li>
<li><a class="reference" href="#url-seed-alert" id="id99" name="id99">url_seed_alert</a></li>
<li><a class="reference" href="#hash-failed-alert" id="id100" name="id100">hash_failed_alert</a></li>
<li><a class="reference" href="#peer-ban-alert" id="id101" name="id101">peer_ban_alert</a></li>
<li><a class="reference" href="#peer-error-alert" id="id102" name="id102">peer_error_alert</a></li>
<li><a class="reference" href="#invalid-request-alert" id="id103" name="id103">invalid_request_alert</a></li>
<li><a class="reference" href="#torrent-finished-alert" id="id104" name="id104">torrent_finished_alert</a></li>
<li><a class="reference" href="#metadata-failed-alert" id="id105" name="id105">metadata_failed_alert</a></li>
<li><a class="reference" href="#metadata-received-alert" id="id106" name="id106">metadata_received_alert</a></li>
<li><a class="reference" href="#fastresume-rejected-alert" id="id107" name="id107">fastresume_rejected_alert</a></li>
<li><a class="reference" href="#dispatcher" id="id108" name="id108">dispatcher</a></li>
<li><a class="reference" href="#alerts" id="id93" name="id93">alerts</a><ul>
<li><a class="reference" href="#listen-failed-alert" id="id94" name="id94">listen_failed_alert</a></li>
<li><a class="reference" href="#file-error-alert" id="id95" name="id95">file_error_alert</a></li>
<li><a class="reference" href="#tracker-announce-alert" id="id96" name="id96">tracker_announce_alert</a></li>
<li><a class="reference" href="#tracker-alert" id="id97" name="id97">tracker_alert</a></li>
<li><a class="reference" href="#tracker-reply-alert" id="id98" name="id98">tracker_reply_alert</a></li>
<li><a class="reference" href="#tracker-warning-alert" id="id99" name="id99">tracker_warning_alert</a></li>
<li><a class="reference" href="#url-seed-alert" id="id100" name="id100">url_seed_alert</a></li>
<li><a class="reference" href="#hash-failed-alert" id="id101" name="id101">hash_failed_alert</a></li>
<li><a class="reference" href="#peer-ban-alert" id="id102" name="id102">peer_ban_alert</a></li>
<li><a class="reference" href="#peer-error-alert" id="id103" name="id103">peer_error_alert</a></li>
<li><a class="reference" href="#invalid-request-alert" id="id104" name="id104">invalid_request_alert</a></li>
<li><a class="reference" href="#torrent-finished-alert" id="id105" name="id105">torrent_finished_alert</a></li>
<li><a class="reference" href="#metadata-failed-alert" id="id106" name="id106">metadata_failed_alert</a></li>
<li><a class="reference" href="#metadata-received-alert" id="id107" name="id107">metadata_received_alert</a></li>
<li><a class="reference" href="#fastresume-rejected-alert" id="id108" name="id108">fastresume_rejected_alert</a></li>
<li><a class="reference" href="#dispatcher" id="id109" name="id109">dispatcher</a></li>
</ul>
</li>
<li><a class="reference" href="#exceptions" id="id109" name="id109">exceptions</a><ul>
<li><a class="reference" href="#invalid-handle" id="id110" name="id110">invalid_handle</a></li>
<li><a class="reference" href="#duplicate-torrent" id="id111" name="id111">duplicate_torrent</a></li>
<li><a class="reference" href="#invalid-encoding" id="id112" name="id112">invalid_encoding</a></li>
<li><a class="reference" href="#type-error" id="id113" name="id113">type_error</a></li>
<li><a class="reference" href="#invalid-torrent-file" id="id114" name="id114">invalid_torrent_file</a></li>
<li><a class="reference" href="#exceptions" id="id110" name="id110">exceptions</a><ul>
<li><a class="reference" href="#invalid-handle" id="id111" name="id111">invalid_handle</a></li>
<li><a class="reference" href="#duplicate-torrent" id="id112" name="id112">duplicate_torrent</a></li>
<li><a class="reference" href="#invalid-encoding" id="id113" name="id113">invalid_encoding</a></li>
<li><a class="reference" href="#type-error" id="id114" name="id114">type_error</a></li>
<li><a class="reference" href="#invalid-torrent-file" id="id115" name="id115">invalid_torrent_file</a></li>
</ul>
</li>
<li><a class="reference" href="#fast-resume" id="id115" name="id115">fast resume</a><ul>
<li><a class="reference" href="#file-format" id="id116" name="id116">file format</a></li>
<li><a class="reference" href="#fast-resume" id="id116" name="id116">fast resume</a><ul>
<li><a class="reference" href="#file-format" id="id117" name="id117">file format</a></li>
</ul>
</li>
<li><a class="reference" href="#threads" id="id117" name="id117">threads</a></li>
<li><a class="reference" href="#storage-allocation" id="id118" name="id118">storage allocation</a><ul>
<li><a class="reference" href="#full-allocation" id="id119" name="id119">full allocation</a></li>
<li><a class="reference" href="#compact-allocation" id="id120" name="id120">compact allocation</a></li>
<li><a class="reference" href="#threads" id="id118" name="id118">threads</a></li>
<li><a class="reference" href="#storage-allocation" id="id119" name="id119">storage allocation</a><ul>
<li><a class="reference" href="#full-allocation" id="id120" name="id120">full allocation</a></li>
<li><a class="reference" href="#compact-allocation" id="id121" name="id121">compact allocation</a></li>
</ul>
</li>
<li><a class="reference" href="#extensions" id="id121" name="id121">extensions</a><ul>
<li><a class="reference" href="#chat-messages" id="id122" name="id122">chat messages</a></li>
<li><a class="reference" href="#metadata-from-peers" id="id123" name="id123">metadata from peers</a></li>
<li><a class="reference" href="#http-seeding" id="id124" name="id124">HTTP seeding</a></li>
<li><a class="reference" href="#extensions" id="id122" name="id122">extensions</a><ul>
<li><a class="reference" href="#chat-messages" id="id123" name="id123">chat messages</a></li>
<li><a class="reference" href="#metadata-from-peers" id="id124" name="id124">metadata from peers</a></li>
<li><a class="reference" href="#http-seeding" id="id125" name="id125">HTTP seeding</a></li>
</ul>
</li>
<li><a class="reference" href="#filename-checks" id="id125" name="id125">filename checks</a></li>
<li><a class="reference" href="#acknowledgments" id="id126" name="id126">acknowledgments</a></li>
<li><a class="reference" href="#filename-checks" id="id126" name="id126">filename checks</a></li>
<li><a class="reference" href="#acknowledgments" id="id127" name="id127">acknowledgments</a></li>
</ul>
</div>
<div class="section" id="overview">
@@ -1127,6 +1128,7 @@ struct torrent_handle
void set_max_connections(int max_connections) const;
void set_upload_limit(int limit) const;
void set_download_limit(int limit) const;
void set_sequenced_download_threshold(int threshold) const;
void set_peer_upload_limit(asio::ip::tcp::endpoint ip, int limit) const;
void set_peer_download_limit(asio::ip::tcp::endpoint ip, int limit) const;
@@ -1250,6 +1252,24 @@ Note that setting a higher limit on a torrent then the global limit (<tt class="
will not override the global rate limit. The torrent can never upload more than the global rate
limit.</p>
</div>
<div class="section" id="set-sequenced-download-threshold">
<h2><a name="set-sequenced-download-threshold">set_sequenced_download_threshold()</a></h2>
<blockquote>
<pre class="literal-block">
void set_sequenced_download_threshold(int threshold);
</pre>
</blockquote>
<p>sequenced-download threshold is the limit on how popular a piece has to be
(popular == inverse of rarity) to be downloaded in sequence instead of in
random (rarest first) order. It can be used to tweak disk performance in
settings where the random download property is less necessary. For example, if
the threshold is 10, all pieces which 10 or more peers have, will be downloaded
in index order. This setting defaults to 100, which means that it is disabled
in practice.</p>
<p>Setting this threshold to a very small value will affect the piece distribution
negatively in the swarm. It should basically only be used in situations where
the random seeks on the disk is the download bottleneck.</p>
</div>
<div class="section" id="set-peer-upload-limit-set-peer-download-limit">
<h2><a name="set-peer-upload-limit-set-peer-download-limit">set_peer_upload_limit() set_peer_download_limit()</a></h2>
<blockquote>
@@ -1836,7 +1856,6 @@ struct session_settings
int piece_timeout;
float request_queue_time;
int sequenced_download_threshold;
int max_allowed_in_request_queue;
int max_out_request_queue;
int whole_pieces_threshold;
@@ -1877,13 +1896,6 @@ it times out if no piece response is returned.</p>
<p><tt class="docutils literal"><span class="pre">request_queue_time</span></tt> is the length of the request queue given in the number
of seconds it should take for the other end to send all the pieces. i.e. the
actual number of requests depends on the download rate and this number.</p>
<p><tt class="docutils literal"><span class="pre">sequenced_download_threshold</span></tt> is the limit on how popular a piece has to be
(popular == inverse of rarity) to be downloaded in sequence instead of in
random (rarest first) order. It can be used to tweak disk performance in
settings where the random download property is less necessary. For example, if
the threshold is 10, all pieces which 10 or more peers have, will be downloaded
in index order. This setting defaults to 100, which means that it is disabled
in practice.</p>
<p><tt class="docutils literal"><span class="pre">max_allowed_in_request_queue</span></tt> is the number of outstanding block requests
a peer is allowed to queue up in the client. If a peer sends more requests
than this (before the first one has been handled) the last request will be