merged RC_1_1 into master
This commit is contained in:
commit
f85c01cc0a
|
@ -64,7 +64,7 @@ before_install:
|
||||||
echo ''import site; site.addsitedir("/usr/local/lib/python2.7/site-packages")'' >> /Users/travis/Library/Python/2.7/lib/python/site-packages/homebrew.pth;
|
echo ''import site; site.addsitedir("/usr/local/lib/python2.7/site-packages")'' >> /Users/travis/Library/Python/2.7/lib/python/site-packages/homebrew.pth;
|
||||||
easy_install --user Pygments;
|
easy_install --user Pygments;
|
||||||
easy_install --user aafigure;
|
easy_install --user aafigure;
|
||||||
travis_retry brew install graphviz;
|
travis_retry brew install graphviz hunspell;
|
||||||
easy_install --user Pillow;
|
easy_install --user Pillow;
|
||||||
fi'
|
fi'
|
||||||
|
|
||||||
|
@ -134,7 +134,7 @@ script:
|
||||||
|
|
||||||
- cd docs
|
- cd docs
|
||||||
- 'if [ "$docs" == "1" ]; then
|
- 'if [ "$docs" == "1" ]; then
|
||||||
make RST2HTML=/Users/travis/Library/Python/2.7/bin/rst2html.py AAFIGURE=echo;
|
make spell-check RST2HTML=/Users/travis/Library/Python/2.7/bin/rst2html.py AAFIGURE=echo;
|
||||||
fi'
|
fi'
|
||||||
- cd ..
|
- cd ..
|
||||||
|
|
||||||
|
|
|
@ -74,6 +74,8 @@
|
||||||
* require C++11 to build libtorrent
|
* require C++11 to build libtorrent
|
||||||
|
|
||||||
|
|
||||||
|
* fix re-check issue after move_storage
|
||||||
|
* handle invalid arguments to set_piece_deadline()
|
||||||
* move_storage did not work for torrents without metadata
|
* move_storage did not work for torrents without metadata
|
||||||
* improve shutdown time by only announcing to trackers whose IP we know
|
* improve shutdown time by only announcing to trackers whose IP we know
|
||||||
* fix python3 portability issue in python binding
|
* fix python3 portability issue in python binding
|
||||||
|
|
|
@ -66,7 +66,7 @@ are mandatory. However, RSS items will be used as examples in this BEP::
|
||||||
+---------+
|
+---------+
|
||||||
|
|
||||||
The ``next`` pointer is at least 20 byte ID in the DHT key space pointing to where the next
|
The ``next`` pointer is at least 20 byte ID in the DHT key space pointing to where the next
|
||||||
item in the list is announced. The list is terminated with an ID of all zeroes.
|
item in the list is announced. The list is terminated with an ID of all zeros.
|
||||||
|
|
||||||
The ID an items is announced to is determined by the SHA1 hash of the bencoded representation
|
The ID an items is announced to is determined by the SHA1 hash of the bencoded representation
|
||||||
of the item iteself. This contains all fields in the item, except the signature.
|
of the item iteself. This contains all fields in the item, except the signature.
|
||||||
|
|
|
@ -7,6 +7,10 @@ import sys
|
||||||
verbose = '--verbose' in sys.argv
|
verbose = '--verbose' in sys.argv
|
||||||
dump = '--dump' in sys.argv
|
dump = '--dump' in sys.argv
|
||||||
internal = '--internal' in sys.argv
|
internal = '--internal' in sys.argv
|
||||||
|
plain_output = '--plain-output' in sys.argv
|
||||||
|
if plain_output:
|
||||||
|
plain_file = open('plain_text_out.txt', 'w+')
|
||||||
|
in_code = None
|
||||||
|
|
||||||
paths = ['include/libtorrent/*.hpp', 'include/libtorrent/kademlia/*.hpp', 'include/libtorrent/extensions/*.hpp']
|
paths = ['include/libtorrent/*.hpp', 'include/libtorrent/kademlia/*.hpp', 'include/libtorrent/extensions/*.hpp']
|
||||||
|
|
||||||
|
@ -329,6 +333,24 @@ def parse_class(lno, lines, filename):
|
||||||
|
|
||||||
if l.startswith('//'):
|
if l.startswith('//'):
|
||||||
if verbose: print 'desc %s' % l
|
if verbose: print 'desc %s' % l
|
||||||
|
|
||||||
|
# plain output prints just descriptions and filters out c++ code.
|
||||||
|
# it's used to run spell checker over
|
||||||
|
if plain_output:
|
||||||
|
line = l.split('//')[1]
|
||||||
|
# if the first character is a space, strip it
|
||||||
|
if len(line) > 0 and line[0] == ' ': line = line[1:]
|
||||||
|
global in_code
|
||||||
|
if in_code != None and not line.startswith(in_code) and len(line) > 1:
|
||||||
|
in_code = None
|
||||||
|
|
||||||
|
if line.strip().startswith('.. code::'):
|
||||||
|
in_code = line.split('.. code::')[0] + '\t'
|
||||||
|
|
||||||
|
# strip out C++ code from the plain text output since it's meant for
|
||||||
|
# running spell checking over
|
||||||
|
if not line.strip().startswith('.. ') and in_code == None:
|
||||||
|
plain_file.write(line + '\n')
|
||||||
l = l[2:]
|
l = l[2:]
|
||||||
if len(l) and l[0] == ' ': l = l[1:]
|
if len(l) and l[0] == ' ': l = l[1:]
|
||||||
context += l + '\n'
|
context += l + '\n'
|
||||||
|
|
|
@ -0,0 +1,466 @@
|
||||||
|
SET ISO8859-1
|
||||||
|
KEY qwertyuiop|asdfghjkl|zxcvbnm
|
||||||
|
TRY esianrtolcdugmphbyfvkwzESIANRTOLCDUGMPHBYFVKWZ'-
|
||||||
|
NOSUGGEST !
|
||||||
|
|
||||||
|
# ordinal numbers (1st, 2nd, 3th, 11th) and decads (0s, 10s, 1990s)
|
||||||
|
COMPOUNDMIN 1
|
||||||
|
# only in compounds: 1th, 2th, 3th
|
||||||
|
ONLYINCOMPOUND c
|
||||||
|
# compound rules:
|
||||||
|
# 1. [0-9]*1[0-9]th (10th, 11th, 12th, 56714th, etc.)
|
||||||
|
# 2. [0-9]*[02-9](1st|2nd|3rd|[4-9]th) (21st, 22nd, 123rd, 1234th, etc.)
|
||||||
|
COMPOUNDRULE 2
|
||||||
|
COMPOUNDRULE n*1t
|
||||||
|
COMPOUNDRULE n*mp
|
||||||
|
WORDCHARS 0123456789'
|
||||||
|
|
||||||
|
PFX A Y 1
|
||||||
|
PFX A 0 re .
|
||||||
|
|
||||||
|
PFX I Y 1
|
||||||
|
PFX I 0 in .
|
||||||
|
|
||||||
|
PFX U Y 1
|
||||||
|
PFX U 0 un .
|
||||||
|
|
||||||
|
PFX C Y 1
|
||||||
|
PFX C 0 de .
|
||||||
|
|
||||||
|
PFX E Y 1
|
||||||
|
PFX E 0 dis .
|
||||||
|
|
||||||
|
PFX F Y 1
|
||||||
|
PFX F 0 con .
|
||||||
|
|
||||||
|
PFX K Y 1
|
||||||
|
PFX K 0 pro .
|
||||||
|
|
||||||
|
SFX V N 2
|
||||||
|
SFX V e ive e
|
||||||
|
SFX V 0 ive [^e]
|
||||||
|
|
||||||
|
SFX N Y 3
|
||||||
|
SFX N e ion e
|
||||||
|
SFX N y ication y
|
||||||
|
SFX N 0 en [^ey]
|
||||||
|
|
||||||
|
SFX X Y 3
|
||||||
|
SFX X e ions e
|
||||||
|
SFX X y ications y
|
||||||
|
SFX X 0 ens [^ey]
|
||||||
|
|
||||||
|
SFX H N 2
|
||||||
|
SFX H y ieth y
|
||||||
|
SFX H 0 th [^y]
|
||||||
|
|
||||||
|
SFX Y Y 1
|
||||||
|
SFX Y 0 ly .
|
||||||
|
|
||||||
|
SFX G Y 2
|
||||||
|
SFX G e ing e
|
||||||
|
SFX G 0 ing [^e]
|
||||||
|
|
||||||
|
SFX J Y 2
|
||||||
|
SFX J e ings e
|
||||||
|
SFX J 0 ings [^e]
|
||||||
|
|
||||||
|
SFX D Y 4
|
||||||
|
SFX D 0 d e
|
||||||
|
SFX D y ied [^aeiou]y
|
||||||
|
SFX D 0 ed [^ey]
|
||||||
|
SFX D 0 ed [aeiou]y
|
||||||
|
|
||||||
|
SFX T N 4
|
||||||
|
SFX T 0 st e
|
||||||
|
SFX T y iest [^aeiou]y
|
||||||
|
SFX T 0 est [aeiou]y
|
||||||
|
SFX T 0 est [^ey]
|
||||||
|
|
||||||
|
SFX R Y 4
|
||||||
|
SFX R 0 r e
|
||||||
|
SFX R y ier [^aeiou]y
|
||||||
|
SFX R 0 er [aeiou]y
|
||||||
|
SFX R 0 er [^ey]
|
||||||
|
|
||||||
|
SFX Z Y 4
|
||||||
|
SFX Z 0 rs e
|
||||||
|
SFX Z y iers [^aeiou]y
|
||||||
|
SFX Z 0 ers [aeiou]y
|
||||||
|
SFX Z 0 ers [^ey]
|
||||||
|
|
||||||
|
SFX S Y 4
|
||||||
|
SFX S y ies [^aeiou]y
|
||||||
|
SFX S 0 s [aeiou]y
|
||||||
|
SFX S 0 es [sxzh]
|
||||||
|
SFX S 0 s [^sxzhy]
|
||||||
|
|
||||||
|
SFX P Y 3
|
||||||
|
SFX P y iness [^aeiou]y
|
||||||
|
SFX P 0 ness [aeiou]y
|
||||||
|
SFX P 0 ness [^y]
|
||||||
|
|
||||||
|
SFX M Y 1
|
||||||
|
SFX M 0 's .
|
||||||
|
|
||||||
|
SFX B Y 3
|
||||||
|
SFX B 0 able [^aeiou]
|
||||||
|
SFX B 0 able ee
|
||||||
|
SFX B e able [^aeiou]e
|
||||||
|
|
||||||
|
SFX L Y 1
|
||||||
|
SFX L 0 ment .
|
||||||
|
|
||||||
|
REP 97
|
||||||
|
REP nt n't
|
||||||
|
REP alot a_lot
|
||||||
|
REP avengence a_vengeance
|
||||||
|
REP ninties 1990s
|
||||||
|
REP teached taught
|
||||||
|
REP rised rose
|
||||||
|
REP a ei
|
||||||
|
REP ei a
|
||||||
|
REP a ey
|
||||||
|
REP ey a
|
||||||
|
REP ai ie
|
||||||
|
REP ie ai
|
||||||
|
REP are air
|
||||||
|
REP are ear
|
||||||
|
REP are eir
|
||||||
|
REP air are
|
||||||
|
REP air ere
|
||||||
|
REP ere air
|
||||||
|
REP ere ear
|
||||||
|
REP ere eir
|
||||||
|
REP ear are
|
||||||
|
REP ear air
|
||||||
|
REP ear ere
|
||||||
|
REP eir are
|
||||||
|
REP eir ere
|
||||||
|
REP ch te
|
||||||
|
REP te ch
|
||||||
|
REP ch ti
|
||||||
|
REP ti ch
|
||||||
|
REP ch tu
|
||||||
|
REP tu ch
|
||||||
|
REP ch s
|
||||||
|
REP s ch
|
||||||
|
REP ch k
|
||||||
|
REP k ch
|
||||||
|
REP f ph
|
||||||
|
REP ph f
|
||||||
|
REP gh f
|
||||||
|
REP f gh
|
||||||
|
REP i igh
|
||||||
|
REP igh i
|
||||||
|
REP i uy
|
||||||
|
REP uy i
|
||||||
|
REP i ee
|
||||||
|
REP ee i
|
||||||
|
REP j di
|
||||||
|
REP di j
|
||||||
|
REP j gg
|
||||||
|
REP gg j
|
||||||
|
REP j ge
|
||||||
|
REP ge j
|
||||||
|
REP s ti
|
||||||
|
REP ti s
|
||||||
|
REP s ci
|
||||||
|
REP ci s
|
||||||
|
REP k cc
|
||||||
|
REP cc k
|
||||||
|
REP k qu
|
||||||
|
REP qu k
|
||||||
|
REP kw qu
|
||||||
|
REP o eau
|
||||||
|
REP eau o
|
||||||
|
REP o ew
|
||||||
|
REP ew o
|
||||||
|
REP oo ew
|
||||||
|
REP ew oo
|
||||||
|
REP ew ui
|
||||||
|
REP ui ew
|
||||||
|
REP oo ui
|
||||||
|
REP ui oo
|
||||||
|
REP ew u
|
||||||
|
REP u ew
|
||||||
|
REP oo u
|
||||||
|
REP u oo
|
||||||
|
REP u oe
|
||||||
|
REP oe u
|
||||||
|
REP u ieu
|
||||||
|
REP ieu u
|
||||||
|
REP ue ew
|
||||||
|
REP ew ue
|
||||||
|
REP uff ough
|
||||||
|
REP oo ieu
|
||||||
|
REP ieu oo
|
||||||
|
REP ier ear
|
||||||
|
REP ear ier
|
||||||
|
REP ear air
|
||||||
|
REP air ear
|
||||||
|
REP w qu
|
||||||
|
REP qu w
|
||||||
|
REP z ss
|
||||||
|
REP ss z
|
||||||
|
REP shun tion
|
||||||
|
REP shun sion
|
||||||
|
REP shun cion
|
||||||
|
REP tion ssion
|
||||||
|
REP ys ies
|
||||||
|
REP u ough
|
||||||
|
|
||||||
|
# PHONEtic_english.h - #PHONEtic transformation rules for use with #PHONEtic.c
|
||||||
|
# Copyright (C) 2000 Björn Jacke
|
||||||
|
#
|
||||||
|
# This rule set is based on Lawrence Phillips original metaPHONE
|
||||||
|
# algorithm with modifications made by Michael Kuhn in his
|
||||||
|
# C implantation, more modifications by Björn Jacke when
|
||||||
|
# converting the algorithm to a rule set and minor
|
||||||
|
# touch ups by Kevin Atkinson
|
||||||
|
#
|
||||||
|
# This library is free software; you can redistribute it and/or
|
||||||
|
# modify it under the terms of the GNU Lesser General Public
|
||||||
|
# License version 2.1 as published by the Free Software Foundation;
|
||||||
|
#
|
||||||
|
# This library is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
# Lesser General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU Lesser General Public
|
||||||
|
# License along with this library; if not, write to the Free Software
|
||||||
|
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
#
|
||||||
|
# Björn Jacke may be reached by email at bjoern.jacke@gmx.de
|
||||||
|
#
|
||||||
|
# Changelog:
|
||||||
|
#
|
||||||
|
# 2000-01-05 Björn Jacke <bjoern.jacke@gmx.de>
|
||||||
|
# - first version with translation rules derived from
|
||||||
|
# metaPHONE.cc distributed with aspell 0.28.3
|
||||||
|
# - "TH" is now representated as "@" because "0" is a
|
||||||
|
# meta character
|
||||||
|
# - removed TH(!vowel) --> T; always use TH --> # instead
|
||||||
|
# - dropped "^AE" -> "E" (redundant)
|
||||||
|
# - "ing" is transformed to "N", not "NK"
|
||||||
|
# - "SCH(EO)" transforms to "SK" now
|
||||||
|
# - added R --> SILENT if (after a vowel) and no (vowel or
|
||||||
|
# "y" follows) like in "Marcy" or "abort"
|
||||||
|
# - H is SILENT in RH at beginning of words
|
||||||
|
# - H is SILENT if vowel leads and "Y" follows
|
||||||
|
# - some ".OUGH.." --> ...F exceptions added
|
||||||
|
# - "^V" transforms to "W"
|
||||||
|
# 2000-01-07 Kevin Atkinson <kevinatk@home.com>
|
||||||
|
# Converted from header to data file.
|
||||||
|
#
|
||||||
|
# 2007-08-23 László Németh <nemeth AT OOo>
|
||||||
|
# Add PHONE header and #PHONE keywords
|
||||||
|
#
|
||||||
|
# version 1.1
|
||||||
|
|
||||||
|
# Documentation: http://aspell.net/man-html/PHONEtic-Code.html
|
||||||
|
|
||||||
|
PHONE 105
|
||||||
|
PHONE AH(AEIOUY)-^ *H
|
||||||
|
PHONE AR(AEIOUY)-^ *R
|
||||||
|
PHONE A(HR)^ *
|
||||||
|
PHONE A^ *
|
||||||
|
PHONE AH(AEIOUY)- H
|
||||||
|
PHONE AR(AEIOUY)- R
|
||||||
|
PHONE A(HR) _
|
||||||
|
PHONE BB- _
|
||||||
|
PHONE B B
|
||||||
|
PHONE CQ- _
|
||||||
|
PHONE CIA X
|
||||||
|
PHONE CH X
|
||||||
|
PHONE C(EIY)- S
|
||||||
|
PHONE CK K
|
||||||
|
PHONE COUGH^ KF
|
||||||
|
PHONE CC< C
|
||||||
|
PHONE C K
|
||||||
|
PHONE DG(EIY) K
|
||||||
|
PHONE DD- _
|
||||||
|
PHONE D T
|
||||||
|
PHONE É< E
|
||||||
|
PHONE EH(AEIOUY)-^ *H
|
||||||
|
PHONE ER(AEIOUY)-^ *R
|
||||||
|
PHONE E(HR)^ *
|
||||||
|
PHONE ENOUGH^$ *NF
|
||||||
|
PHONE E^ *
|
||||||
|
PHONE EH(AEIOUY)- H
|
||||||
|
PHONE ER(AEIOUY)- R
|
||||||
|
PHONE E(HR) _
|
||||||
|
PHONE FF- _
|
||||||
|
PHONE F F
|
||||||
|
PHONE GN^ N
|
||||||
|
PHONE GN$ N
|
||||||
|
PHONE GNS$ NS
|
||||||
|
PHONE GNED$ N
|
||||||
|
PHONE GH(AEIOUY)- K
|
||||||
|
PHONE GH _
|
||||||
|
PHONE GG9 K
|
||||||
|
PHONE G K
|
||||||
|
PHONE H H
|
||||||
|
PHONE IH(AEIOUY)-^ *H
|
||||||
|
PHONE IR(AEIOUY)-^ *R
|
||||||
|
PHONE I(HR)^ *
|
||||||
|
PHONE I^ *
|
||||||
|
PHONE ING6 N
|
||||||
|
PHONE IH(AEIOUY)- H
|
||||||
|
PHONE IR(AEIOUY)- R
|
||||||
|
PHONE I(HR) _
|
||||||
|
PHONE J K
|
||||||
|
PHONE KN^ N
|
||||||
|
PHONE KK- _
|
||||||
|
PHONE K K
|
||||||
|
PHONE LAUGH^ LF
|
||||||
|
PHONE LL- _
|
||||||
|
PHONE L L
|
||||||
|
PHONE MB$ M
|
||||||
|
PHONE MM M
|
||||||
|
PHONE M M
|
||||||
|
PHONE NN- _
|
||||||
|
PHONE N N
|
||||||
|
PHONE OH(AEIOUY)-^ *H
|
||||||
|
PHONE OR(AEIOUY)-^ *R
|
||||||
|
PHONE O(HR)^ *
|
||||||
|
PHONE O^ *
|
||||||
|
PHONE OH(AEIOUY)- H
|
||||||
|
PHONE OR(AEIOUY)- R
|
||||||
|
PHONE O(HR) _
|
||||||
|
PHONE PH F
|
||||||
|
PHONE PN^ N
|
||||||
|
PHONE PP- _
|
||||||
|
PHONE P P
|
||||||
|
PHONE Q K
|
||||||
|
PHONE RH^ R
|
||||||
|
PHONE ROUGH^ RF
|
||||||
|
PHONE RR- _
|
||||||
|
PHONE R R
|
||||||
|
PHONE SCH(EOU)- SK
|
||||||
|
PHONE SC(IEY)- S
|
||||||
|
PHONE SH X
|
||||||
|
PHONE SI(AO)- X
|
||||||
|
PHONE SS- _
|
||||||
|
PHONE S S
|
||||||
|
PHONE TI(AO)- X
|
||||||
|
PHONE TH @
|
||||||
|
PHONE TCH-- _
|
||||||
|
PHONE TOUGH^ TF
|
||||||
|
PHONE TT- _
|
||||||
|
PHONE T T
|
||||||
|
PHONE UH(AEIOUY)-^ *H
|
||||||
|
PHONE UR(AEIOUY)-^ *R
|
||||||
|
PHONE U(HR)^ *
|
||||||
|
PHONE U^ *
|
||||||
|
PHONE UH(AEIOUY)- H
|
||||||
|
PHONE UR(AEIOUY)- R
|
||||||
|
PHONE U(HR) _
|
||||||
|
PHONE V^ W
|
||||||
|
PHONE V F
|
||||||
|
PHONE WR^ R
|
||||||
|
PHONE WH^ W
|
||||||
|
PHONE W(AEIOU)- W
|
||||||
|
PHONE X^ S
|
||||||
|
PHONE X KS
|
||||||
|
PHONE Y(AEIOU)- Y
|
||||||
|
PHONE ZZ- _
|
||||||
|
PHONE Z S
|
||||||
|
|
||||||
|
#The rules in a different view:
|
||||||
|
#
|
||||||
|
# Exceptions:
|
||||||
|
#
|
||||||
|
# Beginning of word: "gn", "kn-", "pn-", "wr-" ----> drop first letter
|
||||||
|
# "Aebersold", "Gnagy", "Knuth", "Pniewski", "Wright"
|
||||||
|
#
|
||||||
|
# Beginning of word: "x" ----> change to "s"
|
||||||
|
# as in "Deng Xiaopeng"
|
||||||
|
#
|
||||||
|
# Beginning of word: "wh-" ----> change to "w"
|
||||||
|
# as in "Whalen"
|
||||||
|
# Beginning of word: leading vowels are transformed to "*"
|
||||||
|
#
|
||||||
|
# "[crt]ough" and "enough" are handled separately because of "F" sound
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# A --> A at beginning
|
||||||
|
# _ otherwise
|
||||||
|
#
|
||||||
|
# B --> B unless at the end of word after "m", as in "dumb", "McComb"
|
||||||
|
#
|
||||||
|
# C --> X (sh) if "-cia-" or "-ch-"
|
||||||
|
# S if "-ci-", "-ce-", or "-cy-"
|
||||||
|
# SILENT if "-sci-", "-sce-", or "-scy-", or "-cq-"
|
||||||
|
# K otherwise, including in "-sch-"
|
||||||
|
#
|
||||||
|
# D --> K if in "-dge-", "-dgy-", or "-dgi-"
|
||||||
|
# T otherwise
|
||||||
|
#
|
||||||
|
# E --> A at beginnig
|
||||||
|
# _ SILENT otherwise
|
||||||
|
#
|
||||||
|
# F --> F
|
||||||
|
#
|
||||||
|
# G --> SILENT if in "-gh-" and not at end or before a vowel
|
||||||
|
# in "-gn" or "-gned" or "-gns"
|
||||||
|
# in "-dge-" etc., as in above rule
|
||||||
|
# K if before "i", or "e", or "y" if not double "gg"
|
||||||
|
#
|
||||||
|
# K otherwise (incl. "GG"!)
|
||||||
|
#
|
||||||
|
# H --> SILENT if after vowel and no vowel or "Y" follows
|
||||||
|
# or after "-ch-", "-sh-", "-ph-", "-th-", "-gh-"
|
||||||
|
# or after "rh-" at beginning
|
||||||
|
# H otherwise
|
||||||
|
#
|
||||||
|
# I --> A at beginning
|
||||||
|
# _ SILENT otherwise
|
||||||
|
#
|
||||||
|
# J --> K
|
||||||
|
#
|
||||||
|
# K --> SILENT if after "c"
|
||||||
|
# K otherwise
|
||||||
|
#
|
||||||
|
# L --> L
|
||||||
|
#
|
||||||
|
# M --> M
|
||||||
|
#
|
||||||
|
# N --> N
|
||||||
|
#
|
||||||
|
# O --> A at beginning
|
||||||
|
# _ SILENT otherwise
|
||||||
|
#
|
||||||
|
# P --> F if before "h"
|
||||||
|
# P otherwise
|
||||||
|
#
|
||||||
|
# Q --> K
|
||||||
|
#
|
||||||
|
# R --> SILENT if after vowel and no vowel or "Y" follows
|
||||||
|
# R otherwise
|
||||||
|
#
|
||||||
|
# S --> X (sh) if before "h" or in "-sio-" or "-sia-"
|
||||||
|
# SK if followed by "ch(eo)" (SCH(EO))
|
||||||
|
# S otherwise
|
||||||
|
#
|
||||||
|
# T --> X (sh) if "-tia-" or "-tio-"
|
||||||
|
# 0 (th) if before "h"
|
||||||
|
# silent if in "-tch-"
|
||||||
|
# T otherwise
|
||||||
|
#
|
||||||
|
# U --> A at beginning
|
||||||
|
# _ SILENT otherwise
|
||||||
|
#
|
||||||
|
# V --> V if first letter of word
|
||||||
|
# F otherwise
|
||||||
|
#
|
||||||
|
# W --> SILENT if not followed by a vowel
|
||||||
|
# W if followed by a vowel
|
||||||
|
#
|
||||||
|
# X --> KS
|
||||||
|
#
|
||||||
|
# Y --> SILENT if not followed by a vowel
|
||||||
|
# Y if followed by a vowel
|
||||||
|
#
|
||||||
|
# Z --> S
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,203 @@
|
||||||
|
'
|
||||||
|
's
|
||||||
|
libtorrent
|
||||||
|
API
|
||||||
|
APIs
|
||||||
|
ABI
|
||||||
|
SHA-1
|
||||||
|
ed25519
|
||||||
|
const
|
||||||
|
BEP
|
||||||
|
bdecode
|
||||||
|
bdecoded
|
||||||
|
bencode
|
||||||
|
bencoding
|
||||||
|
bencoded
|
||||||
|
int64
|
||||||
|
uint64
|
||||||
|
enum
|
||||||
|
enums
|
||||||
|
struct
|
||||||
|
structs
|
||||||
|
bool
|
||||||
|
realloc
|
||||||
|
merkle
|
||||||
|
hpp
|
||||||
|
bittyrant
|
||||||
|
bittorrent
|
||||||
|
bitmask
|
||||||
|
bitmasks
|
||||||
|
SSL
|
||||||
|
asio
|
||||||
|
uTP
|
||||||
|
TCP
|
||||||
|
UDP
|
||||||
|
IP
|
||||||
|
IPv4
|
||||||
|
IPv6
|
||||||
|
QoS
|
||||||
|
TOS
|
||||||
|
unchoke
|
||||||
|
unchoked
|
||||||
|
dict
|
||||||
|
kiB
|
||||||
|
MiB
|
||||||
|
DHT
|
||||||
|
adler32
|
||||||
|
LRU
|
||||||
|
UPnP
|
||||||
|
NAT
|
||||||
|
PMP
|
||||||
|
Arvid
|
||||||
|
Norberg
|
||||||
|
RTT
|
||||||
|
internet
|
||||||
|
TODO
|
||||||
|
UNC
|
||||||
|
plugin
|
||||||
|
plugins
|
||||||
|
symlink
|
||||||
|
symlinks
|
||||||
|
CRC32
|
||||||
|
UTF
|
||||||
|
bitfield
|
||||||
|
RSS
|
||||||
|
socks5
|
||||||
|
socks4
|
||||||
|
metadata
|
||||||
|
posix
|
||||||
|
downloaders
|
||||||
|
bitset
|
||||||
|
kB
|
||||||
|
hostname
|
||||||
|
indices
|
||||||
|
dht
|
||||||
|
noseed
|
||||||
|
BFpe
|
||||||
|
BFsd
|
||||||
|
i2p
|
||||||
|
async
|
||||||
|
uTorrent
|
||||||
|
pred
|
||||||
|
sha1
|
||||||
|
pread
|
||||||
|
preadv
|
||||||
|
pwrite
|
||||||
|
pwritev
|
||||||
|
ftruncate
|
||||||
|
iovec
|
||||||
|
uint8
|
||||||
|
addr
|
||||||
|
iov
|
||||||
|
reannounce
|
||||||
|
PEM
|
||||||
|
pem
|
||||||
|
dh_params
|
||||||
|
outform
|
||||||
|
pex
|
||||||
|
trackerless
|
||||||
|
sig
|
||||||
|
ip
|
||||||
|
HTTP
|
||||||
|
URL
|
||||||
|
URLs
|
||||||
|
username
|
||||||
|
auth
|
||||||
|
idx
|
||||||
|
num
|
||||||
|
passphrase
|
||||||
|
UUID
|
||||||
|
UUIDs
|
||||||
|
uuid
|
||||||
|
performant
|
||||||
|
preformatted
|
||||||
|
SHA
|
||||||
|
buf
|
||||||
|
bufs
|
||||||
|
sizeof
|
||||||
|
params
|
||||||
|
ptr
|
||||||
|
msvc
|
||||||
|
mutex
|
||||||
|
eventfd
|
||||||
|
uint32
|
||||||
|
HWND
|
||||||
|
IPs
|
||||||
|
CIDR
|
||||||
|
kademlia
|
||||||
|
userdata
|
||||||
|
dont
|
||||||
|
OR
|
||||||
|
ORed
|
||||||
|
Diffie
|
||||||
|
OpenSSL
|
||||||
|
openssl
|
||||||
|
libtorrent's
|
||||||
|
filesystem
|
||||||
|
url
|
||||||
|
fs
|
||||||
|
io
|
||||||
|
ssl
|
||||||
|
errc
|
||||||
|
dh
|
||||||
|
dhparam
|
||||||
|
dhparams
|
||||||
|
0x01
|
||||||
|
0x02
|
||||||
|
0x04
|
||||||
|
0x08
|
||||||
|
http
|
||||||
|
failcount
|
||||||
|
superseeding
|
||||||
|
foo
|
||||||
|
baz
|
||||||
|
JSON
|
||||||
|
HTTPS
|
||||||
|
v4
|
||||||
|
v6
|
||||||
|
upnp
|
||||||
|
x509
|
||||||
|
process'
|
||||||
|
crc32
|
||||||
|
mtime
|
||||||
|
fallback
|
||||||
|
accessor
|
||||||
|
utf
|
||||||
|
str
|
||||||
|
bw
|
||||||
|
trackerid
|
||||||
|
timestamp
|
||||||
|
prioritisation
|
||||||
|
filehash
|
||||||
|
len
|
||||||
|
partfile
|
||||||
|
prepended
|
||||||
|
vec
|
||||||
|
dir
|
||||||
|
ut
|
||||||
|
ih
|
||||||
|
ec
|
||||||
|
cb
|
||||||
|
cid
|
||||||
|
mj
|
||||||
|
prio
|
||||||
|
src
|
||||||
|
'put'
|
||||||
|
'mtime'
|
||||||
|
'fingerprints'
|
||||||
|
'query'
|
||||||
|
'ro'
|
||||||
|
GCC
|
||||||
|
prioritization
|
||||||
|
nullptr
|
||||||
|
nothrow
|
||||||
|
precompute
|
||||||
|
recomputation
|
||||||
|
RPC
|
||||||
|
unchoking
|
||||||
|
ep
|
||||||
|
nid
|
||||||
|
crypto
|
||||||
|
uri
|
||||||
|
infohashes
|
||||||
|
rw
|
|
@ -96,8 +96,12 @@ ifneq ($(STAGE),)
|
||||||
cp $@ $(WEB_PATH)/$@
|
cp $@ $(WEB_PATH)/$@
|
||||||
endif
|
endif
|
||||||
|
|
||||||
$(REFERENCE_TARGETS:=.rst):gen_reference_doc.py ../include/libtorrent/*.hpp ../include/libtorrent/kademlia/*.hpp manual.rst settings.rst stats_counters.rst
|
$(REFERENCE_TARGETS:=.rst) plain_text_out.txt:gen_reference_doc.py ../include/libtorrent/*.hpp ../include/libtorrent/kademlia/*.hpp manual.rst settings.rst stats_counters.rst
|
||||||
python gen_reference_doc.py
|
python gen_reference_doc.py --plain-output
|
||||||
|
|
||||||
|
spell-check:plain_text_out.txt
|
||||||
|
hunspell -d hunspell/en_US -p hunspell/libtorrent.dic -l plain_text_out.txt >hunspell-report.txt
|
||||||
|
@if [ -s hunspell-report.txt ]; then echo 'spellcheck failed, fix words or add to dictionary:'; cat hunspell-report.txt; false; fi;
|
||||||
|
|
||||||
%.epub:%.rst
|
%.epub:%.rst
|
||||||
rst2epub --exit-status=2 $? $@
|
rst2epub --exit-status=2 $? $@
|
||||||
|
|
|
@ -62,7 +62,7 @@ how to find out about it and what to do about it.
|
||||||
|
|
||||||
Make sure to keep track of the paused state, the error state and the upload
|
Make sure to keep track of the paused state, the error state and the upload
|
||||||
mode of your torrents. By default, torrents are auto-managed, which means
|
mode of your torrents. By default, torrents are auto-managed, which means
|
||||||
libtorrent will pause them, unpause them, scrape them and take them out
|
libtorrent will pause, resume, scrape them and take them out
|
||||||
of upload-mode automatically.
|
of upload-mode automatically.
|
||||||
|
|
||||||
Whenever a torrent encounters a fatal error, it will be stopped, and the
|
Whenever a torrent encounters a fatal error, it will be stopped, and the
|
||||||
|
@ -315,7 +315,7 @@ It limits the number of started seeds to settings_pack::active_seeds.
|
||||||
|
|
||||||
On top of this basic bias, *seed priority* can be controller by specifying a
|
On top of this basic bias, *seed priority* can be controller by specifying a
|
||||||
seed ratio (the upload to download ratio), a seed-time ratio (the download
|
seed ratio (the upload to download ratio), a seed-time ratio (the download
|
||||||
time to seeding time ratio) and a seed-time (the abosulte time to be seeding a
|
time to seeding time ratio) and a seed-time (the absolute time to be seeding a
|
||||||
torrent). Until all those targets are hit, the torrent will be prioritized for
|
torrent). Until all those targets are hit, the torrent will be prioritized for
|
||||||
seeding.
|
seeding.
|
||||||
|
|
||||||
|
@ -350,7 +350,7 @@ anything. If peers are allowed, torrents may:
|
||||||
2. announce to the DHT
|
2. announce to the DHT
|
||||||
3. announce to local peer discovery (local service discovery)
|
3. announce to local peer discovery (local service discovery)
|
||||||
|
|
||||||
Each of those actions are associated with a cost and hence may need a seprarate
|
Each of those actions are associated with a cost and hence may need a separate
|
||||||
limit. These limits are controlled by settings_pack::active_tracker_limit,
|
limit. These limits are controlled by settings_pack::active_tracker_limit,
|
||||||
settings_pack::active_dht_limit and settings_pack::active_lsd_limit
|
settings_pack::active_dht_limit and settings_pack::active_lsd_limit
|
||||||
respectively.
|
respectively.
|
||||||
|
@ -564,7 +564,7 @@ It will of course still check for existing pieces and fast resume data. The main
|
||||||
drawbacks of this mode are:
|
drawbacks of this mode are:
|
||||||
|
|
||||||
* It may take longer to start the torrent, since it will need to fill the files
|
* It may take longer to start the torrent, since it will need to fill the files
|
||||||
with zeroes. This delay is linear to the size of the download.
|
with zeros. This delay is linear to the size of the download.
|
||||||
|
|
||||||
* The download may occupy unnecessary disk space between download sessions.
|
* The download may occupy unnecessary disk space between download sessions.
|
||||||
|
|
||||||
|
@ -765,7 +765,9 @@ rate limits.
|
||||||
When the rate limits are adjusted for a specific torrent, a class is created
|
When the rate limits are adjusted for a specific torrent, a class is created
|
||||||
implicitly for that torrent.
|
implicitly for that torrent.
|
||||||
|
|
||||||
The default peer class IDs are defined as enums in the ``session`` class::
|
The default peer class IDs are defined as enums in the ``session`` class:
|
||||||
|
|
||||||
|
.. code:: c++
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
global_peer_class_id,
|
global_peer_class_id,
|
||||||
|
|
|
@ -1592,7 +1592,7 @@ CLIENT OPTIONS
|
||||||
[q] quit client [m] add magnet link
|
[q] quit client [m] add magnet link
|
||||||
|
|
||||||
TORRENT ACTIONS
|
TORRENT ACTIONS
|
||||||
[p] pause/unpause selected torrent [C] toggle disk cache
|
[p] pause/resume selected torrent [C] toggle disk cache
|
||||||
[s] toggle sequential download [j] force recheck
|
[s] toggle sequential download [j] force recheck
|
||||||
[space] toggle session pause [c] clear error
|
[space] toggle session pause [c] clear error
|
||||||
[v] scrape [D] delete torrent and data
|
[v] scrape [D] delete torrent and data
|
||||||
|
|
|
@ -308,7 +308,7 @@ namespace libtorrent {
|
||||||
// paths. This means they must use backslashes as directory separators
|
// paths. This means they must use backslashes as directory separators
|
||||||
// and may not contain the special directories "." or "..".
|
// and may not contain the special directories "." or "..".
|
||||||
//
|
//
|
||||||
// Setting this to an absolute path is slightly more performant than a
|
// Setting this to an absolute path performs slightly better than a
|
||||||
// relative path.
|
// relative path.
|
||||||
std::string save_path;
|
std::string save_path;
|
||||||
|
|
||||||
|
@ -366,7 +366,7 @@ namespace libtorrent {
|
||||||
// set this to the info hash of the torrent to add in case the info-hash
|
// set this to the info hash of the torrent to add in case the info-hash
|
||||||
// is the only known property of the torrent. i.e. you don't have a
|
// is the only known property of the torrent. i.e. you don't have a
|
||||||
// .torrent file nor a magnet link.
|
// .torrent file nor a magnet link.
|
||||||
// To add a magnet link, use parse_magnet_uri() to populatefields in the
|
// To add a magnet link, use parse_magnet_uri() to populate fields in the
|
||||||
// add_torrent_params object.
|
// add_torrent_params object.
|
||||||
sha1_hash info_hash;
|
sha1_hash info_hash;
|
||||||
|
|
||||||
|
|
|
@ -545,7 +545,7 @@ namespace libtorrent {
|
||||||
virtual std::string message() const override;
|
virtual std::string message() const override;
|
||||||
|
|
||||||
// tells how many peers the tracker returned in this response. This is
|
// tells how many peers the tracker returned in this response. This is
|
||||||
// not expected to be more thant the ``num_want`` settings. These are not necessarily
|
// not expected to be greater than the ``num_want`` settings. These are not necessarily
|
||||||
// all new peers, some of them may already be connected.
|
// all new peers, some of them may already be connected.
|
||||||
int const num_peers;
|
int const num_peers;
|
||||||
};
|
};
|
||||||
|
@ -748,7 +748,7 @@ namespace libtorrent {
|
||||||
bool const peer_interested;
|
bool const peer_interested;
|
||||||
|
|
||||||
// if this is true, the peer is not allowed to download this piece because
|
// if this is true, the peer is not allowed to download this piece because
|
||||||
// of superseeding rules.
|
// of super-seeding rules.
|
||||||
bool const withheld;
|
bool const withheld;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1298,11 +1298,11 @@ namespace libtorrent {
|
||||||
libtorrent::socket_type_t const socket_type;
|
libtorrent::socket_type_t const socket_type;
|
||||||
|
|
||||||
// the address libtorrent attempted to listen on
|
// the address libtorrent attempted to listen on
|
||||||
// see alert's documentation for validity of this value
|
// see alert documentation for validity of this value
|
||||||
aux::noexcept_movable<libtorrent::address> address;
|
aux::noexcept_movable<libtorrent::address> address;
|
||||||
|
|
||||||
// the port libtorrent attempted to listen on
|
// the port libtorrent attempted to listen on
|
||||||
// see alert's documentation for validity of this value
|
// see alert documentation for validity of this value
|
||||||
int const port;
|
int const port;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@ -2032,7 +2032,7 @@ namespace libtorrent {
|
||||||
virtual std::string message() const override;
|
virtual std::string message() const override;
|
||||||
|
|
||||||
// the target hash of the immutable item. This must
|
// the target hash of the immutable item. This must
|
||||||
// match the sha-1 hash of the bencoded form of ``item``.
|
// match the SHA-1 hash of the bencoded form of ``item``.
|
||||||
sha1_hash target;
|
sha1_hash target;
|
||||||
|
|
||||||
// the data for this item
|
// the data for this item
|
||||||
|
@ -2635,7 +2635,7 @@ namespace libtorrent {
|
||||||
|
|
||||||
time_duration const interval;
|
time_duration const interval;
|
||||||
|
|
||||||
// This field indicates how many infohash keys are currently in the node's storage.
|
// This field indicates how many info-hash keys are currently in the node's storage.
|
||||||
// If the value is larger than the number of returned samples it indicates that the
|
// If the value is larger than the number of returned samples it indicates that the
|
||||||
// indexer may obtain additional samples after waiting out the interval.
|
// indexer may obtain additional samples after waiting out the interval.
|
||||||
int const num_infohashes;
|
int const num_infohashes;
|
||||||
|
@ -2648,8 +2648,9 @@ namespace libtorrent {
|
||||||
|
|
||||||
// This is the set of more DHT nodes returned by the request.
|
// This is the set of more DHT nodes returned by the request.
|
||||||
//
|
//
|
||||||
// The information is included so that indexing nodes can perform a keyspace
|
// The information is included so that indexing nodes can perform a key
|
||||||
// traversal with a single RPC per node by adjusting the target value for each RPC.
|
// space traversal with a single RPC per node by adjusting the target
|
||||||
|
// value for each RPC.
|
||||||
std::vector<std::pair<sha1_hash, udp::endpoint>> nodes() const;
|
std::vector<std::pair<sha1_hash, udp::endpoint>> nodes() const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
|
@ -348,7 +348,7 @@ struct TORRENT_EXPORT bdecode_node
|
||||||
// Swap contents.
|
// Swap contents.
|
||||||
void swap(bdecode_node& n);
|
void swap(bdecode_node& n);
|
||||||
|
|
||||||
// pre-allocate memory for the specified numbers of tokens. This is
|
// preallocate memory for the specified numbers of tokens. This is
|
||||||
// useful if you know approximately how many tokens are in the file
|
// useful if you know approximately how many tokens are in the file
|
||||||
// you are about to parse. Doing so will save realloc operations
|
// you are about to parse. Doing so will save realloc operations
|
||||||
// while parsing. You should only call this on the root node, before
|
// while parsing. You should only call this on the root node, before
|
||||||
|
|
|
@ -112,7 +112,7 @@ namespace aux {
|
||||||
partial_hash(): offset(0) {}
|
partial_hash(): offset(0) {}
|
||||||
// the number of bytes in the piece that has been hashed
|
// the number of bytes in the piece that has been hashed
|
||||||
int offset;
|
int offset;
|
||||||
// the sha-1 context
|
// the SHA-1 context
|
||||||
hasher h;
|
hasher h;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -136,10 +136,10 @@ namespace libtorrent {
|
||||||
symlinks = 8,
|
symlinks = 8,
|
||||||
|
|
||||||
// to create a torrent that can be updated via a *mutable torrent*
|
// to create a torrent that can be updated via a *mutable torrent*
|
||||||
// (see BEP38_). This also needs to be enabled for torrents that update
|
// (see `BEP 38`_). This also needs to be enabled for torrents that update
|
||||||
// another torrent.
|
// another torrent.
|
||||||
//
|
//
|
||||||
// .. _BEP38: http://www.bittorrent.org/beps/bep_0038.html
|
// .. _`BEP 38`: http://www.bittorrent.org/beps/bep_0038.html
|
||||||
mutable_torrent_support = 16
|
mutable_torrent_support = 16
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -151,7 +151,7 @@ namespace libtorrent {
|
||||||
// the specified number of bytes will be preceded by a pad file to align it
|
// the specified number of bytes will be preceded by a pad file to align it
|
||||||
// with the start of a piece. The pad_file_limit is ignored unless the
|
// with the start of a piece. The pad_file_limit is ignored unless the
|
||||||
// ``optimize_alignment`` flag is passed. Typically it doesn't make sense
|
// ``optimize_alignment`` flag is passed. Typically it doesn't make sense
|
||||||
// to set this any lower than 4kiB.
|
// to set this any lower than 4 kiB.
|
||||||
//
|
//
|
||||||
// The overload that takes a ``torrent_info`` object will make a verbatim
|
// The overload that takes a ``torrent_info`` object will make a verbatim
|
||||||
// copy of its info dictionary (to preserve the info-hash). The copy of
|
// copy of its info dictionary (to preserve the info-hash). The copy of
|
||||||
|
@ -300,7 +300,7 @@ namespace libtorrent {
|
||||||
// the info dictionary
|
// the info dictionary
|
||||||
entry m_info_dict;
|
entry m_info_dict;
|
||||||
|
|
||||||
// the urls to the trackers
|
// the URLs to the trackers
|
||||||
std::vector<std::pair<std::string, int>> m_urls;
|
std::vector<std::pair<std::string, int>> m_urls;
|
||||||
|
|
||||||
std::vector<std::string> m_url_seeds;
|
std::vector<std::string> m_url_seeds;
|
||||||
|
@ -344,7 +344,7 @@ namespace libtorrent {
|
||||||
|
|
||||||
// this is used when creating a torrent. If there's
|
// this is used when creating a torrent. If there's
|
||||||
// only one file there are cases where it's impossible
|
// only one file there are cases where it's impossible
|
||||||
// to know if it should be written as a multifile torrent
|
// to know if it should be written as a multi-file torrent
|
||||||
// or not. e.g. test/test there's one file and one directory
|
// or not. e.g. test/test there's one file and one directory
|
||||||
// and they have the same name.
|
// and they have the same name.
|
||||||
bool m_multifile:1;
|
bool m_multifile:1;
|
||||||
|
|
|
@ -311,12 +311,12 @@ namespace libtorrent {
|
||||||
// easy for plugins to do timed events, for sending messages or whatever.
|
// easy for plugins to do timed events, for sending messages or whatever.
|
||||||
virtual void tick() {}
|
virtual void tick() {}
|
||||||
|
|
||||||
// These hooks are called when the torrent is paused and unpaused respectively.
|
// These hooks are called when the torrent is paused and resumed respectively.
|
||||||
// The return value indicates if the event was handled. A return value of
|
// The return value indicates if the event was handled. A return value of
|
||||||
// ``true`` indicates that it was handled, and no other plugin after this one
|
// ``true`` indicates that it was handled, and no other plugin after this one
|
||||||
// will have this hook function called, and the standard handler will also not be
|
// will have this hook function called, and the standard handler will also not be
|
||||||
// invoked. So, returning true effectively overrides the standard behavior of
|
// invoked. So, returning true effectively overrides the standard behavior of
|
||||||
// pause or unpause.
|
// pause or resume.
|
||||||
//
|
//
|
||||||
// Note that if you call ``pause()`` or ``resume()`` on the torrent from your
|
// Note that if you call ``pause()`` or ``resume()`` on the torrent from your
|
||||||
// handler it will recurse back into your handler, so in order to invoke the
|
// handler it will recurse back into your handler, so in order to invoke the
|
||||||
|
@ -390,10 +390,10 @@ namespace libtorrent {
|
||||||
// throwing an exception from any of the handlers (except add_handshake)
|
// throwing an exception from any of the handlers (except add_handshake)
|
||||||
// closes the connection
|
// closes the connection
|
||||||
|
|
||||||
// this is called when the initial BT handshake is received. Returning false
|
// this is called when the initial bittorrent handshake is received.
|
||||||
// means that the other end doesn't support this extension and will remove
|
// Returning false means that the other end doesn't support this extension
|
||||||
// it from the list of plugins.
|
// and will remove it from the list of plugins. this is not called for web
|
||||||
// this is not called for web seeds
|
// seeds
|
||||||
virtual bool on_handshake(span<char const> /*reserved_bits*/) { return true; }
|
virtual bool on_handshake(span<char const> /*reserved_bits*/) { return true; }
|
||||||
|
|
||||||
// called when the extension handshake from the other end is received
|
// called when the extension handshake from the other end is received
|
||||||
|
@ -489,7 +489,7 @@ namespace libtorrent {
|
||||||
// are now ready to be sent to the lower layer. This must be at least
|
// are now ready to be sent to the lower layer. This must be at least
|
||||||
// as large as the number of bytes passed in and may be larger if there
|
// as large as the number of bytes passed in and may be larger if there
|
||||||
// is additional data to be inserted at the head of the send buffer.
|
// is additional data to be inserted at the head of the send buffer.
|
||||||
// The additional data is returned as the second tupled value. Any
|
// The additional data is returned as the second tuple value. Any
|
||||||
// returned buffer as well as the iovec itself, to be prepended to the
|
// returned buffer as well as the iovec itself, to be prepended to the
|
||||||
// send buffer, must be owned by the crypto plugin and guaranteed to stay
|
// send buffer, must be owned by the crypto plugin and guaranteed to stay
|
||||||
// alive until the crypto_plugin is destructed or this function is called
|
// alive until the crypto_plugin is destructed or this function is called
|
||||||
|
|
|
@ -115,7 +115,7 @@ namespace libtorrent {
|
||||||
};
|
};
|
||||||
|
|
||||||
// maps storage pointer, file index pairs to the
|
// maps storage pointer, file index pairs to the
|
||||||
// lru entry for the file
|
// LRU entry for the file
|
||||||
std::map<std::pair<storage_index_t, file_index_t>, lru_file_entry> m_files;
|
std::map<std::pair<storage_index_t, file_index_t>, lru_file_entry> m_files;
|
||||||
#if TORRENT_USE_ASSERTS
|
#if TORRENT_USE_ASSERTS
|
||||||
std::vector<std::pair<std::string, void const*>> m_deleted_storages;
|
std::vector<std::pair<std::string, void const*>> m_deleted_storages;
|
||||||
|
|
|
@ -81,7 +81,7 @@ namespace libtorrent {
|
||||||
// the modification time of this file specified in posix time.
|
// the modification time of this file specified in posix time.
|
||||||
std::time_t mtime;
|
std::time_t mtime;
|
||||||
|
|
||||||
// a sha-1 hash of the content of the file, or zeroes, if no
|
// a SHA-1 hash of the content of the file, or zeros, if no
|
||||||
// file hash was present in the torrent file. It can be used to potentially
|
// file hash was present in the torrent file. It can be used to potentially
|
||||||
// find alternative sources for the file.
|
// find alternative sources for the file.
|
||||||
sha1_hash filehash;
|
sha1_hash filehash;
|
||||||
|
@ -217,7 +217,7 @@ namespace libtorrent {
|
||||||
// file attribute flags
|
// file attribute flags
|
||||||
enum flags_t
|
enum flags_t
|
||||||
{
|
{
|
||||||
// the file is a pad file. It's required to contain zeroes
|
// the file is a pad file. It's required to contain zeros
|
||||||
// at it will not be saved to disk. Its purpose is to make
|
// at it will not be saved to disk. Its purpose is to make
|
||||||
// the following file start on a piece boundary.
|
// the following file start on a piece boundary.
|
||||||
pad_file = 1,
|
pad_file = 1,
|
||||||
|
@ -322,7 +322,7 @@ namespace libtorrent {
|
||||||
|
|
||||||
// returns a peer_request representing the piece index, byte offset
|
// returns a peer_request representing the piece index, byte offset
|
||||||
// and size the specified file range overlaps. This is the inverse
|
// and size the specified file range overlaps. This is the inverse
|
||||||
// mapping ove map_block(). Note that the ``peer_request`` return type
|
// mapping over map_block(). Note that the ``peer_request`` return type
|
||||||
// is meant to hold bittorrent block requests, which may not be larger
|
// is meant to hold bittorrent block requests, which may not be larger
|
||||||
// than 16 kiB. Mapping a range larger than that may return an overflown
|
// than 16 kiB. Mapping a range larger than that may return an overflown
|
||||||
// integer.
|
// integer.
|
||||||
|
@ -394,7 +394,7 @@ namespace libtorrent {
|
||||||
{ return piece_index_t(m_num_pieces - 1); }
|
{ return piece_index_t(m_num_pieces - 1); }
|
||||||
|
|
||||||
// set and get the size of each piece in this torrent. This size is typically an even power
|
// set and get the size of each piece in this torrent. This size is typically an even power
|
||||||
// of 2. It doesn't have to be though. It should be divisible by 16kiB however.
|
// of 2. It doesn't have to be though. It should be divisible by 16 kiB however.
|
||||||
void set_piece_length(int l) { m_piece_length = l; }
|
void set_piece_length(int l) { m_piece_length = l; }
|
||||||
int piece_length() const { TORRENT_ASSERT(m_piece_length > 0); return m_piece_length; }
|
int piece_length() const { TORRENT_ASSERT(m_piece_length > 0); return m_piece_length; }
|
||||||
|
|
||||||
|
@ -437,7 +437,7 @@ namespace libtorrent {
|
||||||
// These functions are used to query attributes of files at
|
// These functions are used to query attributes of files at
|
||||||
// a given index.
|
// a given index.
|
||||||
//
|
//
|
||||||
// The ``hash()`` is a sha-1 hash of the file, or 0 if none was
|
// The ``hash()`` is a SHA-1 hash of the file, or 0 if none was
|
||||||
// provided in the torrent file. This can potentially be used to
|
// provided in the torrent file. This can potentially be used to
|
||||||
// join a bittorrent network with other file sharing networks.
|
// join a bittorrent network with other file sharing networks.
|
||||||
//
|
//
|
||||||
|
@ -485,7 +485,7 @@ namespace libtorrent {
|
||||||
{
|
{
|
||||||
// this file is a pad file. The creator of the
|
// this file is a pad file. The creator of the
|
||||||
// torrent promises the file is entirely filled with
|
// torrent promises the file is entirely filled with
|
||||||
// zeroes and does not need to be downloaded. The
|
// zeros and does not need to be downloaded. The
|
||||||
// purpose is just to align the next file to either
|
// purpose is just to align the next file to either
|
||||||
// a block or piece boundary.
|
// a block or piece boundary.
|
||||||
flag_pad_file = 1,
|
flag_pad_file = 1,
|
||||||
|
|
|
@ -204,18 +204,18 @@ namespace libtorrent { namespace dht {
|
||||||
, span<char const> salt
|
, span<char const> salt
|
||||||
, address const& addr) = 0;
|
, address const& addr) = 0;
|
||||||
|
|
||||||
// This function retrieves a sample infohashes
|
// This function retrieves a sample info-hashes
|
||||||
//
|
//
|
||||||
// For implementers:
|
// For implementers:
|
||||||
// The infohashes should be stored in ["samples"] (N × 20 bytes).
|
// The info-hashes should be stored in ["samples"] (N × 20 bytes).
|
||||||
// the following keys should be filled
|
// the following keys should be filled
|
||||||
// item["interval"] - the subset refresh interval in seconds.
|
// item["interval"] - the subset refresh interval in seconds.
|
||||||
// item["num"] - number of infohashes in storage.
|
// item["num"] - number of info-hashes in storage.
|
||||||
//
|
//
|
||||||
// Internally, this function is allowed to lazily evaluate, cache
|
// Internally, this function is allowed to lazily evaluate, cache
|
||||||
// and modify the actual sample to put in ``item``
|
// and modify the actual sample to put in ``item``
|
||||||
//
|
//
|
||||||
// returns the number of infohashes in the sample.
|
// returns the number of info-hashes in the sample.
|
||||||
//
|
//
|
||||||
virtual int get_infohashes_sample(entry& item) = 0;
|
virtual int get_infohashes_sample(entry& item) = 0;
|
||||||
|
|
||||||
|
|
|
@ -1020,7 +1020,7 @@ namespace aux {
|
||||||
// by sending choke, unchoke.
|
// by sending choke, unchoke.
|
||||||
int m_num_invalid_requests = 0;
|
int m_num_invalid_requests = 0;
|
||||||
|
|
||||||
// if [0] is -1, superseeding is not active. If it is >= 0
|
// if [0] is -1, super-seeding is not active. If it is >= 0
|
||||||
// this is the piece that is available to this peer. Only
|
// this is the piece that is available to this peer. Only
|
||||||
// these two pieces can be downloaded from us by this peer.
|
// these two pieces can be downloaded from us by this peer.
|
||||||
// This will remain the current piece for this peer until
|
// This will remain the current piece for this peer until
|
||||||
|
|
|
@ -261,7 +261,7 @@ namespace libtorrent {
|
||||||
// download queue
|
// download queue
|
||||||
int timed_out_requests;
|
int timed_out_requests;
|
||||||
|
|
||||||
// the number of busy requests in the download queue. A budy request is a
|
// the number of busy requests in the download queue. A busy request is a
|
||||||
// request for a block we've also requested from a different peer
|
// request for a block we've also requested from a different peer
|
||||||
int busy_requests;
|
int busy_requests;
|
||||||
|
|
||||||
|
@ -337,7 +337,7 @@ namespace libtorrent {
|
||||||
int receive_quota;
|
int receive_quota;
|
||||||
|
|
||||||
// an estimated round trip time to this peer, in milliseconds. It is
|
// an estimated round trip time to this peer, in milliseconds. It is
|
||||||
// estimated by timing the the tcp ``connect()``. It may be 0 for
|
// estimated by timing the the TCP ``connect()``. It may be 0 for
|
||||||
// incoming connections.
|
// incoming connections.
|
||||||
int rtt;
|
int rtt;
|
||||||
|
|
||||||
|
|
|
@ -136,7 +136,7 @@ namespace aux {
|
||||||
{
|
{
|
||||||
// This constructor can be used to start with the default plugins
|
// This constructor can be used to start with the default plugins
|
||||||
// (ut_metadata, ut_pex and smart_ban). The default values in the
|
// (ut_metadata, ut_pex and smart_ban). The default values in the
|
||||||
// settings is to start the default features like upnp, nat-pmp,
|
// settings is to start the default features like upnp, NAT-PMP,
|
||||||
// and dht for example.
|
// and dht for example.
|
||||||
explicit session_params(settings_pack sp = settings_pack());
|
explicit session_params(settings_pack sp = settings_pack());
|
||||||
// This constructor helps to configure the set of initial plugins
|
// This constructor helps to configure the set of initial plugins
|
||||||
|
@ -217,8 +217,8 @@ namespace aux {
|
||||||
// settings_pack object. Its settings will take effect before the session
|
// settings_pack object. Its settings will take effect before the session
|
||||||
// starts up.
|
// starts up.
|
||||||
//
|
//
|
||||||
// The ``flags`` parameter can be used to start default features (upnp &
|
// The ``flags`` parameter can be used to start default features (UPnP &
|
||||||
// nat-pmp) and default plugins (ut_metadata, ut_pex and smart_ban). The
|
// NAT-PMP) and default plugins (ut_metadata, ut_pex and smart_ban). The
|
||||||
// default is to start those features. If you do not want them to start,
|
// default is to start those features. If you do not want them to start,
|
||||||
// pass 0 as the flags parameter.
|
// pass 0 as the flags parameter.
|
||||||
session(settings_pack pack
|
session(settings_pack pack
|
||||||
|
@ -228,11 +228,11 @@ namespace aux {
|
||||||
start(flags, std::move(pack), nullptr);
|
start(flags, std::move(pack), nullptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
// moveable
|
// movable
|
||||||
session(session&&) = default;
|
session(session&&) = default;
|
||||||
session& operator=(session&&) = default;
|
session& operator=(session&&) = default;
|
||||||
|
|
||||||
// noncopyable
|
// non-copyable
|
||||||
session(session const&) = delete;
|
session(session const&) = delete;
|
||||||
session& operator=(session const&) = delete;
|
session& operator=(session const&) = delete;
|
||||||
|
|
||||||
|
|
|
@ -394,7 +394,7 @@ namespace libtorrent {
|
||||||
|
|
||||||
// store the given bencoded data as an immutable item in the DHT.
|
// store the given bencoded data as an immutable item in the DHT.
|
||||||
// the returned hash is the key that is to be used to look the item
|
// the returned hash is the key that is to be used to look the item
|
||||||
// up again. It's just the sha-1 hash of the bencoded form of the
|
// up again. It's just the SHA-1 hash of the bencoded form of the
|
||||||
// structure.
|
// structure.
|
||||||
sha1_hash dht_put_item(entry data);
|
sha1_hash dht_put_item(entry data);
|
||||||
|
|
||||||
|
@ -411,7 +411,7 @@ namespace libtorrent {
|
||||||
// to be set to the value to be stored by the function.
|
// to be set to the value to be stored by the function.
|
||||||
//
|
//
|
||||||
// std::array<char,64>& signature
|
// std::array<char,64>& signature
|
||||||
// the signature authenticating the current value. This may be zeroes
|
// the signature authenticating the current value. This may be zeros
|
||||||
// if there is currently no value stored. The function is expected to
|
// if there is currently no value stored. The function is expected to
|
||||||
// fill in this buffer with the signature of the new value to store.
|
// fill in this buffer with the signature of the new value to store.
|
||||||
// To generate the signature, you may want to use the
|
// To generate the signature, you may want to use the
|
||||||
|
@ -431,7 +431,7 @@ namespace libtorrent {
|
||||||
// it is critical to not perform any blocking operations. Ideally not
|
// it is critical to not perform any blocking operations. Ideally not
|
||||||
// even locking a mutex. Pass any data required for this function along
|
// even locking a mutex. Pass any data required for this function along
|
||||||
// with the function object's context and make the function entirely
|
// with the function object's context and make the function entirely
|
||||||
// self-contained. The only reason data blobs' values are computed
|
// self-contained. The only reason data blob's value is computed
|
||||||
// via a function instead of just passing in the new value is to avoid
|
// via a function instead of just passing in the new value is to avoid
|
||||||
// race conditions. If you want to *update* the value in the DHT, you
|
// race conditions. If you want to *update* the value in the DHT, you
|
||||||
// must first retrieve it, then modify it, then write it back. The way
|
// must first retrieve it, then modify it, then write it back. The way
|
||||||
|
@ -453,9 +453,9 @@ namespace libtorrent {
|
||||||
void dht_live_nodes(sha1_hash const& nid);
|
void dht_live_nodes(sha1_hash const& nid);
|
||||||
|
|
||||||
// Query the DHT node specified by ``ep`` to retrieve a sample of the
|
// Query the DHT node specified by ``ep`` to retrieve a sample of the
|
||||||
// infohashes that the node currently have in their storage.
|
// info-hashes that the node currently have in their storage.
|
||||||
// The ``target`` is included for iterative lookups so that indexing nodes
|
// The ``target`` is included for iterative lookups so that indexing nodes
|
||||||
// can perform a keyspace traversal with a single RPC per node by adjusting
|
// can perform a key space traversal with a single RPC per node by adjusting
|
||||||
// the target value for each RPC. It has no effect on the returned sample value.
|
// the target value for each RPC. It has no effect on the returned sample value.
|
||||||
// The result is posted as a ``dht_sample_infohashes_alert``.
|
// The result is posted as a ``dht_sample_infohashes_alert``.
|
||||||
void dht_sample_infohashes(udp::endpoint const& ep, sha1_hash const& target);
|
void dht_sample_infohashes(udp::endpoint const& ep, sha1_hash const& target);
|
||||||
|
@ -489,7 +489,7 @@ namespace libtorrent {
|
||||||
// directly. Makes it possible to join a swarm with just a tracker and
|
// directly. Makes it possible to join a swarm with just a tracker and
|
||||||
// info-hash.
|
// info-hash.
|
||||||
//
|
//
|
||||||
// ::
|
// .. code:: c++
|
||||||
//
|
//
|
||||||
// #include <libtorrent/extensions/ut_metadata.hpp>
|
// #include <libtorrent/extensions/ut_metadata.hpp>
|
||||||
// ses.add_extension(&libtorrent::create_ut_metadata_plugin);
|
// ses.add_extension(&libtorrent::create_ut_metadata_plugin);
|
||||||
|
@ -497,7 +497,7 @@ namespace libtorrent {
|
||||||
// uTorrent peer exchange
|
// uTorrent peer exchange
|
||||||
// Exchanges peers between clients.
|
// Exchanges peers between clients.
|
||||||
//
|
//
|
||||||
// ::
|
// .. code:: c++
|
||||||
//
|
//
|
||||||
// #include <libtorrent/extensions/ut_pex.hpp>
|
// #include <libtorrent/extensions/ut_pex.hpp>
|
||||||
// ses.add_extension(&libtorrent::create_ut_pex_plugin);
|
// ses.add_extension(&libtorrent::create_ut_pex_plugin);
|
||||||
|
@ -507,7 +507,7 @@ namespace libtorrent {
|
||||||
// that sends bad data with very high accuracy. Should
|
// that sends bad data with very high accuracy. Should
|
||||||
// eliminate most problems on poisoned torrents.
|
// eliminate most problems on poisoned torrents.
|
||||||
//
|
//
|
||||||
// ::
|
// .. code:: c++
|
||||||
//
|
//
|
||||||
// #include <libtorrent/extensions/smart_ban.hpp>
|
// #include <libtorrent/extensions/smart_ban.hpp>
|
||||||
// ses.add_extension(&libtorrent::create_smart_ban_plugin);
|
// ses.add_extension(&libtorrent::create_smart_ban_plugin);
|
||||||
|
@ -621,7 +621,9 @@ namespace libtorrent {
|
||||||
// For more info, see ip_filter.
|
// For more info, see ip_filter.
|
||||||
//
|
//
|
||||||
// For example, to make all peers in the range 200.1.1.0 - 200.1.255.255
|
// For example, to make all peers in the range 200.1.1.0 - 200.1.255.255
|
||||||
// belong to their own peer class, apply the following filter::
|
// belong to their own peer class, apply the following filter:
|
||||||
|
//
|
||||||
|
// .. code:: c++
|
||||||
//
|
//
|
||||||
// ip_filter f;
|
// ip_filter f;
|
||||||
// peer_class_t my_class = ses.create_peer_class("200.1.x.x IP range");
|
// peer_class_t my_class = ses.create_peer_class("200.1.x.x IP range");
|
||||||
|
@ -661,7 +663,7 @@ namespace libtorrent {
|
||||||
void set_peer_class_type_filter(peer_class_type_filter const& f);
|
void set_peer_class_type_filter(peer_class_type_filter const& f);
|
||||||
|
|
||||||
// Creates a new peer class (see peer-classes_) with the given name. The
|
// Creates a new peer class (see peer-classes_) with the given name. The
|
||||||
// returned integer is the new peer class' identifier. Peer classes may
|
// returned integer is the new peer class identifier. Peer classes may
|
||||||
// have the same name, so each invocation of this function creates a new
|
// have the same name, so each invocation of this function creates a new
|
||||||
// class and returns a unique identifier.
|
// class and returns a unique identifier.
|
||||||
//
|
//
|
||||||
|
@ -777,7 +779,7 @@ namespace libtorrent {
|
||||||
// the torrent is deleted, a torrent_deleted_alert is posted.
|
// the torrent is deleted, a torrent_deleted_alert is posted.
|
||||||
//
|
//
|
||||||
// Note that when a queued or downloading torrent is removed, its position
|
// Note that when a queued or downloading torrent is removed, its position
|
||||||
// in the download queue is vacated and avery subsequent torrent in the
|
// in the download queue is vacated and every subsequent torrent in the
|
||||||
// queue has their queue positions updated. This can potentially cause a
|
// queue has their queue positions updated. This can potentially cause a
|
||||||
// large state_update to be posted. When removing all torrents, it is
|
// large state_update to be posted. When removing all torrents, it is
|
||||||
// advised to remove them from the back of the queue, to minimize the
|
// advised to remove them from the back of the queue, to minimize the
|
||||||
|
@ -973,7 +975,7 @@ namespace libtorrent {
|
||||||
std::uint32_t get_alert_mask() const;
|
std::uint32_t get_alert_mask() const;
|
||||||
|
|
||||||
// Starts and stops Local Service Discovery. This service will broadcast
|
// Starts and stops Local Service Discovery. This service will broadcast
|
||||||
// the infohashes of all the non-private torrents on the local network to
|
// the info-hashes of all the non-private torrents on the local network to
|
||||||
// look for peers on the same swarm within multicast reach.
|
// look for peers on the same swarm within multicast reach.
|
||||||
//
|
//
|
||||||
// deprecated. use settings_pack::enable_lsd instead
|
// deprecated. use settings_pack::enable_lsd instead
|
||||||
|
|
|
@ -189,13 +189,13 @@ namespace libtorrent {
|
||||||
// incoming requests will be dropped until the quota has been replenished.
|
// incoming requests will be dropped until the quota has been replenished.
|
||||||
int upload_rate_limit;
|
int upload_rate_limit;
|
||||||
|
|
||||||
// the infohashes sample recomputation interval (in seconds).
|
// the info-hashes sample recomputation interval (in seconds).
|
||||||
// The node will precompute a subset of the tracked infohashes and return
|
// The node will precompute a subset of the tracked info-hashes and return
|
||||||
// that instead of calculating it upon each request. The permissible range
|
// that instead of calculating it upon each request. The permissible range
|
||||||
// is between 0 and 21600 seconds (inclusive).
|
// is between 0 and 21600 seconds (inclusive).
|
||||||
int sample_infohashes_interval = 21600;
|
int sample_infohashes_interval = 21600;
|
||||||
|
|
||||||
// the maximum number of elements in the sampled subset of infohashes.
|
// the maximum number of elements in the sampled subset of info-hashes.
|
||||||
// If this number is too big, expect the DHT storage implementations
|
// If this number is too big, expect the DHT storage implementations
|
||||||
// to clamp it in order to allow UDP packets go through
|
// to clamp it in order to allow UDP packets go through
|
||||||
int max_infohashes_sample_count = 20;
|
int max_infohashes_sample_count = 20;
|
||||||
|
|
|
@ -670,7 +670,7 @@ namespace libtorrent {
|
||||||
enable_natpmp,
|
enable_natpmp,
|
||||||
|
|
||||||
// Starts and stops Local Service Discovery. This service will
|
// Starts and stops Local Service Discovery. This service will
|
||||||
// broadcast the infohashes of all the non-private torrents on the
|
// broadcast the info-hashes of all the non-private torrents on the
|
||||||
// local network to look for peers on the same swarm within multicast
|
// local network to look for peers on the same swarm within multicast
|
||||||
// reach.
|
// reach.
|
||||||
enable_lsd,
|
enable_lsd,
|
||||||
|
|
|
@ -129,7 +129,7 @@ namespace aux {
|
||||||
char const* data() const { return reinterpret_cast<char const*>(&m_number[0]); }
|
char const* data() const { return reinterpret_cast<char const*>(&m_number[0]); }
|
||||||
char* data() { return reinterpret_cast<char*>(&m_number[0]); }
|
char* data() { return reinterpret_cast<char*>(&m_number[0]); }
|
||||||
|
|
||||||
// set the digest to all zeroes.
|
// set the digest to all zeros.
|
||||||
void clear() noexcept { std::memset(m_number, 0, size()); }
|
void clear() noexcept { std::memset(m_number, 0, size()); }
|
||||||
|
|
||||||
// return true if the digest is all zero.
|
// return true if the digest is all zero.
|
||||||
|
|
|
@ -110,7 +110,7 @@ POSSIBILITY OF SUCH DAMAGE.
|
||||||
// // if there are padding files, those blocks will be considered
|
// // if there are padding files, those blocks will be considered
|
||||||
// // completed even though they haven't been written to the storage.
|
// // completed even though they haven't been written to the storage.
|
||||||
// // in this case, just extend the piece buffer to its full size
|
// // in this case, just extend the piece buffer to its full size
|
||||||
// // and fill it with zeroes.
|
// // and fill it with zeros.
|
||||||
// if (data.size() < piece_size) data.resize(piece_size, 0);
|
// if (data.size() < piece_size) data.resize(piece_size, 0);
|
||||||
// ph.h.update(&data[ph.offset], left);
|
// ph.h.update(&data[ph.offset], left);
|
||||||
// }
|
// }
|
||||||
|
@ -143,7 +143,7 @@ namespace libtorrent {
|
||||||
// the torrent in the way one would assume a torrent is saved to disk.
|
// the torrent in the way one would assume a torrent is saved to disk.
|
||||||
// Implementing your own storage interface makes it possible to store all
|
// Implementing your own storage interface makes it possible to store all
|
||||||
// data in RAM, or in some optimized order on disk (the order the pieces are
|
// data in RAM, or in some optimized order on disk (the order the pieces are
|
||||||
// received for instance), or saving multifile torrents in a single file in
|
// received for instance), or saving multi file torrents in a single file in
|
||||||
// order to be able to take advantage of optimized disk-I/O.
|
// order to be able to take advantage of optimized disk-I/O.
|
||||||
//
|
//
|
||||||
// It is also possible to write a thin class that uses the default storage
|
// It is also possible to write a thin class that uses the default storage
|
||||||
|
@ -266,7 +266,7 @@ namespace libtorrent {
|
||||||
//
|
//
|
||||||
virtual void release_files(storage_error& ec) = 0;
|
virtual void release_files(storage_error& ec) = 0;
|
||||||
|
|
||||||
// Rename file with index ``index`` to the name ``new_filename``.
|
// Rename the file with index ``file`` to name ``new_name``.
|
||||||
//
|
//
|
||||||
// If an error occurs, ``storage_error`` should be set to reflect it.
|
// If an error occurs, ``storage_error`` should be set to reflect it.
|
||||||
//
|
//
|
||||||
|
@ -281,21 +281,22 @@ namespace libtorrent {
|
||||||
// If an error occurs, ``storage_error`` should be set to reflect it.
|
// If an error occurs, ``storage_error`` should be set to reflect it.
|
||||||
//
|
//
|
||||||
// The ``disk_buffer_pool`` is used to allocate and free disk buffers. It
|
// The ``disk_buffer_pool`` is used to allocate and free disk buffers. It
|
||||||
// has the following members::
|
// has the following members:
|
||||||
//
|
//
|
||||||
// struct disk_buffer_pool : boost::noncopyable
|
// .. code:: c++
|
||||||
// {
|
|
||||||
// char* allocate_buffer(char const* category);
|
|
||||||
// void free_buffer(char* buf);
|
|
||||||
//
|
//
|
||||||
// char* allocate_buffers(int blocks, char const* category);
|
// struct disk_buffer_pool : boost::noncopyable
|
||||||
// void free_buffers(char* buf, int blocks);
|
// {
|
||||||
|
// char* allocate_buffer(char const* category);
|
||||||
|
// void free_buffer(char* buf);
|
||||||
//
|
//
|
||||||
// int block_size() const { return m_block_size; }
|
// char* allocate_buffers(int blocks, char const* category);
|
||||||
|
// void free_buffers(char* buf, int blocks);
|
||||||
//
|
//
|
||||||
// void release_memory();
|
// int block_size() const { return m_block_size; }
|
||||||
// };
|
|
||||||
//
|
//
|
||||||
|
// void release_memory();
|
||||||
|
// };
|
||||||
virtual void delete_files(int options, storage_error& ec) = 0;
|
virtual void delete_files(int options, storage_error& ec) = 0;
|
||||||
|
|
||||||
// called periodically (useful for deferred flushing). When returning
|
// called periodically (useful for deferred flushing). When returning
|
||||||
|
|
|
@ -380,7 +380,7 @@ namespace libtorrent { namespace aux {
|
||||||
//
|
//
|
||||||
// If the piece is already downloaded when this call is made, nothing
|
// If the piece is already downloaded when this call is made, nothing
|
||||||
// happens, unless the alert_when_available flag is set, in which case it
|
// happens, unless the alert_when_available flag is set, in which case it
|
||||||
// will do the same thing as calling read_piece() for ``index``.
|
// will have the same effect as calling read_piece() for ``index``.
|
||||||
//
|
//
|
||||||
// ``deadline`` is the number of milliseconds until this piece should be
|
// ``deadline`` is the number of milliseconds until this piece should be
|
||||||
// completed.
|
// completed.
|
||||||
|
@ -413,7 +413,7 @@ namespace libtorrent { namespace aux {
|
||||||
// priority, but the priority is used as a weight.
|
// priority, but the priority is used as a weight.
|
||||||
//
|
//
|
||||||
// Peers whose Torrent has a higher priority will take precedence when
|
// Peers whose Torrent has a higher priority will take precedence when
|
||||||
// distributing unchoke slots. This is a strict prioritization where
|
// distributing unchoke slots. This is a strict prioritisation where
|
||||||
// every interested peer on a high priority torrent will be unchoked
|
// every interested peer on a high priority torrent will be unchoked
|
||||||
// before any other, lower priority, torrents have any peers unchoked.
|
// before any other, lower priority, torrents have any peers unchoked.
|
||||||
// deprecated in 1.2
|
// deprecated in 1.2
|
||||||
|
@ -503,7 +503,7 @@ namespace libtorrent { namespace aux {
|
||||||
// pieces from it, unless it's paused, queued, checking or seeding.
|
// pieces from it, unless it's paused, queued, checking or seeding.
|
||||||
// ``remove_url_seed()`` removes the given url if it exists already.
|
// ``remove_url_seed()`` removes the given url if it exists already.
|
||||||
// ``url_seeds()`` return a set of the url seeds currently in this
|
// ``url_seeds()`` return a set of the url seeds currently in this
|
||||||
// torrent. Note that urls that fails may be removed automatically from
|
// torrent. Note that URLs that fails may be removed automatically from
|
||||||
// the list.
|
// the list.
|
||||||
//
|
//
|
||||||
// See http-seeding_ for more information.
|
// See http-seeding_ for more information.
|
||||||
|
@ -577,7 +577,7 @@ namespace libtorrent { namespace aux {
|
||||||
// .. note::
|
// .. note::
|
||||||
// Torrents that are auto-managed may be automatically resumed again. It
|
// Torrents that are auto-managed may be automatically resumed again. It
|
||||||
// does not make sense to pause an auto-managed torrent without making it
|
// does not make sense to pause an auto-managed torrent without making it
|
||||||
// not automanaged first. Torrents are auto-managed by default when added
|
// not auto-managed first. Torrents are auto-managed by default when added
|
||||||
// to the session. For more information, see queuing_.
|
// to the session. For more information, see queuing_.
|
||||||
//
|
//
|
||||||
void pause(int flags = 0) const;
|
void pause(int flags = 0) const;
|
||||||
|
@ -881,7 +881,7 @@ namespace libtorrent { namespace aux {
|
||||||
//
|
//
|
||||||
// Note that when a torrent first starts up, and it needs a certificate,
|
// Note that when a torrent first starts up, and it needs a certificate,
|
||||||
// it will suspend connecting to any peers until it has one. It's
|
// it will suspend connecting to any peers until it has one. It's
|
||||||
// typically desirable to resume the torrent after setting the ssl
|
// typically desirable to resume the torrent after setting the SSL
|
||||||
// certificate.
|
// certificate.
|
||||||
//
|
//
|
||||||
// If you receive a torrent_need_cert_alert, you need to call this to
|
// If you receive a torrent_need_cert_alert, you need to call this to
|
||||||
|
@ -1118,7 +1118,7 @@ namespace libtorrent { namespace aux {
|
||||||
// Magnet links, and other torrents that start out without having
|
// Magnet links, and other torrents that start out without having
|
||||||
// metadata are pinned automatically. This is to give the client a chance
|
// metadata are pinned automatically. This is to give the client a chance
|
||||||
// to get the metadata and save it before it's unloaded. In this case, it
|
// to get the metadata and save it before it's unloaded. In this case, it
|
||||||
// may be useful to un-pin the torrent once its metadata has been saved
|
// may be useful to unpin the torrent once its metadata has been saved
|
||||||
// to disk.
|
// to disk.
|
||||||
//
|
//
|
||||||
// For more information about dynamically loading and unloading torrents,
|
// For more information about dynamically loading and unloading torrents,
|
||||||
|
@ -1143,7 +1143,7 @@ namespace libtorrent { namespace aux {
|
||||||
// can be done by using this other than an unnecessary connection attempt
|
// can be done by using this other than an unnecessary connection attempt
|
||||||
// is made. If the torrent is uninitialized or in queued or checking
|
// is made. If the torrent is uninitialized or in queued or checking
|
||||||
// mode, this will throw system_error. The second (optional)
|
// mode, this will throw system_error. The second (optional)
|
||||||
// argument will be bitwised ORed into the source mask of this peer.
|
// argument will be bitwise ORed into the source mask of this peer.
|
||||||
// Typically this is one of the source flags in peer_info. i.e.
|
// Typically this is one of the source flags in peer_info. i.e.
|
||||||
// ``tracker``, ``pex``, ``dht`` etc.
|
// ``tracker``, ``pex``, ``dht`` etc.
|
||||||
//
|
//
|
||||||
|
@ -1157,7 +1157,7 @@ namespace libtorrent { namespace aux {
|
||||||
// 0x04 supports uTP. If this is not set, the peer will only be contacted
|
// 0x04 supports uTP. If this is not set, the peer will only be contacted
|
||||||
// over TCP.
|
// over TCP.
|
||||||
//
|
//
|
||||||
// 0x08 supports holepunching protocol. If this
|
// 0x08 supports hole punching protocol. If this
|
||||||
// flag is received from a peer, it can be
|
// flag is received from a peer, it can be
|
||||||
// used as a rendezvous point in case direct
|
// used as a rendezvous point in case direct
|
||||||
// connections to the peer fail
|
// connections to the peer fail
|
||||||
|
|
|
@ -202,7 +202,7 @@ namespace libtorrent {
|
||||||
// filename is reflected by the ``file_storage`` returned by ``files()``
|
// filename is reflected by the ``file_storage`` returned by ``files()``
|
||||||
// but not by the one returned by ``orig_files()``.
|
// but not by the one returned by ``orig_files()``.
|
||||||
//
|
//
|
||||||
// If you want to rename the base name of the torrent (for a multifile
|
// If you want to rename the base name of the torrent (for a multi file
|
||||||
// torrent), you can copy the ``file_storage`` (see files() and
|
// torrent), you can copy the ``file_storage`` (see files() and
|
||||||
// orig_files() ), change the name, and then use `remap_files()`_.
|
// orig_files() ), change the name, and then use `remap_files()`_.
|
||||||
//
|
//
|
||||||
|
@ -249,13 +249,13 @@ namespace libtorrent {
|
||||||
void add_tracker(std::string const& url, int tier = 0);
|
void add_tracker(std::string const& url, int tier = 0);
|
||||||
std::vector<announce_entry> const& trackers() const { return m_urls; }
|
std::vector<announce_entry> const& trackers() const { return m_urls; }
|
||||||
|
|
||||||
// These two functions are related to BEP38_ (mutable torrents). The
|
// These two functions are related to `BEP 38`_ (mutable torrents). The
|
||||||
// vectors returned from these correspond to the "similar" and
|
// vectors returned from these correspond to the "similar" and
|
||||||
// "collections" keys in the .torrent file. Both info-hashes and
|
// "collections" keys in the .torrent file. Both info-hashes and
|
||||||
// collections from within the info-dict and from outside of it are
|
// collections from within the info-dict and from outside of it are
|
||||||
// included.
|
// included.
|
||||||
//
|
//
|
||||||
// .. _BEP38: http://www.bittorrent.org/beps/bep_0038.html
|
// .. _`BEP 38`: http://www.bittorrent.org/beps/bep_0038.html
|
||||||
std::vector<sha1_hash> similar_torrents() const;
|
std::vector<sha1_hash> similar_torrents() const;
|
||||||
std::vector<std::string> collections() const;
|
std::vector<std::string> collections() const;
|
||||||
|
|
||||||
|
@ -358,8 +358,9 @@ namespace libtorrent {
|
||||||
file_entry file_at(int index) const { return m_files.at_deprecated(index); }
|
file_entry file_at(int index) const { return m_files.at_deprecated(index); }
|
||||||
#endif // TORRENT_NO_DEPRECATE
|
#endif // TORRENT_NO_DEPRECATE
|
||||||
|
|
||||||
// If you need index-access to files you can use the ``num_files()`` and
|
// If you need index-access to files you can use the ``num_files()`` along
|
||||||
// ``file_path()`` et.al. to access files using indices.
|
// with the ``file_path()``, ``file_size()``-family of functions to access
|
||||||
|
// files using indices.
|
||||||
int num_files() const { return m_files.num_files(); }
|
int num_files() const { return m_files.num_files(); }
|
||||||
|
|
||||||
// This function will map a piece index, a byte offset within that piece
|
// This function will map a piece index, a byte offset within that piece
|
||||||
|
@ -523,7 +524,7 @@ namespace libtorrent {
|
||||||
std::map<int, sha1_hash> build_merkle_list(piece_index_t piece) const;
|
std::map<int, sha1_hash> build_merkle_list(piece_index_t piece) const;
|
||||||
|
|
||||||
// returns whether or not this is a merkle torrent.
|
// returns whether or not this is a merkle torrent.
|
||||||
// see BEP30__.
|
// see `BEP 30`__.
|
||||||
//
|
//
|
||||||
// __ http://bittorrent.org/beps/bep_0030.html
|
// __ http://bittorrent.org/beps/bep_0030.html
|
||||||
bool is_merkle_torrent() const { return !m_merkle_tree.empty(); }
|
bool is_merkle_torrent() const { return !m_merkle_tree.empty(); }
|
||||||
|
@ -557,7 +558,7 @@ namespace libtorrent {
|
||||||
// instance
|
// instance
|
||||||
copy_ptr<const file_storage> m_orig_files;
|
copy_ptr<const file_storage> m_orig_files;
|
||||||
|
|
||||||
// the urls to the trackers
|
// the URLs to the trackers
|
||||||
aux::vector<announce_entry> m_urls;
|
aux::vector<announce_entry> m_urls;
|
||||||
std::vector<web_seed_entry> m_web_seeds;
|
std::vector<web_seed_entry> m_web_seeds;
|
||||||
// dht nodes to add to the routing table/bootstrap from
|
// dht nodes to add to the routing table/bootstrap from
|
||||||
|
@ -596,7 +597,7 @@ namespace libtorrent {
|
||||||
boost::shared_array<char> m_info_section;
|
boost::shared_array<char> m_info_section;
|
||||||
|
|
||||||
// this is a pointer into the m_info_section buffer
|
// this is a pointer into the m_info_section buffer
|
||||||
// pointing to the first byte of the first sha-1 hash
|
// pointing to the first byte of the first SHA-1 hash
|
||||||
char const* m_piece_hashes = nullptr;
|
char const* m_piece_hashes = nullptr;
|
||||||
|
|
||||||
// if a comment is found in the torrent file
|
// if a comment is found in the torrent file
|
||||||
|
@ -630,7 +631,7 @@ namespace libtorrent {
|
||||||
{
|
{
|
||||||
// this is used when creating a torrent. If there's
|
// this is used when creating a torrent. If there's
|
||||||
// only one file there are cases where it's impossible
|
// only one file there are cases where it's impossible
|
||||||
// to know if it should be written as a multifile torrent
|
// to know if it should be written as a multi file torrent
|
||||||
// or not. e.g. test/test there's one file and one directory
|
// or not. e.g. test/test there's one file and one directory
|
||||||
// and they have the same name.
|
// and they have the same name.
|
||||||
multifile = 1,
|
multifile = 1,
|
||||||
|
|
|
@ -2041,7 +2041,7 @@ namespace {
|
||||||
// and don't send a bitfield
|
// and don't send a bitfield
|
||||||
m_sent_bitfield = true;
|
m_sent_bitfield = true;
|
||||||
|
|
||||||
// bootstrap superseeding by sending two have message
|
// bootstrap super-seeding by sending two have message
|
||||||
piece_index_t piece = t->get_piece_to_super_seed(get_bitfield());
|
piece_index_t piece = t->get_piece_to_super_seed(get_bitfield());
|
||||||
if (piece >= piece_index_t(0)) superseed_piece(piece_index_t(-1), piece);
|
if (piece >= piece_index_t(0)) superseed_piece(piece_index_t(-1), piece);
|
||||||
piece = t->get_piece_to_super_seed(get_bitfield());
|
piece = t->get_piece_to_super_seed(get_bitfield());
|
||||||
|
|
|
@ -77,7 +77,7 @@ struct ip_change_notifier_impl final : ip_change_notifier
|
||||||
, netlink::endpoint(netlink(NETLINK_ROUTE), RTMGRP_IPV4_IFADDR | RTMGRP_IPV6_IFADDR))
|
, netlink::endpoint(netlink(NETLINK_ROUTE), RTMGRP_IPV4_IFADDR | RTMGRP_IPV6_IFADDR))
|
||||||
{}
|
{}
|
||||||
|
|
||||||
// noncopyable
|
// non-copyable
|
||||||
ip_change_notifier_impl(ip_change_notifier_impl const&) = delete;
|
ip_change_notifier_impl(ip_change_notifier_impl const&) = delete;
|
||||||
ip_change_notifier_impl& operator=(ip_change_notifier_impl const&) = delete;
|
ip_change_notifier_impl& operator=(ip_change_notifier_impl const&) = delete;
|
||||||
|
|
||||||
|
@ -199,7 +199,7 @@ struct ip_change_notifier_impl final : ip_change_notifier
|
||||||
cancel();
|
cancel();
|
||||||
}
|
}
|
||||||
|
|
||||||
// noncopyable
|
// non-copyable
|
||||||
ip_change_notifier_impl(ip_change_notifier_impl const&) = delete;
|
ip_change_notifier_impl(ip_change_notifier_impl const&) = delete;
|
||||||
ip_change_notifier_impl& operator=(ip_change_notifier_impl const&) = delete;
|
ip_change_notifier_impl& operator=(ip_change_notifier_impl const&) = delete;
|
||||||
|
|
||||||
|
@ -291,7 +291,7 @@ struct ip_change_notifier_impl final : ip_change_notifier
|
||||||
cancel();
|
cancel();
|
||||||
}
|
}
|
||||||
|
|
||||||
// noncopyable
|
// non-copyable
|
||||||
ip_change_notifier_impl(ip_change_notifier_impl const&) = delete;
|
ip_change_notifier_impl(ip_change_notifier_impl const&) = delete;
|
||||||
ip_change_notifier_impl& operator=(ip_change_notifier_impl const&) = delete;
|
ip_change_notifier_impl& operator=(ip_change_notifier_impl const&) = delete;
|
||||||
|
|
||||||
|
@ -335,7 +335,7 @@ struct ip_change_notifier_impl final : ip_change_notifier
|
||||||
m_ovl.hEvent = m_hnd.native_handle();
|
m_ovl.hEvent = m_hnd.native_handle();
|
||||||
}
|
}
|
||||||
|
|
||||||
// noncopyable
|
// non-copyable
|
||||||
ip_change_notifier_impl(ip_change_notifier_impl const&) = delete;
|
ip_change_notifier_impl(ip_change_notifier_impl const&) = delete;
|
||||||
ip_change_notifier_impl& operator=(ip_change_notifier_impl const&) = delete;
|
ip_change_notifier_impl& operator=(ip_change_notifier_impl const&) = delete;
|
||||||
|
|
||||||
|
|
|
@ -1840,9 +1840,9 @@ namespace libtorrent {
|
||||||
|
|
||||||
if (t->super_seeding() && !m_settings.get_bool(settings_pack::strict_super_seeding))
|
if (t->super_seeding() && !m_settings.get_bool(settings_pack::strict_super_seeding))
|
||||||
{
|
{
|
||||||
// if we're superseeding and the peer just told
|
// if we're super-seeding and the peer just told
|
||||||
// us that it completed the piece we're superseeding
|
// us that it completed the piece we're super-seeding
|
||||||
// to it, change the superseeding piece for this peer
|
// to it, change the super-seeding piece for this peer
|
||||||
// if the peer optimizes out redundant have messages
|
// if the peer optimizes out redundant have messages
|
||||||
// this will be handled when the peer sends not-interested
|
// this will be handled when the peer sends not-interested
|
||||||
// instead.
|
// instead.
|
||||||
|
|
|
@ -4386,7 +4386,7 @@ namespace libtorrent {
|
||||||
{
|
{
|
||||||
if (pc->super_seeded_piece(i))
|
if (pc->super_seeded_piece(i))
|
||||||
{
|
{
|
||||||
// avoid superseeding the same piece to more than one
|
// avoid super-seeding the same piece to more than one
|
||||||
// peer if we can avoid it. Do this by artificially
|
// peer if we can avoid it. Do this by artificially
|
||||||
// increase the availability
|
// increase the availability
|
||||||
availability = 999;
|
availability = 999;
|
||||||
|
@ -4554,7 +4554,13 @@ namespace libtorrent {
|
||||||
{
|
{
|
||||||
INVARIANT_CHECK;
|
INVARIANT_CHECK;
|
||||||
|
|
||||||
if (m_abort)
|
TORRENT_ASSERT_PRECOND(piece >= piece_index_t(0));
|
||||||
|
TORRENT_ASSERT_PRECOND(valid_metadata());
|
||||||
|
TORRENT_ASSERT_PRECOND(valid_metadata() && piece < m_torrent_file->end_piece());
|
||||||
|
|
||||||
|
if (m_abort || !valid_metadata()
|
||||||
|
|| piece < piece_index_t(0)
|
||||||
|
|| piece >= m_torrent_file->end_piece())
|
||||||
{
|
{
|
||||||
// failed
|
// failed
|
||||||
if (flags & torrent_handle::alert_when_available)
|
if (flags & torrent_handle::alert_when_available)
|
||||||
|
|
|
@ -1015,7 +1015,7 @@ namespace libtorrent {
|
||||||
file_storage files;
|
file_storage files;
|
||||||
files.set_piece_length(piece_length);
|
files.set_piece_length(piece_length);
|
||||||
|
|
||||||
// extract file name (or the directory name if it's a multifile libtorrent)
|
// extract file name (or the directory name if it's a multi file libtorrent)
|
||||||
bdecode_node name_ent = info.dict_find_string("name.utf-8");
|
bdecode_node name_ent = info.dict_find_string("name.utf-8");
|
||||||
if (!name_ent) name_ent = info.dict_find_string("name");
|
if (!name_ent) name_ent = info.dict_find_string("name");
|
||||||
if (!name_ent)
|
if (!name_ent)
|
||||||
|
@ -1059,7 +1059,7 @@ namespace libtorrent {
|
||||||
}
|
}
|
||||||
TORRENT_ASSERT(!files.name().empty());
|
TORRENT_ASSERT(!files.name().empty());
|
||||||
|
|
||||||
// extract sha-1 hashes for all pieces
|
// extract SHA-1 hashes for all pieces
|
||||||
// we want this division to round upwards, that's why we have the
|
// we want this division to round upwards, that's why we have the
|
||||||
// extra addition
|
// extra addition
|
||||||
|
|
||||||
|
|
|
@ -165,7 +165,7 @@ namespace libtorrent {namespace {
|
||||||
// 0x04 - supports uTP. This is only a positive flags
|
// 0x04 - supports uTP. This is only a positive flags
|
||||||
// passing 0 doesn't mean the peer doesn't
|
// passing 0 doesn't mean the peer doesn't
|
||||||
// support uTP
|
// support uTP
|
||||||
// 0x08 - supports holepunching protocol. If this
|
// 0x08 - supports hole punching protocol. If this
|
||||||
// flag is received from a peer, it can be
|
// flag is received from a peer, it can be
|
||||||
// used as a rendezvous point in case direct
|
// used as a rendezvous point in case direct
|
||||||
// connections to the peer fail
|
// connections to the peer fail
|
||||||
|
@ -552,7 +552,7 @@ namespace libtorrent {namespace {
|
||||||
// 0x04 - supports uTP. This is only a positive flags
|
// 0x04 - supports uTP. This is only a positive flags
|
||||||
// passing 0 doesn't mean the peer doesn't
|
// passing 0 doesn't mean the peer doesn't
|
||||||
// support uTP
|
// support uTP
|
||||||
// 0x08 - supports holepunching protocol. If this
|
// 0x08 - supports hole punching protocol. If this
|
||||||
// flag is received from a peer, it can be
|
// flag is received from a peer, it can be
|
||||||
// used as a rendezvous point in case direct
|
// used as a rendezvous point in case direct
|
||||||
// connections to the peer fail
|
// connections to the peer fail
|
||||||
|
|
Loading…
Reference in New Issue