{"diffoscope-json-version": 1, "source1": "/srv/reproducible-results/rbuild-debian/r-b-build.LthN7ah7/b1/libtorrent-rasterbar_2.0.8-1_amd64.changes", "source2": "/srv/reproducible-results/rbuild-debian/r-b-build.LthN7ah7/b2/libtorrent-rasterbar_2.0.8-1_amd64.changes", "unified_diff": null, "details": [{"source1": "Files", "source2": "Files", "unified_diff": "@@ -1,7 +1,7 @@\n \n 079593814c6dd79603ab878082eb3064 360872 libdevel optional libtorrent-rasterbar-dev_2.0.8-1_amd64.deb\n- 64beeea1429da945146c294d1a26b2eb 1605760 doc optional libtorrent-rasterbar-doc_2.0.8-1_all.deb\n+ 2251f7a29dd3fb846b7a02efccc69a48 1605800 doc optional libtorrent-rasterbar-doc_2.0.8-1_all.deb\n 08dc5b726e361f27d835522e533d42a5 51839884 debug optional libtorrent-rasterbar2.0-dbgsym_2.0.8-1_amd64.deb\n 3e0d2464a8f4568e69d2977b586fd088 1551840 libs optional libtorrent-rasterbar2.0_2.0.8-1_amd64.deb\n d43c877edb4a898341bdf1cb94c5bbd6 13019504 debug optional python3-libtorrent-dbgsym_2.0.8-1_amd64.deb\n dd725d8da8d36614bfebc766e83fccf8 673812 python optional python3-libtorrent_2.0.8-1_amd64.deb\n"}, {"source1": "libtorrent-rasterbar-doc_2.0.8-1_all.deb", "source2": "libtorrent-rasterbar-doc_2.0.8-1_all.deb", "unified_diff": null, "details": [{"source1": "file list", "source2": "file list", "unified_diff": "@@ -1,3 +1,3 @@\n -rw-r--r-- 0 0 0 4 2022-10-23 15:10:21.000000 debian-binary\n -rw-r--r-- 0 0 0 3632 2022-10-23 15:10:21.000000 control.tar.xz\n--rw-r--r-- 0 0 0 1601936 2022-10-23 15:10:21.000000 data.tar.xz\n+-rw-r--r-- 0 0 0 1601976 2022-10-23 15:10:21.000000 data.tar.xz\n"}, {"source1": "control.tar.xz", "source2": "control.tar.xz", "unified_diff": null, "details": [{"source1": "control.tar", "source2": "control.tar", "unified_diff": null, "details": [{"source1": "./md5sums", "source2": "./md5sums", "unified_diff": null, "details": [{"source1": "./md5sums", "source2": "./md5sums", "comments": ["Files differ"], "unified_diff": null}]}]}]}, {"source1": "data.tar.xz", "source2": "data.tar.xz", "unified_diff": null, "details": [{"source1": "data.tar", "source2": "data.tar", "unified_diff": null, "details": [{"source1": "./usr/share/doc/libtorrent-rasterbar-doc/html/single-page-ref.html", "source2": "./usr/share/doc/libtorrent-rasterbar-doc/html/single-page-ref.html", "unified_diff": "@@ -55,94 +55,94 @@\n
  • enum error_code_enum
  • \n
  • session_params\n
  • \n
  • session_proxy\n
  • \n
  • session\n
  • \n
  • session_handle\n
  • \n-
  • write_session_params() read_session_params() write_session_params_buf()
  • \n+
  • read_session_params() write_session_params_buf() write_session_params()
  • \n
  • web_seed_entry\n
  • \n
  • load_torrent_limits
  • \n
  • torrent_info\n
  • \n
  • peer_info
  • \n
  • info_hash_t\n
  • \n
  • piece_block
  • \n
  • peer_request\n
  • \n-
  • load_torrent_parsed() load_torrent_file() load_torrent_buffer()
  • \n+
  • load_torrent_file() load_torrent_parsed() load_torrent_buffer()
  • \n
  • make_magnet_uri()
  • \n
  • parse_magnet_uri()
  • \n
  • truncate_files()
  • \n
  • version()
  • \n
  • enum socket_type_t
  • \n
  • enum protocol_version
  • \n
  • enum portmap_transport
  • \n@@ -199,30 +199,30 @@\n
  • load_state()
  • \n \n \n
  • torrent_plugin\n
  • \n
  • peer_plugin\n
  • \n
  • dht_get_peers_reply_alert
  • \n
  • dht_direct_response_alert
  • \n
  • picker_log_alert
  • \n
  • session_error_alert
  • \n
  • dht_live_nodes_alert\n
  • \n
  • session_stats_header_alert
  • \n
  • dht_sample_infohashes_alert\n
  • \n
  • block_uploaded_alert
  • \n
  • alerts_dropped_alert
  • \n
  • socks5_alert
  • \n@@ -582,15 +582,15 @@\n
  • torrent_conflict_alert
  • \n
  • alert_cast()
  • \n
  • operation_name()
  • \n
  • enum operation_t
  • \n
  • alert_category_t
  • \n
  • int
  • \n
  • counters\n
  • \n
  • stats_metric
  • \n
  • session_stats_metrics()
  • \n
  • find_metric_idx()
  • \n
  • enum metric_type_t
  • \n
  • ip_filter\n \n [report issue]\n
    \n

    make_magnet_uri()

    \n

    Declared in "libtorrent/magnet_uri.hpp"

    \n
    \n-std::string make_magnet_uri (torrent_info const& info);\n-std::string make_magnet_uri (torrent_handle const& handle);\n std::string make_magnet_uri (add_torrent_params const& atp);\n+std::string make_magnet_uri (torrent_handle const& handle);\n+std::string make_magnet_uri (torrent_info const& info);\n 
    \n

    Generates a magnet URI from the specified torrent.

    \n

    Several fields from the add_torrent_params objects are recorded in the\n magnet link. In order to not include them, they have to be cleared before\n calling make_magnet_uri(). These fields are used:

    \n
    \n ti, info_hashes, url_seeds, dht_nodes,\n@@ -4479,16 +4479,16 @@\n an empty string is returned.

    \n

    For more information about magnet links, see magnet links.

    \n [report issue]
    \n
    \n

    parse_magnet_uri()

    \n

    Declared in "libtorrent/magnet_uri.hpp"

    \n
    \n-add_torrent_params parse_magnet_uri (string_view uri);\n add_torrent_params parse_magnet_uri (string_view uri, error_code& ec);\n+add_torrent_params parse_magnet_uri (string_view uri);\n void parse_magnet_uri (string_view uri, add_torrent_params& p, error_code& ec);\n 
    \n

    This function parses out information from the magnet link and populates the\n add_torrent_params object. The overload that does not take an\n error_code reference will throw a system_error on error\n The overload taking an add_torrent_params reference will fill in the\n fields specified in the magnet URI.

    \n@@ -5278,16 +5278,16 @@\n
    \n struct torrent_plugin\n {\n    virtual std::shared_ptr<peer_plugin> new_connection (peer_connection_handle const&);\n    virtual void on_piece_pass (piece_index_t);\n    virtual void on_piece_failed (piece_index_t);\n    virtual void tick ();\n-   virtual bool on_resume ();\n    virtual bool on_pause ();\n+   virtual bool on_resume ();\n    virtual void on_files_checked ();\n    virtual void on_state (torrent_status::state_t);\n    virtual void on_add_peer (tcp::endpoint const&,\n       peer_source_flags_t, add_peer_flags_t);\n \n    static constexpr add_peer_flags_t first_time  = 1_bit;\n    static constexpr add_peer_flags_t filtered  = 2_bit;\n@@ -5326,21 +5326,21 @@\n 
    \n

    tick()

    \n
    \n virtual void tick ();\n 
    \n

    This hook is called approximately once per second. It is a way of making it\n easy for plugins to do timed events, for sending messages or whatever.

    \n-\n-[report issue]
    \n-
    \n-

    on_pause() on_resume()

    \n+\n+[report issue]
    \n+
    \n+

    on_resume() on_pause()

    \n
    \n-virtual bool on_resume ();\n virtual bool on_pause ();\n+virtual bool on_resume ();\n 
    \n

    These hooks are called when the torrent is paused and resumed respectively.\n The return value indicates if the event was handled. A return value of\n true indicates that it was handled, and no other plugin after this one\n will have this hook function called, and the standard handler will also not be\n invoked. So, returning true effectively overrides the standard behavior of\n pause or resume.

    \n@@ -5405,43 +5405,43 @@\n {\n virtual string_view type () const;\n virtual void add_handshake (entry&);\n virtual void on_disconnect (error_code const&);\n virtual void on_connected ();\n virtual bool on_handshake (span<char const>);\n virtual bool on_extension_handshake (bdecode_node const&);\n+ virtual bool on_request (peer_request const&);\n virtual bool on_have (piece_index_t);\n- virtual bool on_unchoke ();\n+ virtual bool on_have_none ();\n+ virtual bool on_bitfield (bitfield const& /*bitfield*/);\n+ virtual bool on_choke ();\n+ virtual bool on_allowed_fast (piece_index_t);\n virtual bool on_interested ();\n+ virtual bool on_unchoke ();\n virtual bool on_not_interested ();\n- virtual bool on_allowed_fast (piece_index_t);\n- virtual bool on_choke ();\n- virtual bool on_bitfield (bitfield const& /*bitfield*/);\n- virtual bool on_have_all ();\n virtual bool on_dont_have (piece_index_t);\n- virtual bool on_have_none ();\n- virtual bool on_request (peer_request const&);\n+ virtual bool on_have_all ();\n virtual bool on_piece (peer_request const& /*piece*/\n , span<char const> /*buf*/);\n virtual bool on_cancel (peer_request const&);\n virtual bool on_suggest (piece_index_t);\n virtual bool on_reject (peer_request const&);\n- virtual void sent_allow_fast (piece_index_t);\n- virtual void sent_request (peer_request const&);\n+ virtual void sent_have_all ();\n virtual void sent_have_none ();\n- virtual void sent_choke ();\n- virtual void sent_suggest (piece_index_t);\n+ virtual void sent_request (peer_request const&);\n virtual void sent_cancel (peer_request const&);\n- virtual void sent_have_all ();\n+ virtual void sent_choke ();\n virtual void sent_reject_request (peer_request const&);\n- virtual void sent_interested ();\n+ virtual void sent_allow_fast (piece_index_t);\n+ virtual void sent_suggest (piece_index_t);\n virtual void sent_not_interested ();\n- virtual void sent_have (piece_index_t);\n virtual void sent_piece (peer_request const&);\n+ virtual void sent_have (piece_index_t);\n virtual void sent_unchoke ();\n+ virtual void sent_interested ();\n virtual void sent_payload (int /* bytes */);\n virtual bool can_disconnect (error_code const& /*ec*/);\n virtual bool on_extended (int /*length*/, int /*msg*/,\n span<char const> /*body*/);\n virtual bool on_unknown_message (int /*length*/, int /*msg*/,\n span<char const> /*body*/);\n virtual void on_piece_pass (piece_index_t);\n@@ -5499,39 +5499,39 @@\n virtual bool on_extension_handshake (bdecode_node const&);\n
    \n

    called when the extension handshake from the other end is received\n if this returns false, it means that this extension isn't\n supported by this peer. It will result in this peer_plugin\n being removed from the peer_connection and destructed.\n this is not called for web seeds

    \n-\n-\n-\n-\n \n-\n \n-\n-\n+\n+\n \n-[report issue]
    \n-
    \n-

    on_have() on_unchoke() on_dont_have() on_request() on_have_none() on_have_all() on_allowed_fast() on_choke() on_interested() on_not_interested() on_bitfield()

    \n+\n+\n+\n+\n+\n+[report issue]
    \n+
    \n+

    on_have_none() on_allowed_fast() on_dont_have() on_have_all() on_not_interested() on_unchoke() on_interested() on_choke() on_have() on_request() on_bitfield()

    \n
    \n+virtual bool on_request (peer_request const&);\n virtual bool on_have (piece_index_t);\n-virtual bool on_unchoke ();\n+virtual bool on_have_none ();\n+virtual bool on_bitfield (bitfield const& /*bitfield*/);\n+virtual bool on_choke ();\n+virtual bool on_allowed_fast (piece_index_t);\n virtual bool on_interested ();\n+virtual bool on_unchoke ();\n virtual bool on_not_interested ();\n-virtual bool on_allowed_fast (piece_index_t);\n-virtual bool on_choke ();\n-virtual bool on_bitfield (bitfield const& /*bitfield*/);\n-virtual bool on_have_all ();\n virtual bool on_dont_have (piece_index_t);\n-virtual bool on_have_none ();\n-virtual bool on_request (peer_request const&);\n+virtual bool on_have_all ();\n 
    \n

    returning true from any of the message handlers\n indicates that the plugin has handled the message.\n it will break the plugin chain traversing and not let\n anyone else handle the message, including the default\n handler.

    \n [report issue]
    \n@@ -5543,27 +5543,27 @@\n \n

    This function is called when the peer connection is receiving\n a piece. buf points (non-owning pointer) to the data in an\n internal immutable disk buffer. The length of the data is specified\n in the length member of the piece parameter.\n returns true to indicate that the piece is handled and the\n rest of the logic should be ignored.

    \n-\n-\n-\n \n-[report issue]\n-
    \n-

    sent_interested() sent_unchoke() sent_have() sent_not_interested() sent_piece()

    \n+\n+\n+\n+[report issue]
    \n+
    \n+

    sent_not_interested() sent_unchoke() sent_piece() sent_interested() sent_have()

    \n
    \n-virtual void sent_interested ();\n virtual void sent_not_interested ();\n-virtual void sent_have (piece_index_t);\n virtual void sent_piece (peer_request const&);\n+virtual void sent_have (piece_index_t);\n virtual void sent_unchoke ();\n+virtual void sent_interested ();\n 
    \n

    called after a choke message has been sent to the peer

    \n [report issue]
    \n
    \n

    sent_payload()

    \n
    \n virtual void sent_payload (int /* bytes */);\n@@ -5633,16 +5633,16 @@\n 
    \n
    \n

    crypto_plugin

    \n

    Declared in "libtorrent/extensions.hpp"

    \n
    \n struct crypto_plugin\n {\n-   virtual void set_incoming_key (span<char const> key) = 0;\n    virtual void set_outgoing_key (span<char const> key) = 0;\n+   virtual void set_incoming_key (span<char const> key) = 0;\n    encrypt (span<span<char>> /*send_vec*/) = 0;\n    virtual std::tuple<int, int, int> decrypt (span<span<char>> /*receive_vec*/) = 0;\n };\n 
    \n [report issue]
    \n

    decrypt()

    \n
    \n@@ -5666,49 +5666,49 @@\n connection object, to be used by plugins. This is a low level interface that\n may not be stable across libtorrent versions

    \n
    \n struct peer_connection_handle\n {\n    explicit peer_connection_handle (std::weak_ptr<peer_connection> impl);\n    connection_type type () const;\n-   peer_plugin const* find_plugin (string_view type) const;\n    void add_extension (std::shared_ptr<peer_plugin>);\n+   peer_plugin const* find_plugin (string_view type) const;\n    bool is_seed () const;\n    bool upload_only () const;\n-   bool has_piece (piece_index_t i) const;\n    peer_id const& pid () const;\n-   bool is_choked () const;\n+   bool has_piece (piece_index_t i) const;\n    bool is_interesting () const;\n-   bool has_peer_choked () const;\n+   bool is_choked () const;\n    bool is_peer_interested () const;\n+   bool has_peer_choked () const;\n    void maybe_unchoke_this_peer ();\n    void choke_this_peer ();\n    void get_peer_info (peer_info& p) const;\n    torrent_handle associated_torrent () const;\n    tcp::endpoint const& remote () const;\n    tcp::endpoint local_endpoint () const;\n-   bool is_connecting () const;\n    void disconnect (error_code const& ec, operation_t op\n       , disconnect_severity_t = peer_connection_interface::normal);\n    bool is_outgoing () const;\n+   bool is_connecting () const;\n    bool is_disconnecting () const;\n    bool ignore_unchoke_slots () const;\n    bool on_local_network () const;\n    bool failed () const;\n+   bool should_log (peer_log_alert::direction_t direction) const;\n    void peer_log (peer_log_alert::direction_t direction\n       , char const* event, char const* fmt = "", ...) const TORRENT_FORMAT(4,5);\n-   bool should_log (peer_log_alert::direction_t direction) const;\n    bool can_disconnect (error_code const& ec) const;\n    bool has_metadata () const;\n    bool in_handshake () const;\n    void send_buffer (char const* begin, int size);\n    std::time_t last_seen_complete () const;\n    time_point time_of_last_unchoke () const;\n-   bool operator!= (peer_connection_handle const& o) const;\n    bool operator< (peer_connection_handle const& o) const;\n+   bool operator!= (peer_connection_handle const& o) const;\n    bool operator== (peer_connection_handle const& o) const;\n    std::shared_ptr<peer_connection> native_handle () const;\n };\n 
    \n [report issue]
    \n
    \n

    bt_peer_connection_handle

    \n@@ -5716,16 +5716,16 @@\n

    The bt_peer_connection_handle provides a handle to the internal bittorrent\n peer connection object to plugins. It's low level and may not be a stable API\n across libtorrent versions.

    \n
    \n struct bt_peer_connection_handle : peer_connection_handle\n {\n    explicit bt_peer_connection_handle (peer_connection_handle pc);\n-   bool packet_finished () const;\n    bool support_extensions () const;\n+   bool packet_finished () const;\n    bool supports_encryption () const;\n    void switch_recv_crypto (std::shared_ptr<crypto_plugin> crypto);\n    void switch_send_crypto (std::shared_ptr<crypto_plugin> crypto);\n    std::shared_ptr<bt_peer_connection> native_handle () const;\n };\n 
    \n [report issue]
    \n@@ -5812,28 +5812,28 @@\n {\n bool is_valid () const;\n void reserve (int num_files);\n void add_file (error_code& ec, std::string const& path, std::int64_t file_size\n , file_flags_t file_flags = {}\n , std::time_t mtime = 0, string_view symlink_path = string_view()\n , char const* root_hash = nullptr);\n- void add_file_borrow (error_code& ec, string_view filename\n- , std::string const& path, std::int64_t file_size\n- , file_flags_t file_flags = {}, char const* filehash = nullptr\n- , std::int64_t mtime = 0, string_view symlink_path = string_view()\n- , char const* root_hash = nullptr);\n void add_file_borrow (string_view filename\n , std::string const& path, std::int64_t file_size\n , file_flags_t file_flags = {}, char const* filehash = nullptr\n , std::int64_t mtime = 0, string_view symlink_path = string_view()\n , char const* root_hash = nullptr);\n void add_file (std::string const& path, std::int64_t file_size\n , file_flags_t file_flags = {}\n , std::time_t mtime = 0, string_view symlink_path = string_view()\n , char const* root_hash = nullptr);\n+ void add_file_borrow (error_code& ec, string_view filename\n+ , std::string const& path, std::int64_t file_size\n+ , file_flags_t file_flags = {}, char const* filehash = nullptr\n+ , std::int64_t mtime = 0, string_view symlink_path = string_view()\n+ , char const* root_hash = nullptr);\n void rename_file (file_index_t index, std::string const& new_filename);\n std::vector<file_slice> map_block (piece_index_t piece, std::int64_t offset\n , std::int64_t size) const;\n peer_request map_file (file_index_t file, std::int64_t offset, int size) const;\n int num_files () const noexcept;\n file_index_t end_file () const noexcept;\n index_range<file_index_t> file_range () const noexcept;\n@@ -5848,27 +5848,27 @@\n int piece_size (piece_index_t index) const;\n int piece_size2 (piece_index_t index) const;\n int blocks_in_piece2 (piece_index_t index) const;\n std::string const& name () const;\n void set_name (std::string const& n);\n void swap (file_storage& ti) noexcept;\n void canonicalize ();\n- sha1_hash hash (file_index_t index) const;\n- std::time_t mtime (file_index_t index) const;\n std::string symlink (file_index_t index) const;\n bool pad_file_at (file_index_t index) const;\n+ sha256_hash root (file_index_t index) const;\n+ std::int64_t file_offset (file_index_t index) const;\n+ sha1_hash hash (file_index_t index) const;\n std::int64_t file_size (file_index_t index) const;\n std::string file_path (file_index_t index, std::string const& save_path = "") const;\n- std::int64_t file_offset (file_index_t index) const;\n char const* root_ptr (file_index_t const index) const;\n- sha256_hash root (file_index_t index) const;\n+ std::time_t mtime (file_index_t index) const;\n string_view file_name (file_index_t index) const;\n+ index_range<piece_index_t::diff_type> file_piece_range (file_index_t) const;\n int file_num_blocks (file_index_t index) const;\n int file_num_pieces (file_index_t index) const;\n- index_range<piece_index_t::diff_type> file_piece_range (file_index_t) const;\n int file_first_block_node (file_index_t index) const;\n int file_first_piece_node (file_index_t index) const;\n std::uint32_t file_path_hash (file_index_t index, std::string const& save_path) const;\n void all_path_hashes (std::unordered_set<std::uint32_t>& table) const;\n file_flags_t file_flags (file_index_t index) const;\n bool file_absolute_path (file_index_t index) const;\n file_index_t file_index_at_offset (std::int64_t offset) const;\n@@ -5898,37 +5898,37 @@\n

    reserve()

    \n
    \n void reserve (int num_files);\n 
    \n

    allocates space for num_files in the internal file list. This can\n be used to avoid reallocating the internal file list when the number\n of files to be added is known up-front.

    \n-\n-[report issue]
    \n-
    \n-

    add_file() add_file_borrow()

    \n+\n+[report issue]
    \n+
    \n+

    add_file_borrow() add_file()

    \n
    \n void add_file (error_code& ec, std::string const& path, std::int64_t file_size\n       , file_flags_t file_flags = {}\n       , std::time_t mtime = 0, string_view symlink_path = string_view()\n       , char const* root_hash = nullptr);\n-void add_file_borrow (error_code& ec, string_view filename\n-      , std::string const& path, std::int64_t file_size\n-      , file_flags_t file_flags = {}, char const* filehash = nullptr\n-      , std::int64_t mtime = 0, string_view symlink_path = string_view()\n-      , char const* root_hash = nullptr);\n void add_file_borrow (string_view filename\n       , std::string const& path, std::int64_t file_size\n       , file_flags_t file_flags = {}, char const* filehash = nullptr\n       , std::int64_t mtime = 0, string_view symlink_path = string_view()\n       , char const* root_hash = nullptr);\n void add_file (std::string const& path, std::int64_t file_size\n       , file_flags_t file_flags = {}\n       , std::time_t mtime = 0, string_view symlink_path = string_view()\n       , char const* root_hash = nullptr);\n+void add_file_borrow (error_code& ec, string_view filename\n+      , std::string const& path, std::int64_t file_size\n+      , file_flags_t file_flags = {}, char const* filehash = nullptr\n+      , std::int64_t mtime = 0, string_view symlink_path = string_view()\n+      , char const* root_hash = nullptr);\n 
    \n

    Adds a file to the file storage. The add_file_borrow version\n expects that filename is the file name (without a path) of\n the file that's being added.\n This memory is borrowed, i.e. it is the caller's\n responsibility to make sure it stays valid throughout the lifetime\n of this file_storage object or any copy of it. The same thing applies\n@@ -6060,18 +6060,18 @@\n

    piece_range()

    \n
    \n index_range<piece_index_t> piece_range () const noexcept;\n 
    \n

    returns an implementation-defined type that can be used as the\n container in a range-for loop. Where the values are the indices of all\n pieces in the file_storage.

    \n-\n-[report issue]
    \n-
    \n-

    piece_length() set_piece_length()

    \n+\n+[report issue]
    \n+
    \n+

    set_piece_length() piece_length()

    \n
    \n int piece_length () const;\n void set_piece_length (int l);\n 
    \n

    set and get the size of each piece in this torrent. It must be a power of two\n and at least 16 kiB.

    \n [report issue]
    \n@@ -6095,18 +6095,18 @@\n [report issue]\n
    \n

    blocks_in_piece2()

    \n
    \n int blocks_in_piece2 (piece_index_t index) const;\n 
    \n

    returns the number of blocks in the specified piece, for v2 torrents.

    \n-\n-[report issue]
    \n-
    \n-

    set_name() name()

    \n+\n+[report issue]
    \n+
    \n+

    name() set_name()

    \n
    \n std::string const& name () const;\n void set_name (std::string const& n);\n 
    \n

    set and get the name of this torrent. For multi-file torrents, this is also\n the name of the root directory all the files are stored in.

    \n [report issue]
    \n@@ -6120,36 +6120,36 @@\n
    \n

    canonicalize()

    \n
    \n void canonicalize ();\n 
    \n

    arrange files and padding to match the canonical form required\n by BEP 52

    \n+\n \n+\n \n-\n+\n+\n \n \n-\n-\n-\n-\n-[report issue]
    \n-\n+\n-
    \n-

    file_num_pieces() file_num_blocks() file_piece_range()

    \n+[report issue]
    \n+
    \n+

    file_piece_range() file_num_pieces() file_num_blocks()

    \n
    \n+index_range<piece_index_t::diff_type> file_piece_range (file_index_t) const;\n int file_num_blocks (file_index_t index) const;\n int file_num_pieces (file_index_t index) const;\n-index_range<piece_index_t::diff_type> file_piece_range (file_index_t) const;\n 
    \n

    Returns the number of pieces or blocks the file at index spans,\n under the assumption that the file is aligned to the start of a piece.\n This is only meaningful for v2 torrents, where files are guaranteed\n such alignment.\n These numbers are used to size and navigate the merkle hash tree for\n each file.

    \n-\n-[report issue]
    \n-
    \n-

    file_first_block_node() file_first_piece_node()

    \n+\n+[report issue]
    \n+
    \n+

    file_first_piece_node() file_first_block_node()

    \n
    \n int file_first_block_node (file_index_t index) const;\n int file_first_piece_node (file_index_t index) const;\n 
    \n

    index of first piece node in the merkle tree

    \n [report issue]
    \n
    \n@@ -6229,18 +6229,18 @@\n

    file_absolute_path()

    \n
    \n bool file_absolute_path (file_index_t index) const;\n 
    \n

    returns true if the file at the specified index has been renamed to\n have an absolute path, i.e. is not anchored in the save path of the\n torrent.

    \n-\n-[report issue]
    \n-
    \n-

    file_index_at_offset() file_index_at_piece()

    \n+\n+[report issue]
    \n+
    \n+

    file_index_at_piece() file_index_at_offset()

    \n
    \n file_index_t file_index_at_offset (std::int64_t offset) const;\n file_index_t file_index_at_piece (piece_index_t piece) const;\n 
    \n

    returns the index of the file at the given offset in the torrent

    \n [report issue]
    \n
    \n@@ -6480,38 +6480,38 @@\n struct client_data_t\n {\n client_data_t () = default;\n explicit client_data_t (T* v);\n client_data_t& operator= (T* v);\n T* get () const;\n explicit operator T () const;\n- operator void* () const = delete;\n operator void const* () const = delete;\n client_data_t& operator= (void*) = delete;\n client_data_t& operator= (void const*) = delete;\n+ operator void* () const = delete;\n \n template <typename T, typename U = typename std::enable_if<std::is_pointer<T>::value>::type>\n };\n \n [report issue]
    \n

    client_data_t()

    \n
    \n client_data_t () = default;\n 
    \n

    construct a nullptr client data

    \n-\n+\n \n-[report issue]
    \n-
    \n-

    const*() operator=() void*()

    \n+[report issue]
    \n+
    \n+

    void*() operator=() const*()

    \n
    \n-operator void* () const = delete;\n operator void const* () const = delete;\n client_data_t& operator= (void*) = delete;\n client_data_t& operator= (void const*) = delete;\n+operator void* () const = delete;\n 
    \n

    we don't allow type-unsafe operations

    \n [report issue]
    \n
    \n
    \n

    add_torrent_params

    \n

    Declared in "libtorrent/add_torrent_params.hpp"

    \n@@ -6894,18 +6894,18 @@\n

    Declared in "libtorrent/peer_class_type_filter.hpp"

    \n

    peer_class_type_filter is a simple container for rules for adding and subtracting\n peer-classes from peers. It is applied after the peer class filter is applied (which\n is based on the peer's IP address).

    \n
    \n struct peer_class_type_filter\n {\n-   void add (socket_type_t const st, peer_class_t const peer_class);\n    void remove (socket_type_t const st, peer_class_t const peer_class);\n-   void allow (socket_type_t const st, peer_class_t const peer_class);\n+   void add (socket_type_t const st, peer_class_t const peer_class);\n    void disallow (socket_type_t const st, peer_class_t const peer_class);\n+   void allow (socket_type_t const st, peer_class_t const peer_class);\n    std::uint32_t apply (socket_type_t const st, std::uint32_t peer_class_mask);\n    friend bool operator== (peer_class_type_filter const& lhs\n       , peer_class_type_filter const& rhs);\n \n    enum socket_type_t\n    {\n       tcp_socket,\n@@ -6913,30 +6913,30 @@\n       ssl_tcp_socket,\n       ssl_utp_socket,\n       i2p_socket,\n       num_socket_types,\n    };\n };\n 
    \n-\n-[report issue]
    \n-

    remove() add()

    \n+\n+[report issue]
    \n+

    add() remove()

    \n
    \n-void add (socket_type_t const st, peer_class_t const peer_class);\n void remove (socket_type_t const st, peer_class_t const peer_class);\n+void add (socket_type_t const st, peer_class_t const peer_class);\n 
    \n

    add() and remove() adds and removes a peer class to be added\n to new peers based on socket type.

    \n \n [report issue]
    \n
    \n

    disallow() allow()

    \n
    \n-void allow (socket_type_t const st, peer_class_t const peer_class);\n void disallow (socket_type_t const st, peer_class_t const peer_class);\n+void allow (socket_type_t const st, peer_class_t const peer_class);\n 
    \n

    disallow() and allow() adds and removes a peer class to be\n removed from new peers based on socket type.

    \n

    The peer_class argument cannot be greater than 31. The bitmasks representing\n peer classes in the peer_class_type_filter are 32 bits.

    \n [report issue]
    \n
    \n@@ -6997,16 +6997,16 @@\n

    block_info

    \n

    Declared in "libtorrent/torrent_handle.hpp"

    \n

    holds the state of a block in a piece. Who we requested\n it from and how far along we are at downloading it.

    \n
    \n struct block_info\n {\n-   tcp::endpoint peer () const;\n    void set_peer (tcp::endpoint const& ep);\n+   tcp::endpoint peer () const;\n \n    enum block_state_t\n    {\n       none,\n       requested,\n       writing,\n       finished,\n@@ -7014,20 +7014,20 @@\n \n    unsigned bytes_progress:15;\n    unsigned block_size:15;\n    unsigned state:2;\n    unsigned num_peers:14;\n };\n 
    \n-\n-[report issue]
    \n-

    set_peer() peer()

    \n+\n+[report issue]
    \n+

    peer() set_peer()

    \n
    \n-tcp::endpoint peer () const;\n void set_peer (tcp::endpoint const& ep);\n+tcp::endpoint peer () const;\n 
    \n

    The peer is the ip address of the peer this block was downloaded from.

    \n [report issue]
    \n
    \n

    enum block_state_t

    \n

    Declared in "libtorrent/torrent_handle.hpp"

    \n \n@@ -7170,97 +7170,97 @@\n torrent_handle () noexcept = default;\n void add_piece (piece_index_t piece, char const* data, add_piece_flags_t flags = {}) const;\n void add_piece (piece_index_t piece, std::vector<char> data, add_piece_flags_t flags = {}) const;\n void read_piece (piece_index_t piece) const;\n bool have_piece (piece_index_t piece) const;\n void get_peer_info (std::vector<peer_info>& v) const;\n torrent_status status (status_flags_t flags = status_flags_t::all()) const;\n- void get_download_queue (std::vector<partial_piece_info>& queue) const;\n std::vector<partial_piece_info> get_download_queue () const;\n+ void get_download_queue (std::vector<partial_piece_info>& queue) const;\n void set_piece_deadline (piece_index_t index, int deadline, deadline_flags_t flags = {}) const;\n- void clear_piece_deadlines () const;\n void reset_piece_deadline (piece_index_t index) const;\n+ void clear_piece_deadlines () const;\n void file_progress (std::vector<std::int64_t>& progress, file_progress_flags_t flags = {}) const;\n std::vector<std::int64_t> file_progress (file_progress_flags_t flags = {}) const;\n std::vector<open_file_state> file_status () const;\n void clear_error () const;\n- void replace_trackers (std::vector<announce_entry> const&) const;\n void add_tracker (announce_entry const&) const;\n+ void replace_trackers (std::vector<announce_entry> const&) const;\n std::vector<announce_entry> trackers () const;\n+ void add_url_seed (std::string const& url) const;\n std::set<std::string> url_seeds () const;\n void remove_url_seed (std::string const& url) const;\n- void add_url_seed (std::string const& url) const;\n- std::set<std::string> http_seeds () const;\n void remove_http_seed (std::string const& url) const;\n void add_http_seed (std::string const& url) const;\n+ std::set<std::string> http_seeds () const;\n void add_extension (\n std::function<std::shared_ptr<torrent_plugin>(torrent_handle const&, client_data_t)> const& ext\n , client_data_t userdata = client_data_t{});\n bool set_metadata (span<char const> metadata) const;\n bool is_valid () const;\n void resume () const;\n void pause (pause_flags_t flags = {}) const;\n+ void set_flags (torrent_flags_t flags) const;\n torrent_flags_t flags () const;\n- void unset_flags (torrent_flags_t flags) const;\n void set_flags (torrent_flags_t flags, torrent_flags_t mask) const;\n- void set_flags (torrent_flags_t flags) const;\n+ void unset_flags (torrent_flags_t flags) const;\n void flush_cache () const;\n void force_recheck () const;\n void save_resume_data (resume_data_flags_t flags = {}) const;\n bool need_save_resume_data () const;\n- void queue_position_up () const;\n- queue_position_t queue_position () const;\n void queue_position_bottom () const;\n+ queue_position_t queue_position () const;\n+ void queue_position_up () const;\n void queue_position_down () const;\n void queue_position_top () const;\n void queue_position_set (queue_position_t p) const;\n+ void set_ssl_certificate_buffer (std::string const& certificate\n+ , std::string const& private_key\n+ , std::string const& dh_params);\n void set_ssl_certificate (std::string const& certificate\n , std::string const& private_key\n , std::string const& dh_params\n , std::string const& passphrase = "");\n- void set_ssl_certificate_buffer (std::string const& certificate\n- , std::string const& private_key\n- , std::string const& dh_params);\n- std::shared_ptr<torrent_info> torrent_file_with_hashes () const;\n std::shared_ptr<const torrent_info> torrent_file () const;\n+ std::shared_ptr<torrent_info> torrent_file_with_hashes () const;\n std::vector<std::vector<sha256_hash>> piece_layers () const;\n void piece_availability (std::vector<int>& avail) const;\n+ void piece_priority (piece_index_t index, download_priority_t priority) const;\n std::vector<download_priority_t> get_piece_priorities () const;\n void prioritize_pieces (std::vector<std::pair<piece_index_t, download_priority_t>> const& pieces) const;\n download_priority_t piece_priority (piece_index_t index) const;\n- void piece_priority (piece_index_t index, download_priority_t priority) const;\n void prioritize_pieces (std::vector<download_priority_t> const& pieces) const;\n- download_priority_t file_priority (file_index_t index) const;\n void file_priority (file_index_t index, download_priority_t priority) const;\n- void prioritize_files (std::vector<download_priority_t> const& files) const;\n+ download_priority_t file_priority (file_index_t index) const;\n std::vector<download_priority_t> get_file_priorities () const;\n- void force_reannounce (int seconds = 0, int idx = -1, reannounce_flags_t = {}) const;\n- void force_dht_announce () const;\n+ void prioritize_files (std::vector<download_priority_t> const& files) const;\n void force_lsd_announce () const;\n+ void force_dht_announce () const;\n+ void force_reannounce (int seconds = 0, int idx = -1, reannounce_flags_t = {}) const;\n void scrape_tracker (int idx = -1) const;\n int upload_limit () const;\n- int download_limit () const;\n void set_upload_limit (int limit) const;\n void set_download_limit (int limit) const;\n+ int download_limit () const;\n void connect_peer (tcp::endpoint const& adr, peer_source_flags_t source = {}\n , pex_flags_t flags = pex_encryption | pex_utp | pex_holepunch) const;\n void clear_peers ();\n void set_max_uploads (int max_uploads) const;\n int max_uploads () const;\n int max_connections () const;\n void set_max_connections (int max_connections) const;\n void move_storage (std::string const& save_path\n , move_flags_t flags = move_flags_t::always_replace_files\n ) const;\n void rename_file (file_index_t index, std::string const& new_name) const;\n info_hash_t info_hashes () const;\n sha1_hash info_hash () const;\n- bool operator< (const torrent_handle& h) const;\n- bool operator== (const torrent_handle& h) const;\n bool operator!= (const torrent_handle& h) const;\n+ bool operator== (const torrent_handle& h) const;\n+ bool operator< (const torrent_handle& h) const;\n std::uint32_t id () const;\n std::shared_ptr<torrent> native_handle () const;\n client_data_t userdata () const;\n bool in_session () const;\n \n static constexpr add_piece_flags_t overwrite_existing = 0_bit;\n static constexpr status_flags_t query_distributed_copies = 0_bit;\n@@ -7363,30 +7363,30 @@\n filter them out.

    \n

    By default everything is included. The flags you can use to decide\n what to include are defined in this class.

    \n [report issue]\n
    \n

    get_download_queue()

    \n
    \n-void get_download_queue (std::vector<partial_piece_info>& queue) const;\n std::vector<partial_piece_info> get_download_queue () const;\n+void get_download_queue (std::vector<partial_piece_info>& queue) const;\n 
    \n

    get_download_queue() returns a vector with information about pieces\n that are partially downloaded or not downloaded but partially\n requested. See partial_piece_info for the fields in the returned\n vector.

    \n+\n \n-\n-[report issue]
    \n-
    \n-

    clear_piece_deadlines() reset_piece_deadline() set_piece_deadline()

    \n+[report issue]
    \n+
    \n+

    set_piece_deadline() clear_piece_deadlines() reset_piece_deadline()

    \n
    \n void set_piece_deadline (piece_index_t index, int deadline, deadline_flags_t flags = {}) const;\n-void clear_piece_deadlines () const;\n void reset_piece_deadline (piece_index_t index) const;\n+void clear_piece_deadlines () const;\n 
    \n

    This function sets or resets the deadline associated with a specific\n piece index (index). libtorrent will attempt to download this\n entire piece before the deadline expires. This is not necessarily\n possible, but pieces with a more recent deadline will always be\n prioritized over pieces with a deadline further ahead in time. The\n deadline (and flags) of a piece can be changed by calling this\n@@ -7439,22 +7439,22 @@\n

    \n

    clear_error()

    \n
    \n void clear_error () const;\n 
    \n

    If the torrent is in an error state (i.e. torrent_status::error is\n non-empty), this will clear the error and start the torrent again.

    \n-\n \n-[report issue]
    \n-
    \n-

    replace_trackers() trackers() add_tracker()

    \n+\n+[report issue]
    \n+
    \n+

    trackers() replace_trackers() add_tracker()

    \n
    \n-void replace_trackers (std::vector<announce_entry> const&) const;\n void add_tracker (announce_entry const&) const;\n+void replace_trackers (std::vector<announce_entry> const&) const;\n std::vector<announce_entry> trackers () const;\n 
    \n

    trackers() will return the list of trackers for this torrent. The\n announce entry contains both a string url which specify the\n announce url for the tracker as well as an int tier, which is\n specifies the order in which this tracker is tried. If you want\n libtorrent to use another list of trackers for this torrent, you can\n@@ -7466,41 +7466,41 @@\n set. If it is, it doesn't do anything. If it's not in the current set\n of trackers, it will insert it in the tier specified in the\n announce_entry.

    \n

    The updated set of trackers will be saved in the resume data, and when\n a torrent is started with resume data, the trackers from the resume\n data will replace the original ones.

    \n \n-\n-[report issue]
    \n-
    \n-

    url_seeds() add_url_seed() remove_url_seed()

    \n+\n+[report issue]
    \n+
    \n+

    url_seeds() remove_url_seed() add_url_seed()

    \n
    \n+void add_url_seed (std::string const& url) const;\n std::set<std::string> url_seeds () const;\n void remove_url_seed (std::string const& url) const;\n-void add_url_seed (std::string const& url) const;\n 
    \n

    add_url_seed() adds another url to the torrent's list of url\n seeds. If the given url already exists in that list, the call has no\n effect. The torrent will connect to the server and try to download\n pieces from it, unless it's paused, queued, checking or seeding.\n remove_url_seed() removes the given url if it exists already.\n url_seeds() return a set of the url seeds currently in this\n torrent. Note that URLs that fails may be removed automatically from\n the list.

    \n

    See http seeding for more information.

    \n-\n \n-[report issue]
    \n-
    \n-

    remove_http_seed() http_seeds() add_http_seed()

    \n+\n+[report issue]
    \n+
    \n+

    http_seeds() add_http_seed() remove_http_seed()

    \n
    \n-std::set<std::string> http_seeds () const;\n void remove_http_seed (std::string const& url) const;\n void add_http_seed (std::string const& url) const;\n+std::set<std::string> http_seeds () const;\n 
    \n

    These functions are identical as the *_url_seed() variants, but\n they operate on BEP 17 web seeds instead of BEP 19.

    \n

    See http seeding for more information.

    \n [report issue]
    \n
    \n

    add_extension()

    \n@@ -7573,18 +7573,18 @@\n
    \n \n \n [report issue]
    \n
    \n

    unset_flags() set_flags() flags()

    \n
    \n+void set_flags (torrent_flags_t flags) const;\n torrent_flags_t flags () const;\n-void unset_flags (torrent_flags_t flags) const;\n void set_flags (torrent_flags_t flags, torrent_flags_t mask) const;\n-void set_flags (torrent_flags_t flags) const;\n+void unset_flags (torrent_flags_t flags) const;\n 
    \n

    sets and gets the torrent state flags. See torrent_flags_t.\n The set_flags overload that take a mask will affect all\n flags part of the mask, and set their values to what the\n flags argument is set to. This allows clearing and\n setting flags in a single function call.\n The set_flags overload that just takes flags, sets all\n@@ -7735,25 +7735,25 @@\n

    \n

    Note

    \n

    A torrent's resume data is considered saved as soon as the\n save_resume_data_alert is posted. It is important to make sure this\n alert is received and handled in order for this function to be\n meaningful.

    \n
    \n+\n \n-\n-\n \n-[report issue]
    \n-
    \n-

    queue_position_up() queue_position_down() queue_position_top() queue_position_bottom() queue_position()

    \n+\n+[report issue]
    \n+
    \n+

    queue_position() queue_position_up() queue_position_bottom() queue_position_down() queue_position_top()

    \n
    \n-void queue_position_up () const;\n-queue_position_t queue_position () const;\n void queue_position_bottom () const;\n+queue_position_t queue_position () const;\n+void queue_position_up () const;\n void queue_position_down () const;\n void queue_position_top () const;\n 
    \n

    Every torrent that is added is assigned a queue position exactly one\n greater than the greatest queue position of all existing torrents.\n Torrents that are being seeded have -1 as their queue position, since\n they're no longer in line to be downloaded.

    \n@@ -7774,26 +7774,26 @@\n

    queue_position_set()

    \n
    \n void queue_position_set (queue_position_t p) const;\n 
    \n

    updates the position in the queue for this torrent. The relative order\n of all other torrents remain intact but their numerical queue position\n shifts to make space for this torrent's new position

    \n-\n-[report issue]
    \n-
    \n-

    set_ssl_certificate_buffer() set_ssl_certificate()

    \n+\n+[report issue]
    \n+
    \n+

    set_ssl_certificate() set_ssl_certificate_buffer()

    \n
    \n+void set_ssl_certificate_buffer (std::string const& certificate\n+      , std::string const& private_key\n+      , std::string const& dh_params);\n void set_ssl_certificate (std::string const& certificate\n       , std::string const& private_key\n       , std::string const& dh_params\n       , std::string const& passphrase = "");\n-void set_ssl_certificate_buffer (std::string const& certificate\n-      , std::string const& private_key\n-      , std::string const& dh_params);\n 
    \n

    For SSL torrents, use this to specify a path to a .pem file to use as\n this client's certificate. The certificate must be signed by the\n certificate in the .torrent file to be valid.

    \n

    The set_ssl_certificate_buffer() overload takes the actual certificate,\n private key and DH params as strings, rather than paths to files.

    \n

    cert is a path to the (signed) certificate in .pem format\n@@ -7809,21 +7809,21 @@\n

    Note that when a torrent first starts up, and it needs a certificate,\n it will suspend connecting to any peers until it has one. It's\n typically desirable to resume the torrent after setting the SSL\n certificate.

    \n

    If you receive a torrent_need_cert_alert, you need to call this to\n provide a valid cert. If you don't have a cert you won't be allowed to\n connect to any peers.

    \n-\n-[report issue]
    \n-
    \n-

    torrent_file() torrent_file_with_hashes()

    \n+\n+[report issue]
    \n+
    \n+

    torrent_file_with_hashes() torrent_file()

    \n
    \n-std::shared_ptr<torrent_info> torrent_file_with_hashes () const;\n std::shared_ptr<const torrent_info> torrent_file () const;\n+std::shared_ptr<torrent_info> torrent_file_with_hashes () const;\n 
    \n

    torrent_file() returns a pointer to the torrent_info object\n associated with this torrent. The torrent_info object may be a copy\n of the internal object. If the torrent doesn't have metadata, the\n pointer will not be initialized (i.e. a nullptr). The torrent may be\n in a state without metadata only if it was started without a .torrent\n file, e.g. by being added by magnet link.

    \n@@ -7874,18 +7874,18 @@\n that libtorrent uses in order to prefer picking rare pieces.

    \n \n \n [report issue]
    \n
    \n

    piece_priority() prioritize_pieces() get_piece_priorities()

    \n
    \n+void piece_priority (piece_index_t index, download_priority_t priority) const;\n std::vector<download_priority_t> get_piece_priorities () const;\n void prioritize_pieces (std::vector<std::pair<piece_index_t, download_priority_t>> const& pieces) const;\n download_priority_t piece_priority (piece_index_t index) const;\n-void piece_priority (piece_index_t index, download_priority_t priority) const;\n void prioritize_pieces (std::vector<download_priority_t> const& pieces) const;\n 
    \n

    These functions are used to set and get the priority of individual\n pieces. By default all pieces have priority 4. That means that the\n random rarest first algorithm is effectively active for all pieces.\n You may however change the priority of individual pieces. There are 8\n priority levels. 0 means not to download the piece at all. Otherwise,\n@@ -7914,18 +7914,18 @@\n usage of file- and piece priorities.

    \n \n \n [report issue]
    \n
    \n

    get_file_priorities() prioritize_files() file_priority()

    \n
    \n-download_priority_t file_priority (file_index_t index) const;\n void file_priority (file_index_t index, download_priority_t priority) const;\n-void prioritize_files (std::vector<download_priority_t> const& files) const;\n+download_priority_t file_priority (file_index_t index) const;\n std::vector<download_priority_t> get_file_priorities () const;\n+void prioritize_files (std::vector<download_priority_t> const& files) const;\n 
    \n

    index must be in the range [0, number_of_files).

    \n

    file_priority() queries or sets the priority of file index.

    \n

    prioritize_files() takes a vector that has at as many elements as\n there are files in the torrent. Each entry is the priority of that\n file. The function sets the priorities of all the pieces in the\n torrent based on the vector.

    \n@@ -7948,23 +7948,23 @@\n file_prio_alert.

    \n

    When combining file- and piece priorities, the resume file will record\n both. When loading the resume data, the file priorities will be applied\n first, then the piece priorities.

    \n

    Moving data from a file into the part file is currently not\n supported. If a file has its priority set to 0 after it has already\n been created, it will not be moved into the partfile.

    \n-\n \n-[report issue]
    \n-
    \n-

    force_dht_announce() force_lsd_announce() force_reannounce()

    \n+\n+[report issue]
    \n+
    \n+

    force_lsd_announce() force_reannounce() force_dht_announce()

    \n
    \n-void force_reannounce (int seconds = 0, int idx = -1, reannounce_flags_t = {}) const;\n-void force_dht_announce () const;\n void force_lsd_announce () const;\n+void force_dht_announce () const;\n+void force_reannounce (int seconds = 0, int idx = -1, reannounce_flags_t = {}) const;\n 
    \n

    force_reannounce() will force this torrent to do another tracker\n request, to receive new peers. The seconds argument specifies how\n many seconds from now to issue the tracker announces.

    \n

    If the tracker's min_interval has not passed since the last\n announce, the forced announce will be scheduled to happen immediately\n as the min_interval expires. This is to honor trackers minimum\n@@ -7996,17 +7996,17 @@\n \n \n [report issue]

    \n
    \n

    upload_limit() set_download_limit() set_upload_limit() download_limit()

    \n
    \n int upload_limit () const;\n-int download_limit () const;\n void set_upload_limit (int limit) const;\n void set_download_limit (int limit) const;\n+int download_limit () const;\n 
    \n

    set_upload_limit will limit the upload bandwidth used by this\n particular torrent to the limit you set. It is given as the number of\n bytes per second the torrent is allowed to upload.\n set_download_limit works the same way but for download bandwidth\n instead of upload bandwidth. Note that setting a higher limit on a\n torrent then the global limit\n@@ -8052,18 +8052,18 @@\n \n

    set_max_uploads() sets the maximum number of peers that's unchoked\n at the same time on this torrent. If you set this to -1, there will be\n no limit. This defaults to infinite. The primary setting controlling\n this is the global unchoke slots limit, set by unchoke_slots_limit in\n settings_pack.

    \n

    max_uploads() returns the current settings.

    \n-\n-[report issue]
    \n-
    \n-

    max_connections() set_max_connections()

    \n+\n+[report issue]
    \n+
    \n+

    set_max_connections() max_connections()

    \n
    \n int max_connections () const;\n void set_max_connections (int max_connections) const;\n 
    \n

    set_max_connections() sets the maximum number of connection this\n torrent will open. If all connections are used up, incoming\n connections may be refused or poor connections may be closed. This\n@@ -8143,23 +8143,23 @@\n \n

    returns the info-hash(es) of the torrent. If this handle is to a\n torrent that hasn't loaded yet (for instance by being added) by a\n URL, the returned value is undefined.\n The info_hash() returns the SHA-1 info-hash for v1 torrents and a\n truncated hash for v2 torrents. For the full v2 info-hash, use\n info_hashes() instead.

    \n-\n+\n \n-[report issue]
    \n+[report issue]\n
    \n-

    operator<() operator!=() operator==()

    \n+

    operator==() operator!=() operator<()

    \n
    \n-bool operator< (const torrent_handle& h) const;\n-bool operator== (const torrent_handle& h) const;\n bool operator!= (const torrent_handle& h) const;\n+bool operator== (const torrent_handle& h) const;\n+bool operator< (const torrent_handle& h) const;\n 
    \n

    comparison operators. The order of the torrents is unspecified\n but stable.

    \n [report issue]
    \n
    \n

    id()

    \n
    \n@@ -8433,18 +8433,18 @@\n 

    remove_torrent()

    \n
    \n virtual void remove_torrent (storage_index_t) = 0;\n 
    \n

    remove the storage with the specified index. This is not expected to\n delete any files from disk, just to clean up any resources associated\n with the specified storage.

    \n-\n-[report issue]
    \n-
    \n-

    async_write() async_read()

    \n+\n+[report issue]
    \n+
    \n+

    async_read() async_write()

    \n
    \n virtual void async_read (storage_index_t storage, peer_request const& r\n       , std::function<void(disk_buffer_holder, storage_error const&)> handler\n       , disk_job_flags_t flags = {}) = 0;\n virtual bool async_write (storage_index_t storage, peer_request const& r\n       , char const* buf, std::shared_ptr<disk_observer> o\n       , std::function<void(storage_error const&)> handler\n@@ -8704,16 +8704,16 @@\n for a torrent to the lifetime of the internal torrent object. When a\n torrent is removed from the session, this holder is destructed and will\n inform the disk object.

    \n
    \n struct storage_holder\n {\n    storage_holder (storage_index_t idx, disk_interface& disk_io);\n-   storage_holder () = default;\n    ~storage_holder ();\n+   storage_holder () = default;\n    explicit operator bool () const;\n    operator storage_index_t () const;\n    void reset ();\n    storage_holder& operator= (storage_holder const&) = delete;\n    storage_holder (storage_holder const&) = delete;\n    storage_holder (storage_holder&& rhs) noexcept;\n    storage_holder& operator= (storage_holder&& rhs) noexcept;\n@@ -8844,21 +8844,21 @@\n 

    settings_interface

    \n

    Declared in "libtorrent/settings_pack.hpp"

    \n

    the common interface to settings_pack and the internal representation of\n settings.

    \n
    \n struct settings_interface\n {\n-   virtual bool has_val (int name) const = 0;\n+   virtual void set_int (int name, int val) = 0;\n    virtual void set_bool (int name, bool val) = 0;\n    virtual void set_str (int name, std::string val) = 0;\n-   virtual void set_int (int name, int val) = 0;\n-   virtual bool get_bool (int name) const = 0;\n-   virtual int get_int (int name) const = 0;\n+   virtual bool has_val (int name) const = 0;\n    virtual std::string const& get_str (int name) const = 0;\n+   virtual int get_int (int name) const = 0;\n+   virtual bool get_bool (int name) const = 0;\n };\n 
    \n [report issue]
    \n
    \n

    file_open_mode_t

    \n

    Declared in "libtorrent/disk_interface.hpp"

    \n
    \n@@ -9218,17 +9218,17 @@\n char const* new_name () const;\n char const* old_name () const;\n \n static constexpr alert_category_t static_category = alert_category::storage;\n file_index_t const index;\n };\n \n-\n-[report issue]
    \n-

    old_name() new_name()

    \n+\n+[report issue]
    \n+

    new_name() old_name()

    \n
    \n char const* new_name () const;\n char const* old_name () const;\n 
    \n

    returns the new and previous file name, respectively.

    \n [report issue]
    \n
    index
    \n@@ -9960,17 +9960,17 @@\n std::string message () const override;\n char const* old_path () const;\n char const* storage_path () const;\n \n static constexpr alert_category_t static_category = alert_category::storage;\n };\n \n-\n-[report issue]
    \n-

    old_path() storage_path()

    \n+\n+[report issue]
    \n+

    storage_path() old_path()

    \n
    \n char const* old_path () const;\n char const* storage_path () const;\n 
    \n

    the path the torrent was moved to and from, respectively.

    \n [report issue]
    \n
    \n@@ -11618,17 +11618,17 @@\n std::vector<std::pair<sha1_hash, udp::endpoint>> nodes () const;\n int num_nodes () const;\n \n static constexpr alert_category_t static_category = alert_category::dht;\n sha1_hash node_id;\n };\n \n-\n-[report issue]
    \n-

    num_nodes() nodes()

    \n+\n+[report issue]
    \n+

    nodes() num_nodes()

    \n
    \n std::vector<std::pair<sha1_hash, udp::endpoint>> nodes () const;\n int num_nodes () const;\n 
    \n

    the number of nodes in the routing table and the actual nodes.

    \n [report issue]
    \n
    node_id
    \n@@ -11660,32 +11660,32 @@\n

    Declared in "libtorrent/alert_types.hpp"

    \n

    posted as a response to a call to session::dht_sample_infohashes() with\n the information from the DHT response message.

    \n
    \n struct dht_sample_infohashes_alert final : alert\n {\n    std::string message () const override;\n-   std::vector<sha1_hash> samples () const;\n    int num_samples () const;\n+   std::vector<sha1_hash> samples () const;\n    int num_nodes () const;\n    std::vector<std::pair<sha1_hash, udp::endpoint>> nodes () const;\n \n    static constexpr alert_category_t static_category  = alert_category::dht_operation;\n    sha1_hash node_id;\n    aux::noexcept_movable<udp::endpoint> endpoint;\n    time_duration const interval;\n    int const num_infohashes;\n };\n 
    \n-\n-[report issue]
    \n-

    num_samples() samples()

    \n+\n+[report issue]
    \n+

    samples() num_samples()

    \n
    \n-std::vector<sha1_hash> samples () const;\n int num_samples () const;\n+std::vector<sha1_hash> samples () const;\n 
    \n

    returns the number of info-hashes returned by the node, as well as the\n actual info-hashes. num_samples() is more efficient than\n samples().size().

    \n [report issue]
    \n
    \n

    num_nodes()

    \n@@ -11871,16 +11871,16 @@\n and re-add it using this metadata\n
    \n [report issue]
    \n
    \n

    alert_cast()

    \n

    Declared in "libtorrent/alert.hpp"

    \n
    \n-template <typename T> T* alert_cast (alert* a);\n template <typename T> T const* alert_cast (alert const* a);\n+template <typename T> T* alert_cast (alert* a);\n 
    \n

    When you get an alert, you can use alert_cast<> to attempt to cast the\n pointer to a specific alert type, in order to query it for more\n information.

    \n
    \n

    Note

    \n

    alert_cast<> can only cast to an exact alert type, not a base class

    \n@@ -12259,26 +12259,26 @@\n

    Declared in "libtorrent/performance_counters.hpp"

    \n
    \n struct counters\n {\n    counters () ;\n    counters& operator= (counters const&) & ;\n    counters (counters const&) ;\n-   std::int64_t inc_stats_counter (int c, std::int64_t value = 1) ;\n    std::int64_t operator[] (int i) const ;\n+   std::int64_t inc_stats_counter (int c, std::int64_t value = 1) ;\n    void blend_stats_counter (int c, std::int64_t value, int ratio) ;\n    void set_value (int c, std::int64_t value) ;\n };\n 
    \n-\n-[report issue]
    \n-

    inc_stats_counter() operator[]()

    \n+\n+[report issue]
    \n+

    operator[]() inc_stats_counter()

    \n
    \n-std::int64_t inc_stats_counter (int c, std::int64_t value = 1) ;\n std::int64_t operator[] (int i) const ;\n+std::int64_t inc_stats_counter (int c, std::int64_t value = 1) ;\n 
    \n

    returns the new value

    \n [report issue]
    \n
    \n
    \n

    stats_metric

    \n

    Declared in "libtorrent/session_stats.hpp"

    \n@@ -12361,20 +12361,20 @@\n a single rule that allows all addresses (0.0.0.0 - 255.255.255.255 for\n the IPv4 range, and the equivalent range covering all addresses for the\n IPv6 range).

    \n

    A default constructed ip_filter does not filter any address.

    \n
    \n struct ip_filter\n {\n+   ip_filter& operator= (ip_filter const&);\n    ip_filter ();\n    ip_filter& operator= (ip_filter&&);\n-   ~ip_filter ();\n-   ip_filter (ip_filter&&);\n    ip_filter (ip_filter const&);\n-   ip_filter& operator= (ip_filter const&);\n+   ip_filter (ip_filter&&);\n+   ~ip_filter ();\n    bool empty () const;\n    void add_rule (address const& first, address const& last, std::uint32_t flags);\n    std::uint32_t access (address const& addr) const;\n    filter_tuple_t export_filter () const;\n \n    enum access_flags\n    {\n@@ -12459,19 +12459,19 @@\n is primarily used to indicate whether a range of ports should\n be connected to or not. The default is to have the full port\n range (0-65535) set to flag 0.

    \n
    \n class port_filter\n {\n    port_filter ();\n-   port_filter (port_filter&&);\n-   port_filter& operator= (port_filter&&);\n    port_filter (port_filter const&);\n+   port_filter (port_filter&&);\n    ~port_filter ();\n    port_filter& operator= (port_filter const&);\n+   port_filter& operator= (port_filter&&);\n    void add_rule (std::uint16_t first, std::uint16_t last, std::uint32_t flags);\n    std::uint32_t access (std::uint16_t port) const;\n \n    enum access_flags\n    {\n       blocked,\n    };\n@@ -12539,46 +12539,46 @@\n 

    The entry class represents one node in a bencoded hierarchy. It works as a\n variant type, it can be either a list, a dictionary (std::map), an integer\n or a string.

    \n
    \n class entry\n {\n    data_type type () const;\n+   entry (preformatted_type);\n    entry (dictionary_type);\n-   entry (integer_type);\n-   entry (list_type);\n    entry (span<char const>);\n-   entry (preformatted_type);\n+   entry (list_type);\n+   entry (integer_type);\n    entry (U v);\n    entry (data_type t);\n    entry (bdecode_node const& n);\n    entry& operator= (span<char const>) &;\n-   entry& operator= (entry&&) & noexcept;\n+   entry& operator= (bdecode_node const&) &;\n    entry& operator= (list_type) &;\n    entry& operator= (preformatted_type) &;\n-   entry& operator= (bdecode_node const&) &;\n-   entry& operator= (integer_type) &;\n-   entry& operator= (entry const&) &;\n    entry& operator= (dictionary_type) &;\n+   entry& operator= (entry const&) &;\n+   entry& operator= (integer_type) &;\n+   entry& operator= (entry&&) & noexcept;\n    entry& operator= (U v) &;\n    integer_type& integer ();\n-   integer_type const& integer () const;\n    string_type& string ();\n    dictionary_type& dict ();\n+   dictionary_type const& dict () const;\n    preformatted_type const& preformatted () const;\n    list_type& list ();\n    preformatted_type& preformatted ();\n-   string_type const& string () const;\n-   dictionary_type const& dict () const;\n    list_type const& list () const;\n+   integer_type const& integer () const;\n+   string_type const& string () const;\n    void swap (entry& e);\n-   entry& operator[] (string_view key);\n    entry const& operator[] (string_view key) const;\n-   entry const* find_key (string_view key) const;\n+   entry& operator[] (string_view key);\n    entry* find_key (string_view key);\n+   entry const* find_key (string_view key) const;\n    std::string to_string (bool single_line = false) const;\n \n    enum data_type\n    {\n       int_t,\n       string_t,\n       list_t,\n@@ -12594,19 +12594,19 @@\n data_type type () const;\n 
    \n

    returns the concrete type of the entry

    \n [report issue]
    \n
    \n

    entry()

    \n
    \n+entry (preformatted_type);\n entry (dictionary_type);\n-entry (integer_type);\n-entry (list_type);\n entry (span<char const>);\n-entry (preformatted_type);\n+entry (list_type);\n+entry (integer_type);\n 
    \n

    constructors directly from a specific type.\n The content of the argument is copied into the\n newly constructed entry

    \n [report issue]
    \n
    \n

    entry()

    \n@@ -12623,42 +12623,42 @@\n \n

    construct from bdecode_node parsed form (see bdecode())

    \n [report issue]
    \n
    \n

    operator=()

    \n
    \n entry& operator= (span<char const>) &;\n-entry& operator= (entry&&) & noexcept;\n+entry& operator= (bdecode_node const&) &;\n entry& operator= (list_type) &;\n entry& operator= (preformatted_type) &;\n-entry& operator= (bdecode_node const&) &;\n-entry& operator= (integer_type) &;\n-entry& operator= (entry const&) &;\n entry& operator= (dictionary_type) &;\n+entry& operator= (entry const&) &;\n+entry& operator= (integer_type) &;\n+entry& operator= (entry&&) & noexcept;\n 
    \n

    copies the structure of the right hand side into this\n entry.

    \n-\n-\n \n+\n \n-[report issue]
    \n-
    \n-

    dict() preformatted() integer() list() string()

    \n+\n+[report issue]
    \n+
    \n+

    integer() string() list() preformatted() dict()

    \n
    \n integer_type& integer ();\n-integer_type const& integer () const;\n string_type& string ();\n dictionary_type& dict ();\n+dictionary_type const& dict () const;\n preformatted_type const& preformatted () const;\n list_type& list ();\n preformatted_type& preformatted ();\n-string_type const& string () const;\n-dictionary_type const& dict () const;\n list_type const& list () const;\n+integer_type const& integer () const;\n+string_type const& string () const;\n 
    \n

    The integer(), string(), list() and dict() functions\n are accessors that return the respective type. If the entry object\n isn't of the type you request, the accessor will throw\n system_error. You can ask an entry for its type through the\n type() function.

    \n

    If you want to create an entry you give it the type you want it to\n@@ -12702,32 +12702,32 @@\n void swap (entry& e);\n \n

    swaps the content of this with e.

    \n [report issue]
    \n
    \n

    operator[]()

    \n
    \n-entry& operator[] (string_view key);\n entry const& operator[] (string_view key) const;\n+entry& operator[] (string_view key);\n 
    \n

    All of these functions requires the entry to be a dictionary, if it\n isn't they will throw system_error.

    \n

    The non-const versions of the operator[] will return a reference\n to either the existing element at the given key or, if there is no\n element with the given key, a reference to a newly inserted element at\n that key.

    \n

    The const version of operator[] will only return a reference to an\n existing element at the given key. If the key is not found, it will\n throw system_error.

    \n [report issue]
    \n
    \n

    find_key()

    \n
    \n-entry const* find_key (string_view key) const;\n entry* find_key (string_view key);\n+entry const* find_key (string_view key) const;\n 
    \n

    These functions requires the entry to be a dictionary, if it isn't\n they will throw system_error.

    \n

    They will look for an element at the given key in the dictionary, if\n the element cannot be found, they will return nullptr. If an element\n with the given key is found, the return a pointer to it.

    \n [report issue]
    \n@@ -12857,27 +12857,27 @@\n

    This class holds state for creating a torrent. After having added\n all information to it, call create_torrent::generate() to generate\n the torrent. The entry that's returned can then be bencoded into a\n .torrent file using bencode().

    \n
    \n struct create_torrent\n {\n-   explicit create_torrent (torrent_info const& ti);\n    explicit create_torrent (file_storage& fs, int piece_size = 0\n       , create_flags_t flags = {});\n-   entry generate () const;\n+   explicit create_torrent (torrent_info const& ti);\n    std::vector<char> generate_buf () const;\n+   entry generate () const;\n    file_storage const& files () const;\n    void set_comment (char const* str);\n    void set_creator (char const* str);\n    void set_creation_date (std::time_t timestamp);\n    void set_hash (piece_index_t index, sha1_hash const& h);\n    void set_hash2 (file_index_t file, piece_index_t::diff_type piece, sha256_hash const& h);\n-   void add_http_seed (string_view url);\n    void add_url_seed (string_view url);\n+   void add_http_seed (string_view url);\n    void add_node (std::pair<std::string, int> node);\n    void add_tracker (string_view url, int tier = 0);\n    void set_root_cert (string_view cert);\n    bool priv () const;\n    void set_priv (bool p);\n    bool is_v1_only () const;\n    bool is_v2_only () const;\n@@ -12901,17 +12901,17 @@\n    static constexpr create_flags_t no_attributes  = 8_bit;\n    static constexpr create_flags_t canonical_files_no_tail_padding  = 9_bit;\n };\n 
    \n [report issue]
    \n

    create_torrent()

    \n
    \n-explicit create_torrent (torrent_info const& ti);\n explicit create_torrent (file_storage& fs, int piece_size = 0\n       , create_flags_t flags = {});\n+explicit create_torrent (torrent_info const& ti);\n 
    \n

    The piece_size is the size of each piece in bytes. It must be a\n power of 2 and a minimum of 16 kiB. If a piece size of 0 is\n specified, a piece_size will be set automatically.

    \n

    The flags arguments specifies options for the torrent creation. It can\n be any combination of the flags defined by create_flags_t.

    \n

    The file_storage (fs) parameter defines the files, sizes and\n@@ -12925,21 +12925,21 @@\n have any affect. Instead of using this overload, consider using\n write_torrent_file() instead.

    \n
    \n

    Warning

    \n

    The file_storage and torrent_info objects must stay alive for the\n entire duration of the create_torrent object.

    \n
    \n-\n-[report issue]
    \n-
    \n-

    generate() generate_buf()

    \n+\n+[report issue]
    \n+
    \n+

    generate_buf() generate()

    \n
    \n-entry generate () const;\n std::vector<char> generate_buf () const;\n+entry generate () const;\n 
    \n

    This function will generate the .torrent file as a bencode tree, or a\n bencoded into a buffer.\n In order to encode the entry into a flat file, use the bencode() function.

    \n

    The function returning an entry may be useful to add custom entries\n to the torrent file before bencoding it and saving it to disk.

    \n

    Whether the resulting torrent object is v1, v2 or hybrid depends on\n@@ -13022,21 +13022,21 @@\n 16 kiB blocks. Note that piece sizes must be powers-of-2, so all\n per-piece merkle trees are complete.\n A SHA-256 hash of all zeros is internally used to indicate a hash\n that has not been set. Setting such hash will not be considered set\n when calling generate().\n This function will throw std::system_error if it is called on an\n object constructed with the v1_only flag.

    \n-\n-[report issue]
    \n-
    \n-

    add_url_seed() add_http_seed()

    \n+\n+[report issue]
    \n+
    \n+

    add_http_seed() add_url_seed()

    \n
    \n-void add_http_seed (string_view url);\n void add_url_seed (string_view url);\n+void add_http_seed (string_view url);\n 
    \n

    This adds a url seed to the torrent. You can have any number of url seeds. For a\n single file torrent, this should be an HTTP url, pointing to a file with identical\n content as the file of the torrent. For a multi-file torrent, it should point to\n a directory containing a directory with the same name as this torrent, and all the\n files of the torrent in it.

    \n

    The second function, add_http_seed() adds an HTTP seed instead.

    \n@@ -13232,29 +13232,29 @@\n

    The flags argument should be the same as the flags passed to the create_torrent\n constructor.

    \n [report issue]
    \n
    \n

    set_piece_hashes()

    \n

    Declared in "libtorrent/create_torrent.hpp"

    \n
    \n-inline void set_piece_hashes (create_torrent& t, std::string const& p, error_code& ec);\n-void set_piece_hashes (create_torrent& t, std::string const& p\n-   , settings_interface const& settings, disk_io_constructor_type disk_io\n-   , std::function<void(piece_index_t)> const& f, error_code& ec);\n void set_piece_hashes (create_torrent& t, std::string const& p\n    , settings_interface const& settings\n    , std::function<void(piece_index_t)> const& f, error_code& ec);\n-void set_piece_hashes (create_torrent& t, std::string const& p\n-   , std::function<void(piece_index_t)> const& f, error_code& ec);\n-inline void set_piece_hashes (create_torrent& t, std::string const& p\n-   , std::function<void(piece_index_t)> const& f);\n inline void set_piece_hashes (create_torrent& t, std::string const& p\n    , settings_interface const& settings\n    , std::function<void(piece_index_t)> const& f);\n inline void set_piece_hashes (create_torrent& t, std::string const& p);\n+inline void set_piece_hashes (create_torrent& t, std::string const& p, error_code& ec);\n+inline void set_piece_hashes (create_torrent& t, std::string const& p\n+   , std::function<void(piece_index_t)> const& f);\n+void set_piece_hashes (create_torrent& t, std::string const& p\n+   , settings_interface const& settings, disk_io_constructor_type disk_io\n+   , std::function<void(piece_index_t)> const& f, error_code& ec);\n+void set_piece_hashes (create_torrent& t, std::string const& p\n+   , std::function<void(piece_index_t)> const& f, error_code& ec);\n 
    \n

    This function will assume that the files added to the torrent file exists at path\n p, read those files and hash the content and set the hashes in the create_torrent\n object. The optional function f is called in between every hash that is set. f\n must have the following signature:

    \n
    \n void Fun(piece_index_t);\n@@ -13269,24 +13269,24 @@\n 

    Declared in "libtorrent/bitfield.hpp"

    \n

    The bitfield type stores any number of bits as a bitfield\n in a heap allocated array.

    \n
    \n struct bitfield\n {\n    bitfield (int bits, bool val);\n+   bitfield (bitfield&& rhs) noexcept = default;\n    bitfield () noexcept = default;\n    bitfield (char const* b, int bits);\n-   explicit bitfield (int bits);\n-   bitfield (bitfield&& rhs) noexcept = default;\n    bitfield (bitfield const& rhs);\n+   explicit bitfield (int bits);\n    void assign (char const* b, int const bits);\n    bool get_bit (int index) const noexcept;\n    bool operator[] (int index) const noexcept;\n-   void clear_bit (int index) noexcept;\n    void set_bit (int index) noexcept;\n+   void clear_bit (int index) noexcept;\n    bool all_set () const noexcept;\n    bool none_set () const noexcept;\n    int size () const noexcept;\n    int num_words () const noexcept;\n    bool empty () const noexcept;\n    char const* data () const noexcept;\n    char* data () noexcept;\n@@ -13296,19 +13296,19 @@\n    int find_last_clear () const noexcept;\n };\n 
    \n [report issue]
    \n

    bitfield()

    \n
    \n bitfield (int bits, bool val);\n+bitfield (bitfield&& rhs) noexcept = default;\n bitfield () noexcept = default;\n bitfield (char const* b, int bits);\n-explicit bitfield (int bits);\n-bitfield (bitfield&& rhs) noexcept = default;\n bitfield (bitfield const& rhs);\n+explicit bitfield (int bits);\n 
    \n

    constructs a new bitfield. The default constructor creates an empty\n bitfield. bits is the size of the bitfield (specified in bits).\n val is the value to initialize the bits to. If not specified\n all bits are initialized to 0.

    \n

    The constructor taking a pointer b and bits copies a bitfield\n from the specified buffer, and bits number of bits (rounded up to\n@@ -13317,30 +13317,30 @@\n

    \n

    assign()

    \n
    \n void assign (char const* b, int const bits);\n 
    \n

    copy bitfield from buffer b of bits number of bits, rounded up to\n the nearest byte boundary.

    \n-\n-[report issue]
    \n-
    \n-

    operator[]() get_bit()

    \n+\n+[report issue]
    \n+
    \n+

    get_bit() operator[]()

    \n
    \n bool get_bit (int index) const noexcept;\n bool operator[] (int index) const noexcept;\n 
    \n

    query bit at index. Returns true if bit is 1, otherwise false.

    \n-\n-[report issue]
    \n-
    \n-

    clear_bit() set_bit()

    \n+\n+[report issue]
    \n+
    \n+

    set_bit() clear_bit()

    \n
    \n-void clear_bit (int index) noexcept;\n void set_bit (int index) noexcept;\n+void clear_bit (int index) noexcept;\n 
    \n

    set bit at index to 0 (clear_bit) or 1 (set_bit).

    \n [report issue]
    \n
    \n

    all_set()

    \n
    \n bool all_set () const noexcept;\n@@ -13430,41 +13430,41 @@\n 

    The built-in software version of sha1-algorithm was implemented\n by Steve Reid and released as public domain.\n For more info, see src/sha1.cpp.

    \n
    \n class hasher\n {\n    hasher ();\n-   explicit hasher (span<char const> data);\n    hasher (hasher const&);\n-   hasher (char const* data, int len);\n    hasher& operator= (hasher const&) &;\n-   hasher& update (char const* data, int len);\n+   explicit hasher (span<char const> data);\n+   hasher (char const* data, int len);\n    hasher& update (span<char const> data);\n+   hasher& update (char const* data, int len);\n    sha1_hash final ();\n    void reset ();\n };\n 
    \n \n [report issue]
    \n

    operator=() hasher()

    \n
    \n-explicit hasher (span<char const> data);\n hasher (hasher const&);\n-hasher (char const* data, int len);\n hasher& operator= (hasher const&) &;\n+explicit hasher (span<char const> data);\n+hasher (char const* data, int len);\n 
    \n

    this is the same as default constructing followed by a call to\n update(data, len).

    \n [report issue]
    \n
    \n

    update()

    \n
    \n-hasher& update (char const* data, int len);\n hasher& update (span<char const> data);\n+hasher& update (char const* data, int len);\n 
    \n

    append the following bytes to what is being hashed

    \n [report issue]
    \n
    \n

    final()

    \n
    \n sha1_hash final ();\n@@ -13484,42 +13484,42 @@\n 
    \n

    hasher256

    \n

    Declared in "libtorrent/hasher.hpp"

    \n
    \n class hasher256\n {\n    hasher256 ();\n-   hasher256 (hasher256 const&);\n-   explicit hasher256 (span<char const> data);\n    hasher256 (char const* data, int len);\n+   explicit hasher256 (span<char const> data);\n+   hasher256 (hasher256 const&);\n    hasher256& operator= (hasher256 const&) &;\n-   hasher256& update (char const* data, int len);\n    hasher256& update (span<char const> data);\n+   hasher256& update (char const* data, int len);\n    sha256_hash final ();\n    void reset ();\n    ~hasher256 ();\n };\n 
    \n \n [report issue]
    \n

    operator=() hasher256()

    \n
    \n-hasher256 (hasher256 const&);\n-explicit hasher256 (span<char const> data);\n hasher256 (char const* data, int len);\n+explicit hasher256 (span<char const> data);\n+hasher256 (hasher256 const&);\n hasher256& operator= (hasher256 const&) &;\n 
    \n

    this is the same as default constructing followed by a call to\n update(data, len).

    \n [report issue]
    \n
    \n

    update()

    \n
    \n-hasher256& update (char const* data, int len);\n hasher256& update (span<char const> data);\n+hasher256& update (char const* data, int len);\n 
    \n

    append the following bytes to what is being hashed

    \n [report issue]
    \n
    \n

    final()

    \n
    \n sha256_hash final ();\n@@ -14203,19 +14203,19 @@\n 

    announce_entry

    \n

    Declared in "libtorrent/announce_entry.hpp"

    \n

    this class holds information about one bittorrent tracker, as it\n relates to a specific torrent.

    \n
    \n struct announce_entry\n {\n-   ~announce_entry ();\n-   announce_entry (announce_entry const&);\n+   announce_entry& operator= (announce_entry const&) &;\n    announce_entry ();\n+   announce_entry (announce_entry const&);\n    explicit announce_entry (string_view u);\n-   announce_entry& operator= (announce_entry const&) &;\n+   ~announce_entry ();\n \n    enum tracker_source\n    {\n       source_torrent,\n       source_client,\n       source_magnet_link,\n       source_tex,\n@@ -14231,19 +14231,19 @@\n };\n 
    \n \n \n [report issue]
    \n

    operator=() announce_entry() ~announce_entry()

    \n
    \n-~announce_entry ();\n-announce_entry (announce_entry const&);\n+announce_entry& operator= (announce_entry const&) &;\n announce_entry ();\n+announce_entry (announce_entry const&);\n explicit announce_entry (string_view u);\n-announce_entry& operator= (announce_entry const&) &;\n+~announce_entry ();\n 
    \n

    constructs a tracker announce entry with u as the URL.

    \n [report issue]
    \n
    \n

    enum tracker_source

    \n

    Declared in "libtorrent/announce_entry.hpp"

    \n
    \n@@ -18770,24 +18770,24 @@\n operations. This file size limit is specified in 16 kiB blocks.

    \n
    \n struct settings_pack final : settings_interface\n {\n    friend  void apply_pack_impl (settings_pack const*\n       , aux::session_settings_single_thread&\n       , std::vector<void(aux::session_impl::*)()>*);\n-   void set_str (int name, std::string val) override;\n    void set_int (int name, flags::bitfield_flag<Type, Tag> const val);\n-   void set_int (int name, int val) override;\n+   void set_str (int name, std::string val) override;\n    void set_bool (int name, bool val) override;\n+   void set_int (int name, int val) override;\n    bool has_val (int name) const override;\n    void clear ();\n    void clear (int name);\n+   int get_int (int name) const override;\n    std::string const& get_str (int name) const override;\n    bool get_bool (int name) const override;\n-   int get_int (int name) const override;\n    void for_each (Fun&& f) const;\n \n    enum type_bases\n    {\n       string_type_base,\n       int_type_base,\n       bool_type_base,\n@@ -18858,23 +18858,23 @@\n       socks5_pw,\n       http,\n       http_pw,\n       i2p_proxy,\n    };\n };\n 
    \n-\n+\n \n-[report issue]
    \n-

    set_bool() set_int() set_str()

    \n+[report issue]
    \n+

    set_str() set_int() set_bool()

    \n
    \n-void set_str (int name, std::string val) override;\n void set_int (int name, flags::bitfield_flag<Type, Tag> const val);\n-void set_int (int name, int val) override;\n+void set_str (int name, std::string val) override;\n void set_bool (int name, bool val) override;\n+void set_int (int name, int val) override;\n 
    \n

    set a configuration option in the settings_pack. name is one of\n the enum values from string_types, int_types or bool_types. They must\n match the respective type of the set_* function.

    \n [report issue]
    \n
    \n

    has_val()

    \n@@ -18894,23 +18894,23 @@\n [report issue]
    \n
    \n

    clear()

    \n
    \n void clear (int name);\n 
    \n

    clear a specific setting from the pack

    \n+\n \n-\n-[report issue]
    \n-
    \n-

    get_int() get_str() get_bool()

    \n+[report issue]
    \n+
    \n+

    get_bool() get_int() get_str()

    \n
    \n+int get_int (int name) const override;\n std::string const& get_str (int name) const override;\n bool get_bool (int name) const override;\n-int get_int (int name) const override;\n 
    \n

    queries the current configuration option from the settings_pack.\n name is one of the enumeration values from string_types, int_types\n or bool_types. The enum value must match the type of the get_*\n function. If the specified setting field has not been set, the default\n value is returned.

    \n [report issue]
    \n@@ -19331,18 +19331,18 @@\n
    \n \n \n
    Tribler
    \n

    There's an informal directory of client id's here.

    \n

    The major, minor, revision and tag parameters are used to\n identify the version of your client.

    \n-\n-[report issue]
    \n-
    \n-

    min_memory_usage() high_performance_seed()

    \n+\n+[report issue]
    \n+
    \n+

    high_performance_seed() min_memory_usage()

    \n

    Declared in "libtorrent/session.hpp"

    \n
    \n settings_pack min_memory_usage ();\n settings_pack high_performance_seed ();\n 
    \n

    The default values of the session settings are set for a regular\n bittorrent client running on a desktop system. There are functions that\n@@ -19391,45 +19391,45 @@\n to be able to copy it as a reference for instance). For that, use the\n non_owning() member function.

    \n

    There are 5 different types of nodes, see type_t.

    \n
    \n struct bdecode_node\n {\n    bdecode_node () = default;\n-   bdecode_node (bdecode_node const&);\n    bdecode_node& operator= (bdecode_node&&) & = default;\n-   bdecode_node& operator= (bdecode_node const&) &;\n    bdecode_node (bdecode_node&&) noexcept;\n+   bdecode_node& operator= (bdecode_node const&) &;\n+   bdecode_node (bdecode_node const&);\n    type_t type () const noexcept;\n    explicit operator bool () const noexcept;\n    bdecode_node non_owning () const;\n-   span<char const> data_section () const noexcept;\n    std::ptrdiff_t data_offset () const noexcept;\n+   span<char const> data_section () const noexcept;\n    std::int64_t list_int_value_at (int i\n       , std::int64_t default_val = 0) const;\n+   bdecode_node list_at (int i) const;\n    int list_size () const;\n    string_view list_string_value_at (int i\n       , string_view default_val = string_view()) const;\n-   bdecode_node list_at (int i) const;\n+   std::pair<string_view, bdecode_node> dict_at (int i) const;\n+   bdecode_node dict_find_int (string_view key) const;\n    bdecode_node dict_find_list (string_view key) const;\n+   std::pair<bdecode_node, bdecode_node> dict_at_node (int i) const;\n+   bdecode_node dict_find (string_view key) const;\n    string_view dict_find_string_value (string_view key\n       , string_view default_value = string_view()) const;\n-   bdecode_node dict_find_int (string_view key) const;\n-   std::pair<bdecode_node, bdecode_node> dict_at_node (int i) const;\n    std::int64_t dict_find_int_value (string_view key\n       , std::int64_t default_val = 0) const;\n-   bdecode_node dict_find (string_view key) const;\n+   int dict_size () const;\n    bdecode_node dict_find_dict (string_view key) const;\n    bdecode_node dict_find_string (string_view key) const;\n-   int dict_size () const;\n-   std::pair<string_view, bdecode_node> dict_at (int i) const;\n    std::int64_t int_value () const;\n-   string_view string_value () const;\n    std::ptrdiff_t string_offset () const;\n    int string_length () const;\n+   string_view string_value () const;\n    char const* string_ptr () const;\n    void clear ();\n    void swap (bdecode_node& n);\n    void reserve (int tokens);\n    void switch_underlying_buffer (char const* buf) noexcept;\n    bool has_soft_error (span<char> error) const;\n \n@@ -19450,18 +19450,18 @@\n 
    \n

    creates a default constructed node, it will have the type none_t.

    \n \n [report issue]
    \n
    \n

    bdecode_node() operator=()

    \n
    \n-bdecode_node (bdecode_node const&);\n bdecode_node& operator= (bdecode_node&&) & = default;\n-bdecode_node& operator= (bdecode_node const&) &;\n bdecode_node (bdecode_node&&) noexcept;\n+bdecode_node& operator= (bdecode_node const&) &;\n+bdecode_node (bdecode_node const&);\n 
    \n

    For owning nodes, the copy will create a copy of the tree, but the\n underlying buffer remains the same.

    \n [report issue]
    \n
    \n

    type()

    \n
    \n@@ -19484,66 +19484,66 @@\n 

    return a non-owning reference to this node. This is useful to refer to\n the root node without copying it in assignments.

    \n \n [report issue]
    \n
    \n

    data_section() data_offset()

    \n
    \n-span<char const> data_section () const noexcept;\n std::ptrdiff_t data_offset () const noexcept;\n+span<char const> data_section () const noexcept;\n 
    \n

    returns the buffer and length of the section in the original bencoded\n buffer where this node is defined. For a dictionary for instance, this\n starts with d and ends with e, and has all the content of the\n dictionary in between.\n the data_offset() function returns the byte-offset to this node in,\n starting from the beginning of the buffer that was parsed.

    \n \n+\n \n-\n-[report issue]
    \n-
    \n-

    list_at() list_int_value_at() list_size() list_string_value_at()

    \n+[report issue]
    \n+
    \n+

    list_at() list_string_value_at() list_int_value_at() list_size()

    \n
    \n std::int64_t list_int_value_at (int i\n       , std::int64_t default_val = 0) const;\n+bdecode_node list_at (int i) const;\n int list_size () const;\n string_view list_string_value_at (int i\n       , string_view default_val = string_view()) const;\n-bdecode_node list_at (int i) const;\n 
    \n

    functions with the list_ prefix operate on lists. These functions are\n only valid if type() == list_t. list_at() returns the item\n in the list at index i. i may not be greater than or equal to the\n size of the list. size() returns the size of the list.

    \n-\n \n-\n-\n-\n+\n+\n+\n \n+\n+\n \n-\n-\n-[report issue]
    \n-
    \n-

    dict_find_int_value() dict_find() dict_size() dict_find_string() dict_find_int() dict_at() dict_find_list() dict_find_string_value() dict_find_dict() dict_at_node()

    \n+\n+[report issue]
    \n+
    \n+

    dict_find() dict_at_node() dict_find_int_value() dict_find_string_value() dict_at() dict_find_string() dict_size() dict_find_list() dict_find_int() dict_find_dict()

    \n
    \n+std::pair<string_view, bdecode_node> dict_at (int i) const;\n+bdecode_node dict_find_int (string_view key) const;\n bdecode_node dict_find_list (string_view key) const;\n+std::pair<bdecode_node, bdecode_node> dict_at_node (int i) const;\n+bdecode_node dict_find (string_view key) const;\n string_view dict_find_string_value (string_view key\n       , string_view default_value = string_view()) const;\n-bdecode_node dict_find_int (string_view key) const;\n-std::pair<bdecode_node, bdecode_node> dict_at_node (int i) const;\n std::int64_t dict_find_int_value (string_view key\n       , std::int64_t default_val = 0) const;\n-bdecode_node dict_find (string_view key) const;\n+int dict_size () const;\n bdecode_node dict_find_dict (string_view key) const;\n bdecode_node dict_find_string (string_view key) const;\n-int dict_size () const;\n-std::pair<string_view, bdecode_node> dict_at (int i) const;\n 
    \n

    Functions with the dict_ prefix operates on dictionaries. They are\n only valid if type() == dict_t. In case a key you're looking up\n contains a 0 byte, you cannot use the 0-terminated string overloads,\n but have to use string_view instead. dict_find_list will return a\n valid bdecode_node if the key is found _and_ it is a list. Otherwise\n it will return a default-constructed bdecode_node.

    \n@@ -19558,24 +19558,24 @@\n
    \n

    int_value()

    \n
    \n std::int64_t int_value () const;\n 
    \n

    this function is only valid if type() == int_t. It returns the\n value of the integer.

    \n-\n \n \n-[report issue]
    \n-
    \n-

    string_length() string_ptr() string_offset() string_value()

    \n+\n+[report issue]
    \n+
    \n+

    string_ptr() string_offset() string_length() string_value()

    \n
    \n-string_view string_value () const;\n std::ptrdiff_t string_offset () const;\n int string_length () const;\n+string_view string_value () const;\n char const* string_ptr () const;\n 
    \n

    these functions are only valid if type() == string_t. They return\n the string values. Note that string_ptr() is not 0-terminated.\n string_length() returns the number of bytes in the string.\n string_offset() returns the byte offset from the start of the parsed\n bencoded buffer this string can be found.

    \n@@ -20014,22 +20014,22 @@\n
    Specify the port number for the SSL listen socket in the DHT announce.
    \n \n [report issue]
    \n
    \n

    read_resume_data()

    \n

    Declared in "libtorrent/read_resume_data.hpp"

    \n
    \n-add_torrent_params read_resume_data (span<char const> buffer\n-   , load_torrent_limits const& cfg = {});\n add_torrent_params read_resume_data (bdecode_node const& rd\n    , int piece_limit = 0x200000);\n add_torrent_params read_resume_data (span<char const> buffer\n-   , error_code& ec, load_torrent_limits const& cfg = {});\n+   , load_torrent_limits const& cfg = {});\n add_torrent_params read_resume_data (bdecode_node const& rd\n    , error_code& ec, int piece_limit = 0x200000);\n+add_torrent_params read_resume_data (span<char const> buffer\n+   , error_code& ec, load_torrent_limits const& cfg = {});\n 
    \n

    these functions are used to parse resume data and populate the appropriate\n fields in an add_torrent_params object. This object can then be used to add\n the actual torrent_info object to and pass to session::add_torrent() or\n session::async_add_torrent().

    \n

    If the client wants to override any field that was loaded from the resume\n data, e.g. save_path, those fields must be changed after loading resume\n@@ -20037,35 +20037,35 @@\n

    The piece_limit parameter determines the largest number of pieces\n allowed in the torrent that may be loaded as part of the resume data, if\n it contains an info field. The overloads that take a flat buffer are\n instead configured with limits on torrent sizes via load_torrent limits.

    \n

    In order to support large torrents, it may also be necessary to raise the\n settings_pack::max_piece_count setting and pass a higher limit to calls\n to torrent_info::parse_info_section().

    \n-\n-[report issue]
    \n-
    \n-

    write_resume_data_buf() write_resume_data()

    \n+\n+[report issue]
    \n+
    \n+

    write_resume_data() write_resume_data_buf()

    \n

    Declared in "libtorrent/write_resume_data.hpp"

    \n
    \n std::vector<char> write_resume_data_buf (add_torrent_params const& atp);\n entry write_resume_data (add_torrent_params const& atp);\n 
    \n

    this function turns the resume data in an add_torrent_params object\n into a bencoded structure

    \n \n [report issue]
    \n
    \n

    write_torrent_file_buf() write_torrent_file()

    \n

    Declared in "libtorrent/write_resume_data.hpp"

    \n
    \n+entry write_torrent_file (add_torrent_params const& atp, write_torrent_flags_t flags);\n std::vector<char> write_torrent_file_buf (add_torrent_params const& atp\n    , write_torrent_flags_t flags);\n entry write_torrent_file (add_torrent_params const& atp);\n-entry write_torrent_file (add_torrent_params const& atp, write_torrent_flags_t flags);\n 
    \n

    writes only the fields to create a .torrent file. This function may fail\n with a std::system_error exception if:

    \n
      \n
    • The add_torrent_params object passed to this function does not contain the\n info dictionary (the ti field)
    • \n
    • The piece layers are not complete for all files that need them
    • \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -27,108 +27,108 @@\n * enum_socks_error_code\n * enum_pcp_errors\n * enum_error_code_enum\n * session_params\n o session_params()\n o session_params()\n * session_proxy\n- o ~session_proxy()_operator=()_session_proxy()\n+ o operator=()_session_proxy()_~session_proxy()\n * session\n o session()\n o session()\n o ~session()\n o abort()\n * session_handle\n o is_valid()\n o session_state()\n- o refresh_torrent_status()_get_torrent_status()\n+ o get_torrent_status()_refresh_torrent_status()\n o post_torrent_updates()\n o post_session_stats()\n o post_dht_stats()\n o set_dht_state()\n- o find_torrent()_get_torrents()\n- o async_add_torrent()_add_torrent()\n- o resume()_is_paused()_pause()\n+ o get_torrents()_find_torrent()\n+ o add_torrent()_async_add_torrent()\n+ o resume()_pause()_is_paused()\n o is_dht_running()\n o set_dht_storage()\n o add_dht_node()\n o dht_get_item()\n o dht_get_item()\n o dht_put_item()\n o dht_put_item()\n- o dht_announce()_dht_get_peers()\n+ o dht_get_peers()_dht_announce()\n o dht_live_nodes()\n o dht_sample_infohashes()\n o dht_direct_request()\n o add_extension()\n o set_ip_filter()_get_ip_filter()\n o set_port_filter()\n- o listen_port()_ssl_listen_port()_is_listening()\n- o get_peer_class_filter()_set_peer_class_filter()\n+ o is_listening()_listen_port()_ssl_listen_port()\n+ o set_peer_class_filter()_get_peer_class_filter()\n o get_peer_class_type_filter()_set_peer_class_type_filter()\n o create_peer_class()\n o delete_peer_class()\n- o set_peer_class()_get_peer_class()\n+ o get_peer_class()_set_peer_class()\n o remove_torrent()\n o apply_settings()_get_settings()\n- o set_alert_notify()_wait_for_alert()_pop_alerts()\n- o delete_port_mapping()_add_port_mapping()\n+ o pop_alerts()_set_alert_notify()_wait_for_alert()\n+ o add_port_mapping()_delete_port_mapping()\n o reopen_network_sockets()\n o native_handle()\n- * write_session_params()_read_session_params()_write_session_params_buf()\n+ * read_session_params()_write_session_params_buf()_write_session_params()\n * web_seed_entry\n o operator==()\n o operator<()\n o enum_type_t\n * load_torrent_limits\n * torrent_info\n o torrent_info()\n o ~torrent_info()\n- o files()_orig_files()\n+ o orig_files()_files()\n o rename_file()\n o remap_files()\n- o trackers()_add_tracker()_clear_trackers()\n- o collections()_similar_torrents()\n- o set_web_seeds()_add_url_seed()_web_seeds()_add_http_seed()\n+ o trackers()_clear_trackers()_add_tracker()\n+ o similar_torrents()_collections()\n+ o set_web_seeds()_web_seeds()_add_http_seed()_add_url_seed()\n o total_size()\n o piece_length()_num_pieces()\n- o end_piece()_piece_range()_last_piece()\n+ o last_piece()_end_piece()_piece_range()\n o info_hashes()_info_hash()\n- o v2()_v1()\n+ o v1()_v2()\n o num_files()\n o map_block()\n o map_file()\n o ssl_cert()\n o is_valid()\n o priv()\n o is_i2p()\n o piece_size()\n- o hash_for_piece()_hash_for_piece_ptr()\n+ o hash_for_piece_ptr()_hash_for_piece()\n o name()\n o creation_date()\n o creator()\n o comment()\n o nodes()\n o add_node()\n o parse_info_section()\n o info()\n o info_section()\n o piece_layer()\n o free_piece_layers()\n * peer_info\n * info_hash_t\n o info_hash_t()\n- o has_v1()_has()_has_v2()\n+ o has_v1()_has_v2()_has()\n o get()\n o get_best()\n o for_each()\n * piece_block\n * peer_request\n o operator==()\n- * load_torrent_parsed()_load_torrent_file()_load_torrent_buffer()\n+ * load_torrent_file()_load_torrent_parsed()_load_torrent_buffer()\n * make_magnet_uri()\n * parse_magnet_uri()\n * truncate_files()\n * version()\n * enum_socket_type_t\n * enum_protocol_version\n * enum_portmap_transport\n@@ -155,31 +155,31 @@\n o on_tick()\n o get_unchoke_priority()\n o load_state()\n * torrent_plugin\n o new_connection()\n o on_piece_pass()_on_piece_failed()\n o tick()\n- o on_pause()_on_resume()\n+ o on_resume()_on_pause()\n o on_files_checked()\n o on_state()\n o on_add_peer()\n * peer_plugin\n o type()\n o add_handshake()\n o on_disconnect()\n o on_connected()\n o on_handshake()\n o on_extension_handshake()\n- o on_have()_on_unchoke()_on_dont_have()_on_request()_on_have_none()\n- on_have_all()_on_allowed_fast()_on_choke()_on_interested()\n- on_not_interested()_on_bitfield()\n+ o on_have_none()_on_allowed_fast()_on_dont_have()_on_have_all()\n+ on_not_interested()_on_unchoke()_on_interested()_on_choke()_on_have\n+ ()_on_request()_on_bitfield()\n o on_piece()\n- o sent_interested()_sent_unchoke()_sent_have()_sent_not_interested()\n- sent_piece()\n+ o sent_not_interested()_sent_unchoke()_sent_piece()_sent_interested()\n+ sent_have()\n o sent_payload()\n o can_disconnect()\n o on_extended()\n o on_unknown_message()\n o on_piece_pass()_on_piece_failed()\n o tick()\n o write_request()\n@@ -190,123 +190,123 @@\n * create_ut_pex_plugin()\n * create_smart_ban_plugin()\n * create_ut_metadata_plugin()\n * file_slice\n * file_storage\n o is_valid()\n o reserve()\n- o add_file()_add_file_borrow()\n+ o add_file_borrow()_add_file()\n o rename_file()\n o map_block()\n o map_file()\n o num_files()\n o end_file()\n o file_range()\n o total_size()\n o set_num_pieces()_num_pieces()\n o end_piece()\n o last_piece()\n o piece_range()\n- o piece_length()_set_piece_length()\n+ o set_piece_length()_piece_length()\n o piece_size()\n o piece_size2()\n o blocks_in_piece2()\n- o set_name()_name()\n+ o name()_set_name()\n o swap()\n o canonicalize()\n- o file_name()_file_size()_root_ptr()_symlink()_pad_file_at()_root()\n- file_offset()_hash()_mtime()_file_path()\n- o file_num_pieces()_file_num_blocks()_file_piece_range()\n- o file_first_block_node()_file_first_piece_node()\n+ o mtime()_file_name()_file_offset()_file_size()_file_path()_root()\n+ symlink()_pad_file_at()_root_ptr()_hash()\n+ o file_piece_range()_file_num_pieces()_file_num_blocks()\n+ o file_first_piece_node()_file_first_block_node()\n o file_path_hash()\n o all_path_hashes()\n o file_flags()\n o file_absolute_path()\n- o file_index_at_offset()_file_index_at_piece()\n+ o file_index_at_piece()_file_index_at_offset()\n o file_index_for_root()\n o piece_index_at_file()\n o sanitize_symlinks()\n o v2()\n * storage_params\n * disabled_disk_io_constructor()\n * mmap_disk_io_constructor()\n * posix_disk_io_constructor()\n * default_disk_io_constructor()\n * enum_storage_mode_t\n * enum_status_t\n * enum_move_flags_t\n * client_data_t\n o client_data_t()\n- o const*()_operator=()_void*()\n+ o void*()_operator=()_const*()\n * add_torrent_params\n * peer_class_info\n * peer_class_type_filter\n- o remove()_add()\n+ o add()_remove()\n o disallow()_allow()\n o apply()\n o enum_socket_type_t\n * block_info\n- o set_peer()_peer()\n+ o peer()_set_peer()\n o enum_block_state_t\n * partial_piece_info\n * torrent_handle\n o torrent_handle()\n o add_piece()\n o read_piece()\n o have_piece()\n o get_peer_info()\n o status()\n o get_download_queue()\n- o clear_piece_deadlines()_reset_piece_deadline()_set_piece_deadline()\n+ o set_piece_deadline()_clear_piece_deadlines()_reset_piece_deadline()\n o file_progress()\n o file_status()\n o clear_error()\n- o replace_trackers()_trackers()_add_tracker()\n- o url_seeds()_add_url_seed()_remove_url_seed()\n- o remove_http_seed()_http_seeds()_add_http_seed()\n+ o trackers()_replace_trackers()_add_tracker()\n+ o url_seeds()_remove_url_seed()_add_url_seed()\n+ o http_seeds()_add_http_seed()_remove_http_seed()\n o add_extension()\n o set_metadata()\n o is_valid()\n o resume()_pause()\n o unset_flags()_set_flags()_flags()\n o flush_cache()\n o force_recheck()\n o save_resume_data()\n o need_save_resume_data()\n- o queue_position_up()_queue_position_down()_queue_position_top()\n- queue_position_bottom()_queue_position()\n+ o queue_position()_queue_position_up()_queue_position_bottom()\n+ queue_position_down()_queue_position_top()\n o queue_position_set()\n- o set_ssl_certificate_buffer()_set_ssl_certificate()\n- o torrent_file()_torrent_file_with_hashes()\n+ o set_ssl_certificate()_set_ssl_certificate_buffer()\n+ o torrent_file_with_hashes()_torrent_file()\n o piece_layers()\n o piece_availability()\n o piece_priority()_prioritize_pieces()_get_piece_priorities()\n o get_file_priorities()_prioritize_files()_file_priority()\n- o force_dht_announce()_force_lsd_announce()_force_reannounce()\n+ o force_lsd_announce()_force_reannounce()_force_dht_announce()\n o scrape_tracker()\n o upload_limit()_set_download_limit()_set_upload_limit()\n download_limit()\n o connect_peer()\n o clear_peers()\n o set_max_uploads()_max_uploads()\n- o max_connections()_set_max_connections()\n+ o set_max_connections()_max_connections()\n o move_storage()\n o rename_file()\n o info_hashes()_info_hash()\n- o operator<()_operator!=()_operator==()\n+ o operator==()_operator!=()_operator<()\n o id()\n o native_handle()\n o userdata()\n o in_session()\n * hash_value()\n * open_file_state\n * disk_interface\n o new_torrent()\n o remove_torrent()\n- o async_write()_async_read()\n+ o async_read()_async_write()\n o async_hash()\n o async_hash2()\n o async_move_storage()\n o async_release_files()\n o async_check_files()\n o async_stop_torrent()\n o async_rename_file()\n@@ -345,15 +345,15 @@\n * peer_alert\n * tracker_alert\n o tracker_url()\n * torrent_removed_alert\n * read_piece_alert\n * file_completed_alert\n * file_renamed_alert\n- o old_name()_new_name()\n+ o new_name()_old_name()\n * file_rename_failed_alert\n * performance_alert\n o enum_performance_warning_t\n * state_changed_alert\n * tracker_error_alert\n o failure_reason()\n * tracker_warning_alert\n@@ -377,15 +377,15 @@\n * piece_finished_alert\n * request_dropped_alert\n * block_timeout_alert\n * block_finished_alert\n * block_downloading_alert\n * unwanted_block_alert\n * storage_moved_alert\n- o old_path()_storage_path()\n+ o storage_path()_old_path()\n * storage_moved_failed_alert\n o file_path()\n * torrent_deleted_alert\n * torrent_delete_failed_alert\n * save_resume_data_alert\n * save_resume_data_failed_alert\n * torrent_paused_alert\n@@ -450,33 +450,33 @@\n o pkt_buf()\n o enum_direction_t\n * dht_get_peers_reply_alert\n * dht_direct_response_alert\n * picker_log_alert\n * session_error_alert\n * dht_live_nodes_alert\n- o num_nodes()_nodes()\n+ o nodes()_num_nodes()\n * session_stats_header_alert\n * dht_sample_infohashes_alert\n- o num_samples()_samples()\n+ o samples()_num_samples()\n o num_nodes()\n o nodes()\n * block_uploaded_alert\n * alerts_dropped_alert\n * socks5_alert\n * file_prio_alert\n * oversized_file_alert\n * torrent_conflict_alert\n * alert_cast()\n * operation_name()\n * enum_operation_t\n * alert_category_t\n * int\n * counters\n- o inc_stats_counter()_operator[]()\n+ o operator[]()_inc_stats_counter()\n * stats_metric\n * session_stats_metrics()\n * find_metric_idx()\n * enum_metric_type_t\n * ip_filter\n o empty()\n o add_rule()\n@@ -489,32 +489,32 @@\n o enum_access_flags\n * entry\n o type()\n o entry()\n o entry()\n o entry()\n o operator=()\n- o dict()_preformatted()_integer()_list()_string()\n+ o integer()_string()_list()_preformatted()_dict()\n o swap()\n o operator[]()\n o find_key()\n o to_string()\n o enum_data_type\n * operator<<()\n * bencode()\n * create_torrent\n o create_torrent()\n- o generate()_generate_buf()\n+ o generate_buf()_generate()\n o files()\n o set_comment()\n o set_creator()\n o set_creation_date()\n o set_hash()\n o set_hash2()\n- o add_url_seed()_add_http_seed()\n+ o add_http_seed()_add_url_seed()\n o add_node()\n o add_tracker()\n o set_root_cert()\n o priv()_set_priv()\n o num_pieces()\n o piece_range()\n o file_range()\n@@ -523,16 +523,16 @@\n o piece_size()_piece_length()\n o add_similar_torrent()_add_collection()\n * add_files()\n * set_piece_hashes()\n * bitfield\n o bitfield()\n o assign()\n- o operator[]()_get_bit()\n- o clear_bit()_set_bit()\n+ o get_bit()_operator[]()\n+ o set_bit()_clear_bit()\n o all_set()\n o none_set()\n o size()\n o num_words()\n o empty()\n o data()\n o swap()\n@@ -554,46 +554,46 @@\n o enum_state_t\n * announce_infohash\n * announce_endpoint\n * announce_entry\n o operator=()_announce_entry()_~announce_entry()\n o enum_tracker_source\n * settings_pack\n- o set_bool()_set_int()_set_str()\n+ o set_str()_set_int()_set_bool()\n o has_val()\n o clear()\n o clear()\n- o get_int()_get_str()_get_bool()\n+ o get_bool()_get_int()_get_str()\n o enum_type_bases\n o enum_mmap_write_mode_t\n o enum_suggest_mode_t\n o enum_choking_algorithm_t\n o enum_seed_choking_algorithm_t\n o enum_io_buffer_mode_t\n o enum_bandwidth_mixed_algo_t\n o enum_enc_policy\n o enum_enc_level\n o enum_proxy_type_t\n * generate_fingerprint()\n- * min_memory_usage()_high_performance_seed()\n+ * high_performance_seed()_min_memory_usage()\n * name_for_setting()_setting_by_name()\n * default_settings()\n * bdecode_node\n o bdecode_node()\n o bdecode_node()_operator=()\n o type()\n o bool()\n o non_owning()\n o data_section()_data_offset()\n- o list_at()_list_int_value_at()_list_size()_list_string_value_at()\n- o dict_find_int_value()_dict_find()_dict_size()_dict_find_string()\n- dict_find_int()_dict_at()_dict_find_list()_dict_find_string_value()\n- dict_find_dict()_dict_at_node()\n+ o list_at()_list_string_value_at()_list_int_value_at()_list_size()\n+ o dict_find()_dict_at_node()_dict_find_int_value()\n+ dict_find_string_value()_dict_at()_dict_find_string()_dict_size()\n+ dict_find_list()_dict_find_int()_dict_find_dict()\n o int_value()\n- o string_length()_string_ptr()_string_offset()_string_value()\n+ o string_ptr()_string_offset()_string_length()_string_value()\n o clear()\n o swap()\n o reserve()\n o switch_underlying_buffer()\n o has_soft_error()\n o enum_type_t\n * print_entry()\n@@ -613,15 +613,15 @@\n o get_infohashes_sample()\n o tick()\n o counters()\n * sign_mutable_item()\n * dht_default_storage_constructor()\n * announce_flags_t\n * read_resume_data()\n- * write_resume_data_buf()_write_resume_data()\n+ * write_resume_data()_write_resume_data_buf()\n * write_torrent_file_buf()_write_torrent_file()\n * write_torrent_flags_t\n * ed25519_create_seed()\n * ed25519_create_keypair()\n * ed25519_sign()\n * ed25519_verify()\n * ed25519_add_scalar()\n@@ -1234,18 +1234,18 @@\n The session_params is a parameters pack for configuring the session before it's\n started.\n struct session_params\n {\n session_params (settings_pack const& sp);\n session_params (settings_pack&& sp);\n session_params ();\n- session_params (settings_pack&& sp\n- , std::vector> exts);\n session_params (settings_pack const& sp\n , std::vector> exts);\n+ session_params (settings_pack&& sp\n+ , std::vector> exts);\n \n settings_pack settings;\n std::vector> extensions;\n dht::dht_state dht_state;\n dht::dht_storage_constructor_type dht_storage_constructor;\n disk_io_constructor_type disk_io_constructor;\n std::map ext_state;\n@@ -1257,18 +1257,18 @@\n session_params (settings_pack&& sp);\n session_params ();\n This constructor can be used to start with the default plugins (ut_metadata,\n ut_pex and smart_ban). Pass a settings_pack to set the initial settings when\n the session starts.\n [report_issue]\n ***** session_params() *****\n-session_params (settings_pack&& sp\n- , std::vector> exts);\n session_params (settings_pack const& sp\n , std::vector> exts);\n+session_params (settings_pack&& sp\n+ , std::vector> exts);\n This constructor helps to configure the set of initial plugins to be added to\n the session before it's started.\n [report_issue]\n settings\n The settings to configure the session with\n [report_issue]\n extensions\n@@ -1300,28 +1300,28 @@\n the completion of the shutdown. The lifetime of this object may outlive\n session, causing the session destructor to not block. The session_proxy\n destructor will block however, until the underlying session is done shutting\n down.\n struct session_proxy\n {\n session_proxy (session_proxy const&);\n- session_proxy& operator= (session_proxy const&) &;\n- ~session_proxy ();\n- session_proxy& operator= (session_proxy&&) & noexcept;\n session_proxy (session_proxy&&) noexcept;\n+ session_proxy& operator= (session_proxy&&) & noexcept;\n+ ~session_proxy ();\n session_proxy ();\n+ session_proxy& operator= (session_proxy const&) &;\n };\n [report_issue]\n-***** ~session_proxy() operator=() session_proxy() *****\n+***** operator=() session_proxy() ~session_proxy() *****\n session_proxy (session_proxy const&);\n-session_proxy& operator= (session_proxy const&) &;\n-~session_proxy ();\n-session_proxy& operator= (session_proxy&&) & noexcept;\n session_proxy (session_proxy&&) noexcept;\n+session_proxy& operator= (session_proxy&&) & noexcept;\n+~session_proxy ();\n session_proxy ();\n+session_proxy& operator= (session_proxy const&) &;\n default constructor, does not refer to any session implementation object.\n [report_issue]\n ****** session ******\n Declared in \"libtorrent/session.hpp\"\n The session holds all state that spans multiple torrents. Among other things it\n runs the network loop and manages all torrents. Once it's created, the session\n object will spawn the main thread that will do all the work. The main thread\n@@ -1329,47 +1329,47 @@\n You have some control over session configuration through the session_handle::\n apply_settings() member function. To change one or more configuration options,\n create a settings_pack. object and fill it with the settings to be set and pass\n it in to session::apply_settings().\n see apply_settings().\n struct session : session_handle\n {\n- session ();\n- session (session_params&& params, session_flags_t flags);\n- session (session_params const& params, session_flags_t flags);\n explicit session (session_params&& params);\n explicit session (session_params const& params);\n- session (session_params const& params, io_context& ios, session_flags_t);\n- session (session_params const& params, io_context& ios);\n- session (session_params&& params, io_context& ios, session_flags_t);\n+ session ();\n+ session (session_params const& params, session_flags_t flags);\n+ session (session_params&& params, session_flags_t flags);\n session (session_params&& params, io_context& ios);\n+ session (session_params&& params, io_context& ios, session_flags_t);\n+ session (session_params const& params, io_context& ios);\n+ session (session_params const& params, io_context& ios, session_flags_t);\n ~session ();\n session_proxy abort ();\n };\n [report_issue]\n ***** session() *****\n-session ();\n-session (session_params&& params, session_flags_t flags);\n-session (session_params const& params, session_flags_t flags);\n explicit session (session_params&& params);\n explicit session (session_params const& params);\n+session ();\n+session (session_params const& params, session_flags_t flags);\n+session (session_params&& params, session_flags_t flags);\n Constructs the session objects which acts as the container of torrents. In\n order to avoid a race condition between starting the session and configuring\n it, you can pass in a session_params object. Its settings will take effect\n before the session starts up.\n The overloads taking flags can be used to start a session in paused mode (by\n passing in session::paused). Note that add_default_plugins do not have an\n affect on constructors that take a session_params object. It already contains\n the plugins to use.\n [report_issue]\n ***** session() *****\n-session (session_params const& params, io_context& ios, session_flags_t);\n-session (session_params const& params, io_context& ios);\n-session (session_params&& params, io_context& ios, session_flags_t);\n session (session_params&& params, io_context& ios);\n+session (session_params&& params, io_context& ios, session_flags_t);\n+session (session_params const& params, io_context& ios);\n+session (session_params const& params, io_context& ios, session_flags_t);\n Overload of the constructor that takes an external io_context to run the\n session object on. This is primarily useful for tests that may want to run\n multiple sessions on a single io_context, or low resource systems where\n additional threads are expensive and sharing an io_context with other events is\n fine.\n Warning\n The session object does not cleanly terminate with an external io_context. The\n@@ -1409,36 +1409,36 @@\n operation on it will throw a system_error exception, with error code\n invalid_session_handle.\n struct session_handle\n {\n bool is_valid () const;\n session_params session_state (save_state_flags_t flags =\n save_state_flags_t::all()) const;\n- void refresh_torrent_status (std::vector* ret\n- , status_flags_t flags = {}) const;\n std::vector get_torrent_status (\n std::function const& pred\n , status_flags_t flags = {}) const;\n+ void refresh_torrent_status (std::vector* ret\n+ , status_flags_t flags = {}) const;\n void post_torrent_updates (status_flags_t flags = status_flags_t::all());\n void post_session_stats ();\n void post_dht_stats ();\n void set_dht_state (dht::dht_state const& st);\n void set_dht_state (dht::dht_state&& st);\n- torrent_handle find_torrent (sha1_hash const& info_hash) const;\n std::vector get_torrents () const;\n+ torrent_handle find_torrent (sha1_hash const& info_hash) const;\n+ void async_add_torrent (add_torrent_params const& params);\n+ torrent_handle add_torrent (add_torrent_params&& params, error_code& ec);\n+ torrent_handle add_torrent (add_torrent_params&& params);\n torrent_handle add_torrent (add_torrent_params const& params, error_code&\n ec);\n void async_add_torrent (add_torrent_params&& params);\n- torrent_handle add_torrent (add_torrent_params&& params);\n- void async_add_torrent (add_torrent_params const& params);\n torrent_handle add_torrent (add_torrent_params const& params);\n- torrent_handle add_torrent (add_torrent_params&& params, error_code& ec);\n- bool is_paused () const;\n void pause ();\n void resume ();\n+ bool is_paused () const;\n bool is_dht_running () const;\n void set_dht_storage (dht::dht_storage_constructor_type sc);\n void add_dht_node (std::pair const& node);\n void dht_get_item (sha1_hash const& target);\n void dht_get_item (std::array key\n , std::string salt = std::string());\n sha1_hash dht_put_item (entry data);\n@@ -1450,41 +1450,41 @@\n void dht_announce (sha1_hash const& info_hash, int port = 0, dht::\n announce_flags_t flags = {});\n void dht_live_nodes (sha1_hash const& nid);\n void dht_sample_infohashes (udp::endpoint const& ep, sha1_hash const&\n target);\n void dht_direct_request (udp::endpoint const& ep, entry const& e,\n client_data_t userdata = {});\n- void add_extension (std::shared_ptr ext);\n void add_extension (std::function(\n torrent_handle const&, client_data_t)> ext);\n- void set_ip_filter (ip_filter f);\n+ void add_extension (std::shared_ptr ext);\n ip_filter get_ip_filter () const;\n+ void set_ip_filter (ip_filter f);\n void set_port_filter (port_filter const& f);\n unsigned short listen_port () const;\n unsigned short ssl_listen_port () const;\n bool is_listening () const;\n- void set_peer_class_filter (ip_filter const& f);\n ip_filter get_peer_class_filter () const;\n+ void set_peer_class_filter (ip_filter const& f);\n peer_class_type_filter get_peer_class_type_filter () const;\n void set_peer_class_type_filter (peer_class_type_filter const& f);\n peer_class_t create_peer_class (char const* name);\n void delete_peer_class (peer_class_t cid);\n- peer_class_info get_peer_class (peer_class_t cid) const;\n void set_peer_class (peer_class_t cid, peer_class_info const& pci);\n+ peer_class_info get_peer_class (peer_class_t cid) const;\n void remove_torrent (const torrent_handle&, remove_flags_t = {});\n- settings_pack get_settings () const;\n void apply_settings (settings_pack&&);\n void apply_settings (settings_pack const&);\n+ settings_pack get_settings () const;\n void set_alert_notify (std::function const& fun);\n alert* wait_for_alert (time_duration max_wait);\n void pop_alerts (std::vector* alerts);\n- void delete_port_mapping (port_mapping_t handle);\n std::vector add_port_mapping (portmap_protocol t, int\n external_port, int local_port);\n+ void delete_port_mapping (port_mapping_t handle);\n void reopen_network_sockets (reopen_network_flags_t options =\n reopen_map_ports);\n std::shared_ptr native_handle () const;\n \n static constexpr save_state_flags_t save_settings = 0_bit;\n static constexpr save_state_flags_t save_dht_state = 2_bit;\n static constexpr save_state_flags_t save_extension_state = 11_bit;\n@@ -1510,20 +1510,20 @@\n all()) const;\n returns the current session state. This can be passed to write_session_params()\n to save the state to disk and restored using read_session_params() when\n constructing a new session. The kind of state that's included is all settings,\n the DHT routing table, possibly plugin-specific state. the flags parameter can\n be used to only save certain parts of the session state\n [report_issue]\n-***** refresh_torrent_status() get_torrent_status() *****\n-void refresh_torrent_status (std::vector* ret\n- , status_flags_t flags = {}) const;\n+***** get_torrent_status() refresh_torrent_status() *****\n std::vector get_torrent_status (\n std::function const& pred\n , status_flags_t flags = {}) const;\n+void refresh_torrent_status (std::vector* ret\n+ , status_flags_t flags = {}) const;\n Note\n these calls are potentially expensive and won't scale well with lots of\n torrents. If you're concerned about performance, consider using\n post_torrent_updates() instead.\n get_torrent_status returns a vector of the torrent_status for every torrent\n which satisfies pred, which is a predicate function which determines if a\n torrent should be included in the returned set or not. Returning true means it\n@@ -1574,31 +1574,31 @@\n ***** set_dht_state() *****\n void set_dht_state (dht::dht_state const& st);\n void set_dht_state (dht::dht_state&& st);\n set the DHT state for the session. This will be taken into account the next\n time the DHT is started, as if it had been passed in via the session_params on\n startup.\n [report_issue]\n-***** find_torrent() get_torrents() *****\n-torrent_handle find_torrent (sha1_hash const& info_hash) const;\n+***** get_torrents() find_torrent() *****\n std::vector get_torrents () const;\n+torrent_handle find_torrent (sha1_hash const& info_hash) const;\n find_torrent() looks for a torrent with the given info-hash. In case there is\n such a torrent in the session, a torrent_handle to that torrent is returned. In\n case the torrent cannot be found, an invalid torrent_handle is returned.\n See torrent_handle::is_valid() to know if the torrent was found or not.\n get_torrents() returns a vector of torrent_handles to all the torrents\n currently in the session.\n [report_issue]\n-***** async_add_torrent() add_torrent() *****\n+***** add_torrent() async_add_torrent() *****\n+void async_add_torrent (add_torrent_params const& params);\n+torrent_handle add_torrent (add_torrent_params&& params, error_code& ec);\n+torrent_handle add_torrent (add_torrent_params&& params);\n torrent_handle add_torrent (add_torrent_params const& params, error_code& ec);\n void async_add_torrent (add_torrent_params&& params);\n-torrent_handle add_torrent (add_torrent_params&& params);\n-void async_add_torrent (add_torrent_params const& params);\n torrent_handle add_torrent (add_torrent_params const& params);\n-torrent_handle add_torrent (add_torrent_params&& params, error_code& ec);\n You add torrents through the add_torrent() function where you give an object\n with all the parameters. The add_torrent() overloads will block until the\n torrent has been added (or failed to be added) and returns an error code and a\n torrent_handle. In order to add torrents more efficiently, consider using\n async_add_torrent() which returns immediately, without waiting for the torrent\n to add. Notification of the torrent being added is sent as add_torrent_alert.\n The overload that does not take an error_code throws an exception on error and\n@@ -1615,18 +1615,18 @@\n torrent_flags::paused and torrent_flags::auto_managed. In order to add a magnet\n link that will just download the metadata, but no payload, set the\n torrent_flags::upload_mode flag.\n Special consideration has to be taken when adding hybrid torrents (i.e.\n torrents that are BitTorrent v2 torrents that are backwards compatible with\n v1). For more details, see BitTorrent_v2_torrents.\n [report_issue]\n-***** resume() is_paused() pause() *****\n-bool is_paused () const;\n+***** resume() pause() is_paused() *****\n void pause ();\n void resume ();\n+bool is_paused () const;\n Pausing the session has the same effect as pausing every torrent in it, except\n that torrents will not be resumed by the auto-manage mechanism. Resuming will\n restore the torrents to their previous paused state. i.e. the session pause\n state is separate from the torrent pause state. A torrent is inactive if it is\n paused or if the session is paused.\n [report_issue]\n ***** is_dht_running() *****\n@@ -1702,15 +1702,15 @@\n and make the function entirely self-contained. The only reason data blob's\n value is computed via a function instead of just passing in the new value is to\n avoid race conditions. If you want to update the value in the DHT, you must\n first retrieve it, then modify it, then write it back. The way the DHT works,\n it is natural to always do a lookup before storing and calling the callback in\n between is convenient.\n [report_issue]\n-***** dht_announce() dht_get_peers() *****\n+***** dht_get_peers() dht_announce() *****\n void dht_get_peers (sha1_hash const& info_hash);\n void dht_announce (sha1_hash const& info_hash, int port = 0, dht::\n announce_flags_t flags = {});\n dht_get_peers() will issue a DHT get_peer request to the DHT for the specified\n info-hash. The response (the peers) will be posted back in a\n dht_get_peers_reply_alert.\n dht_announce() will issue a DHT announce request to the DHT to the specified\n@@ -1744,17 +1744,17 @@\n Send an arbitrary DHT request directly to the specified endpoint. This function\n is intended for use by plugins. When a response is received or the request\n times out, a dht_direct_response_alert will be posted with the response (if\n any) and the userdata pointer passed in here. Since this alert is a response to\n an explicit call, it will always be posted, regardless of the alert mask.\n [report_issue]\n ***** add_extension() *****\n-void add_extension (std::shared_ptr ext);\n void add_extension (std::function(\n torrent_handle const&, client_data_t)> ext);\n+void add_extension (std::shared_ptr ext);\n This function adds an extension to this session. The argument is a function\n object that is called with a torrent_handle and which should return a std::\n shared_ptr. To write custom plugins, see libtorrent_plugins.\n For the typical bittorrent client all of these extensions should be added. The\n main plugins implemented in libtorrent are:\n uTorrent metadata\n Allows peers to download the metadata (.torrent files) from the swarm\n@@ -1770,16 +1770,16 @@\n A plugin that, with a small overhead, can ban peers that sends bad data\n with very high accuracy. Should eliminate most problems on poisoned\n torrents.\n #include \n ses.add_extension(<::create_smart_ban_plugin);\n [report_issue]\n ***** set_ip_filter() get_ip_filter() *****\n-void set_ip_filter (ip_filter f);\n ip_filter get_ip_filter () const;\n+void set_ip_filter (ip_filter f);\n Sets a filter that will be used to reject and accept incoming as well as\n outgoing connections based on their originating ip address. The default filter\n will allow connections to any ip address. To build a set of rules for which\n addresses are accepted and not, see ip_filter.\n Each time a peer is blocked because of the IP filter, a peer_blocked_alert is\n generated. get_ip_filter() Returns the ip_filter currently in the session. See\n ip_filter.\n@@ -1787,27 +1787,27 @@\n ***** set_port_filter() *****\n void set_port_filter (port_filter const& f);\n apply port_filter f to incoming and outgoing peers. a port filter will reject\n making outgoing peer connections to certain remote ports. The main intention is\n to be able to avoid triggering certain anti-virus software by connecting to\n SMTP, FTP ports.\n [report_issue]\n-***** listen_port() ssl_listen_port() is_listening() *****\n+***** is_listening() listen_port() ssl_listen_port() *****\n unsigned short listen_port () const;\n unsigned short ssl_listen_port () const;\n bool is_listening () const;\n is_listening() will tell you whether or not the session has successfully opened\n a listening port. If it hasn't, this function will return false, and then you\n can set a new settings_pack::listen_interfaces to try another interface and\n port to bind to.\n listen_port() returns the port we ended up listening on.\n [report_issue]\n-***** get_peer_class_filter() set_peer_class_filter() *****\n-void set_peer_class_filter (ip_filter const& f);\n+***** set_peer_class_filter() get_peer_class_filter() *****\n ip_filter get_peer_class_filter () const;\n+void set_peer_class_filter (ip_filter const& f);\n Sets the peer class filter for this session. All new peer connections will take\n this into account and be added to the peer classes specified by this filter,\n based on the peer's IP address.\n The ip-filter essentially maps an IP -> uint32. Each bit in that 32 bit integer\n represents a peer class. The least significant bit represents class 0, the next\n bit class 1 and so on.\n For more info, see ip_filter.\n@@ -1862,17 +1862,17 @@\n Since peer classes are reference counted, this function will not remove the\n peer class if it's still assigned to torrents or peers. It will however remove\n it once the last peer and torrent drops their references to it.\n There is no need to call this function for custom peer classes. All peer\n classes will be properly destructed when the session object destructs.\n For more information on peer classes, see peer_classes.\n [report_issue]\n-***** set_peer_class() get_peer_class() *****\n-peer_class_info get_peer_class (peer_class_t cid) const;\n+***** get_peer_class() set_peer_class() *****\n void set_peer_class (peer_class_t cid, peer_class_info const& pci);\n+peer_class_info get_peer_class (peer_class_t cid) const;\n These functions queries information from a peer class and updates the\n configuration of a peer class, respectively.\n cid must refer to an existing peer class. If it does not, the return value of\n get_peer_class() is undefined.\n set_peer_class() sets all the information in the peer_class_info object in the\n specified peer class. There is no option to only update a single property.\n A peer or torrent belonging to more than one class, the highest priority among\n@@ -1903,22 +1903,22 @@\n Note that when a queued or downloading torrent is removed, its position in the\n download queue is vacated and every subsequent torrent in the queue has their\n queue positions updated. This can potentially cause a large state_update to be\n posted. When removing all torrents, it is advised to remove them from the back\n of the queue, to minimize the shifting.\n [report_issue]\n ***** apply_settings() get_settings() *****\n-settings_pack get_settings () const;\n void apply_settings (settings_pack&&);\n void apply_settings (settings_pack const&);\n+settings_pack get_settings () const;\n Applies the settings specified by the settings_pack s. This is an asynchronous\n operation that will return immediately and actually apply the settings to the\n main thread of libtorrent some time later.\n [report_issue]\n-***** set_alert_notify() wait_for_alert() pop_alerts() *****\n+***** pop_alerts() set_alert_notify() wait_for_alert() *****\n void set_alert_notify (std::function const& fun);\n alert* wait_for_alert (time_duration max_wait);\n void pop_alerts (std::vector* alerts);\n Alerts is the main mechanism for libtorrent to report errors and events.\n pop_alerts fills in the vector passed to it with pointers to new alerts. The\n session still owns these alerts and they will stay valid until the next time\n pop_alerts is called. You may not delete the alert objects.\n@@ -1960,18 +1960,18 @@\n alerts should not be done in the callback. In fact, the callback should not\n block. It should not perform any expensive work. It really should just notify\n the main application thread.\n The type of an alert is returned by the polymorphic function alert::type() but\n can also be queries from a concrete type via T::alert_type, as a static\n constant.\n [report_issue]\n-***** delete_port_mapping() add_port_mapping() *****\n-void delete_port_mapping (port_mapping_t handle);\n+***** add_port_mapping() delete_port_mapping() *****\n std::vector add_port_mapping (portmap_protocol t, int\n external_port, int local_port);\n+void delete_port_mapping (port_mapping_t handle);\n add_port_mapping adds one or more port forwards on UPnP and/or NAT-PMP,\n whichever is enabled. A mapping is created for each listen socket in the\n session. The return values are all handles referring to the port mappings that\n were just created. Pass them to delete_port_mapping() to remove them.\n [report_issue]\n ***** reopen_network_sockets() *****\n void reopen_network_sockets (reopen_network_flags_t options =\n@@ -2017,25 +2017,25 @@\n protocols used by add_port_mapping()\n [report_issue]\n reopen_map_ports\n This option indicates if the ports are mapped using natpmp and upnp. If\n mapping was already made, they are deleted and added again. This only\n works if natpmp and/or upnp are configured to be enable.\n [report_issue]\n-****** write_session_params() read_session_params() write_session_params_buf()\n+****** read_session_params() write_session_params_buf() write_session_params()\n ******\n Declared in \"libtorrent/session_params.hpp\"\n session_params read_session_params (bdecode_node const& e\n , save_state_flags_t flags = save_state_flags_t::all());\n+entry write_session_params (session_params const& sp\n+ , save_state_flags_t flags = save_state_flags_t::all());\n std::vector write_session_params_buf (session_params const& sp\n , save_state_flags_t flags = save_state_flags_t::all());\n session_params read_session_params (span buf\n , save_state_flags_t flags = save_state_flags_t::all());\n-entry write_session_params (session_params const& sp\n- , save_state_flags_t flags = save_state_flags_t::all());\n These functions serialize and de-serialize a session_params object to and from\n bencoded form. The session_params object is used to initialize a new session\n using the state from a previous one (or by programmatically configure the\n session up-front). The flags parameter can be used to only save and load\n certain aspects of the session's state. The _buf suffix indicates the function\n operates on buffer rather than the bencoded structure. The torrents in a\n session are not part of the session_params state, they have to be restored\n@@ -2117,56 +2117,56 @@\n the max number of bdecode tokens\n [report_issue]\n ****** torrent_info ******\n Declared in \"libtorrent/torrent_info.hpp\"\n the torrent_info class holds the information found in a .torrent file.\n class torrent_info\n {\n- explicit torrent_info (bdecode_node const& torrent_file);\n- torrent_info (bdecode_node const& torrent_file, load_torrent_limits const&\n-cfg);\n- torrent_info (char const* buffer, int size);\n+ torrent_info (std::string const& filename, error_code& ec);\n explicit torrent_info (span buffer, from_span_t);\n- torrent_info (span buffer, load_torrent_limits const& cfg,\n-from_span_t);\n+ explicit torrent_info (bdecode_node const& torrent_file);\n torrent_info (char const* buffer, int size, error_code& ec);\n- explicit torrent_info (info_hash_t const& info_hash);\n+ torrent_info (torrent_info const& t);\n torrent_info (span buffer, error_code& ec, from_span_t);\n+ explicit torrent_info (info_hash_t const& info_hash);\n torrent_info (std::string const& filename, load_torrent_limits const& cfg);\n+ torrent_info (char const* buffer, int size);\n explicit torrent_info (std::string const& filename);\n- torrent_info (torrent_info const& t);\n- torrent_info (std::string const& filename, error_code& ec);\n torrent_info (bdecode_node const& torrent_file, error_code& ec);\n+ torrent_info (bdecode_node const& torrent_file, load_torrent_limits const&\n+cfg);\n+ torrent_info (span buffer, load_torrent_limits const& cfg,\n+from_span_t);\n ~torrent_info ();\n file_storage const& files () const;\n file_storage const& orig_files () const;\n void rename_file (file_index_t index, std::string const& new_filename);\n void remap_files (file_storage const& f);\n+ void clear_trackers ();\n+ void add_tracker (std::string const& url, int tier = 0);\n void add_tracker (std::string const& url, int tier\n , announce_entry::tracker_source source);\n- void clear_trackers ();\n std::vector const& trackers () const;\n- void add_tracker (std::string const& url, int tier = 0);\n- std::vector similar_torrents () const;\n std::vector collections () const;\n+ std::vector similar_torrents () const;\n std::vector const& web_seeds () const;\n+ void set_web_seeds (std::vector seeds);\n void add_url_seed (std::string const& url\n , std::string const& ext_auth = std::string()\n , web_seed_entry::headers_t const& ext_headers = web_seed_entry::\n headers_t());\n- void set_web_seeds (std::vector seeds);\n void add_http_seed (std::string const& url\n , std::string const& extern_auth = std::string()\n , web_seed_entry::headers_t const& extra_headers = web_seed_entry::\n headers_t());\n std::int64_t total_size () const;\n int piece_length () const;\n int num_pieces () const;\n- piece_index_t end_piece () const;\n piece_index_t last_piece () const;\n+ piece_index_t end_piece () const;\n index_range piece_range () const;\n info_hash_t const& info_hashes () const;\n sha1_hash info_hash () const noexcept;\n bool v2 () const;\n bool v1 () const;\n int num_files () const;\n std::vector map_block (piece_index_t const piece\n@@ -2192,29 +2192,29 @@\n bdecode_node info (char const* key) const;\n span info_section () const;\n span piece_layer (file_index_t) const;\n void free_piece_layers ();\n };\n [report_issue]\n ***** torrent_info() *****\n-explicit torrent_info (bdecode_node const& torrent_file);\n-torrent_info (bdecode_node const& torrent_file, load_torrent_limits const&\n-cfg);\n-torrent_info (char const* buffer, int size);\n+torrent_info (std::string const& filename, error_code& ec);\n explicit torrent_info (span buffer, from_span_t);\n-torrent_info (span buffer, load_torrent_limits const& cfg,\n-from_span_t);\n+explicit torrent_info (bdecode_node const& torrent_file);\n torrent_info (char const* buffer, int size, error_code& ec);\n-explicit torrent_info (info_hash_t const& info_hash);\n+torrent_info (torrent_info const& t);\n torrent_info (span buffer, error_code& ec, from_span_t);\n+explicit torrent_info (info_hash_t const& info_hash);\n torrent_info (std::string const& filename, load_torrent_limits const& cfg);\n+torrent_info (char const* buffer, int size);\n explicit torrent_info (std::string const& filename);\n-torrent_info (torrent_info const& t);\n-torrent_info (std::string const& filename, error_code& ec);\n torrent_info (bdecode_node const& torrent_file, error_code& ec);\n+torrent_info (bdecode_node const& torrent_file, load_torrent_limits const&\n+cfg);\n+torrent_info (span buffer, load_torrent_limits const& cfg,\n+from_span_t);\n The constructor that takes an info-hash will initialize the info-hash to the\n given value, but leave all other fields empty. This is used internally when\n downloading torrents without the metadata. The metadata will be created by\n libtorrent as soon as it has been downloaded from the swarm.\n The constructor that takes a bdecode_node will create a torrent_info object\n from the information found in the given torrent_file. The bdecode_node\n represents a tree node in an bencoded file. To load an ordinary .torrent file\n@@ -2237,15 +2237,15 @@\n from_span_t to disambiguate the std::string overload for string literals. There\n is an object in the libtorrent namespace of this type called from_span.\n [report_issue]\n ***** ~torrent_info() *****\n ~torrent_info ();\n frees all storage associated with this torrent_info object\n [report_issue]\n-***** files() orig_files() *****\n+***** orig_files() files() *****\n file_storage const& files () const;\n file_storage const& orig_files () const;\n The file_storage object contains the information on how to map the pieces to\n files. It is separated from the torrent_info object because when creating\n torrents a storage object needs to be created without having a torrent file.\n When renaming files in a storage, the storage needs to make its own copy of the\n file_storage in order to make its mapping differ from the one in the torrent\n@@ -2280,45 +2280,45 @@\n Remaps the file storage to a new file layout. This can be used to, for\n instance, download all data in a torrent to a single file, or to a number of\n fixed size sector aligned files, regardless of the number and sizes of the\n files in the torrent.\n The new specified file_storage must have the exact same size as the current\n one.\n [report_issue]\n-***** trackers() add_tracker() clear_trackers() *****\n+***** trackers() clear_trackers() add_tracker() *****\n+void clear_trackers ();\n+void add_tracker (std::string const& url, int tier = 0);\n void add_tracker (std::string const& url, int tier\n , announce_entry::tracker_source source);\n-void clear_trackers ();\n std::vector const& trackers () const;\n-void add_tracker (std::string const& url, int tier = 0);\n add_tracker() adds a tracker to the announce-list. The tier determines the\n order in which the trackers are to be tried. The trackers() function will\n return a sorted vector of announce_entry. Each announce entry contains a\n string, which is the tracker url, and a tier index. The tier index is the high-\n level priority. No matter which trackers that works or not, the ones with lower\n tier will always be tried before the one with higher tier number. For more\n information, see announce_entry.\n trackers() returns all entries from announce-list.\n clear_trackers() removes all trackers from announce-list.\n [report_issue]\n-***** collections() similar_torrents() *****\n-std::vector similar_torrents () const;\n+***** similar_torrents() collections() *****\n std::vector collections () const;\n+std::vector similar_torrents () const;\n These two functions are related to BEP_38 (mutable torrents). The vectors\n returned from these correspond to the \"similar\" and \"collections\" keys in the\n .torrent file. Both info-hashes and collections from within the info-dict and\n from outside of it are included.\n [report_issue]\n-***** set_web_seeds() add_url_seed() web_seeds() add_http_seed() *****\n+***** set_web_seeds() web_seeds() add_http_seed() add_url_seed() *****\n std::vector const& web_seeds () const;\n+void set_web_seeds (std::vector seeds);\n void add_url_seed (std::string const& url\n , std::string const& ext_auth = std::string()\n , web_seed_entry::headers_t const& ext_headers = web_seed_entry::\n headers_t());\n-void set_web_seeds (std::vector seeds);\n void add_http_seed (std::string const& url\n , std::string const& extern_auth = std::string()\n , web_seed_entry::headers_t const& extra_headers = web_seed_entry::\n headers_t());\n web_seeds() returns all url seeds and http seeds in the torrent. Each entry is\n a web_seed_entry and may refer to either a url seed or http seed.\n add_url_seed() and add_http_seed() adds one url to the list of url/http seeds.\n@@ -2344,31 +2344,31 @@\n int num_pieces () const;\n piece_length() and num_pieces() returns the number of byte for each piece and\n the total number of pieces, respectively. The difference between piece_size()\n and piece_length() is that piece_size() takes the piece index as argument and\n gives you the exact size of that piece. It will always be the same as\n piece_length() except in the case of the last piece, which may be smaller.\n [report_issue]\n-***** end_piece() piece_range() last_piece() *****\n-piece_index_t end_piece () const;\n+***** last_piece() end_piece() piece_range() *****\n piece_index_t last_piece () const;\n+piece_index_t end_piece () const;\n index_range piece_range () const;\n last_piece() returns the index to the last piece in the torrent and end_piece()\n returns the index to the one-past-end piece in the torrent piece_range()\n returns an implementation-defined type that can be used as the container in a\n range-for loop. Where the values are the indices of all pieces in the\n file_storage.\n [report_issue]\n ***** info_hashes() info_hash() *****\n info_hash_t const& info_hashes () const;\n sha1_hash info_hash () const noexcept;\n returns the info-hash of the torrent. For BitTorrent v2 support, use\n info_hashes() to get an object that may hold both a v1 and v2 info-hash\n [report_issue]\n-***** v2() v1() *****\n+***** v1() v2() *****\n bool v2 () const;\n bool v1 () const;\n returns whether this torrent has v1 and/or v2 metadata, respectively. Hybrid\n torrents have both. These are shortcuts for info_hashes().has_v1() and\n info_hashes().has_v2() calls.\n [report_issue]\n ***** num_files() *****\n@@ -2418,15 +2418,15 @@\n than the i2p network.\n [report_issue]\n ***** piece_size() *****\n int piece_size (piece_index_t index) const;\n returns the piece size of file with index. This will be the same as\n piece_length(), except for the last piece, which may be shorter.\n [report_issue]\n-***** hash_for_piece() hash_for_piece_ptr() *****\n+***** hash_for_piece_ptr() hash_for_piece() *****\n char const* hash_for_piece_ptr (piece_index_t const index) const;\n sha1_hash hash_for_piece (piece_index_t index) const;\n hash_for_piece() takes a piece-index and returns the 20-bytes sha1-hash for\n that piece and info_hash() returns the 20-bytes sha1-hash for the info-section\n of the torrent file. hash_for_piece_ptr() returns a pointer to the 20 byte sha1\n digest for the piece. Note that the string is not 0-terminated.\n [report_issue]\n@@ -2871,19 +2871,19 @@\n a v2 info-hash (SHA-256) or both.\n Note\n If has_v2() is false then the v1 hash might actually be a truncated v2 hash\n struct info_hash_t\n {\n info_hash_t () noexcept = default;\n explicit info_hash_t (sha256_hash h2) noexcept;\n- explicit info_hash_t (sha1_hash h1) noexcept;\n info_hash_t (sha1_hash h1, sha256_hash h2) noexcept;\n- bool has (protocol_version v) const;\n+ explicit info_hash_t (sha1_hash h1) noexcept;\n bool has_v1 () const;\n bool has_v2 () const;\n+ bool has (protocol_version v) const;\n sha1_hash get (protocol_version v) const;\n sha1_hash get_best () const;\n friend bool operator!= (info_hash_t const& lhs, info_hash_t const& rhs);\n friend bool operator== (info_hash_t const& lhs, info_hash_t const& rhs)\n noexcept;\n template void for_each (F f) const;\n bool operator< (info_hash_t const& o) const;\n@@ -2892,25 +2892,25 @@\n sha1_hash v1;\n sha256_hash v2;\n };\n [report_issue]\n ***** info_hash_t() *****\n info_hash_t () noexcept = default;\n explicit info_hash_t (sha256_hash h2) noexcept;\n-explicit info_hash_t (sha1_hash h1) noexcept;\n info_hash_t (sha1_hash h1, sha256_hash h2) noexcept;\n+explicit info_hash_t (sha1_hash h1) noexcept;\n The default constructor creates an object that has neither a v1 or v2 hash.\n For backwards compatibility, make it possible to construct directly from a v1\n hash. This constructor allows implicit conversion from a v1 hash, but the\n implicitness is deprecated.\n [report_issue]\n-***** has_v1() has() has_v2() *****\n-bool has (protocol_version v) const;\n+***** has_v1() has_v2() has() *****\n bool has_v1 () const;\n bool has_v2 () const;\n+bool has (protocol_version v) const;\n returns true if the corresponding info hash is present in this object.\n [report_issue]\n ***** get() *****\n sha1_hash get (protocol_version v) const;\n returns the has for the specified protocol version\n [report_issue]\n ***** get_best() *****\n@@ -2962,41 +2962,41 @@\n [report_issue]\n start\n The byte offset within that piece where the range starts.\n [report_issue]\n length\n The size of the range, in bytes.\n [report_issue]\n-****** load_torrent_parsed() load_torrent_file() load_torrent_buffer() ******\n+****** load_torrent_file() load_torrent_parsed() load_torrent_buffer() ******\n Declared in \"libtorrent/load_torrent.hpp\"\n+add_torrent_params load_torrent_buffer (\n+ span buffer);\n add_torrent_params load_torrent_parsed (\n bdecode_node const& torrent_file);\n add_torrent_params load_torrent_buffer (\n- span buffer);\n+ span buffer, load_torrent_limits const& cfg);\n+add_torrent_params load_torrent_parsed (\n+ bdecode_node const& torrent_file, load_torrent_limits const& cfg);\n add_torrent_params load_torrent_file (\n std::string const& filename);\n add_torrent_params load_torrent_file (\n std::string const& filename, load_torrent_limits const& cfg);\n-add_torrent_params load_torrent_buffer (\n- span buffer, load_torrent_limits const& cfg);\n-add_torrent_params load_torrent_parsed (\n- bdecode_node const& torrent_file, load_torrent_limits const& cfg);\n These functions load the content of a .torrent file into an add_torrent_params\n object. The immutable part of a torrent file (the info-dictionary) is stored in\n the ti field in the add_torrent_params object (as a torrent_info object). The\n returned object is suitable to be:\n * added to a session via add_torrent() or async_add_torrent()\n * saved as a .torrent_file via write_torrent_file()\n * turned into a magnet link via make_magnet_uri()\n [report_issue]\n ****** make_magnet_uri() ******\n Declared in \"libtorrent/magnet_uri.hpp\"\n-std::string make_magnet_uri (torrent_info const& info);\n-std::string make_magnet_uri (torrent_handle const& handle);\n std::string make_magnet_uri (add_torrent_params const& atp);\n+std::string make_magnet_uri (torrent_handle const& handle);\n+std::string make_magnet_uri (torrent_info const& info);\n Generates a magnet URI from the specified torrent.\n Several fields from the add_torrent_params objects are recorded in the magnet\n link. In order to not include them, they have to be cleared before calling\n make_magnet_uri(). These fields are used:\n ti, info_hashes, url_seeds, dht_nodes, file_priorities, trackers,\n name, peers.\n Depending on what the use case for the resulting magnet link is, clearing peers\n@@ -3011,16 +3011,16 @@\n The overload that takes a torrent_handle will make blocking calls to query\n information about the torrent. If the torrent handle is invalid, an empty\n string is returned.\n For more information about magnet links, see magnet_links.\n [report_issue]\n ****** parse_magnet_uri() ******\n Declared in \"libtorrent/magnet_uri.hpp\"\n-add_torrent_params parse_magnet_uri (string_view uri);\n add_torrent_params parse_magnet_uri (string_view uri, error_code& ec);\n+add_torrent_params parse_magnet_uri (string_view uri);\n void parse_magnet_uri (string_view uri, add_torrent_params& p, error_code& ec);\n This function parses out information from the magnet link and populates the\n add_torrent_params object. The overload that does not take an error_code\n reference will throw a system_error on error The overload taking an\n add_torrent_params reference will fill in the fields specified in the magnet\n URI.\n [report_issue]\n@@ -3505,16 +3505,16 @@\n struct torrent_plugin\n {\n virtual std::shared_ptr new_connection (peer_connection_handle\n const&);\n virtual void on_piece_pass (piece_index_t);\n virtual void on_piece_failed (piece_index_t);\n virtual void tick ();\n- virtual bool on_resume ();\n virtual bool on_pause ();\n+ virtual bool on_resume ();\n virtual void on_files_checked ();\n virtual void on_state (torrent_status::state_t);\n virtual void on_add_peer (tcp::endpoint const&,\n peer_source_flags_t, add_peer_flags_t);\n \n static constexpr add_peer_flags_t first_time = 1_bit;\n static constexpr add_peer_flags_t filtered = 2_bit;\n@@ -3544,17 +3544,17 @@\n through the torrent and the piece_picker.\n [report_issue]\n ***** tick() *****\n virtual void tick ();\n This hook is called approximately once per second. It is a way of making it\n easy for plugins to do timed events, for sending messages or whatever.\n [report_issue]\n-***** on_pause() on_resume() *****\n-virtual bool on_resume ();\n+***** on_resume() on_pause() *****\n virtual bool on_pause ();\n+virtual bool on_resume ();\n These hooks are called when the torrent is paused and resumed respectively. The\n return value indicates if the event was handled. A return value of true\n indicates that it was handled, and no other plugin after this one will have\n this hook function called, and the standard handler will also not be invoked.\n So, returning true effectively overrides the standard behavior of pause or\n resume.\n Note that if you call pause() or resume() on the torrent from your handler it\n@@ -3600,43 +3600,43 @@\n {\n virtual string_view type () const;\n virtual void add_handshake (entry&);\n virtual void on_disconnect (error_code const&);\n virtual void on_connected ();\n virtual bool on_handshake (span);\n virtual bool on_extension_handshake (bdecode_node const&);\n+ virtual bool on_request (peer_request const&);\n virtual bool on_have (piece_index_t);\n- virtual bool on_unchoke ();\n+ virtual bool on_have_none ();\n+ virtual bool on_bitfield (bitfield const& /*bitfield*/);\n+ virtual bool on_choke ();\n+ virtual bool on_allowed_fast (piece_index_t);\n virtual bool on_interested ();\n+ virtual bool on_unchoke ();\n virtual bool on_not_interested ();\n- virtual bool on_allowed_fast (piece_index_t);\n- virtual bool on_choke ();\n- virtual bool on_bitfield (bitfield const& /*bitfield*/);\n- virtual bool on_have_all ();\n virtual bool on_dont_have (piece_index_t);\n- virtual bool on_have_none ();\n- virtual bool on_request (peer_request const&);\n+ virtual bool on_have_all ();\n virtual bool on_piece (peer_request const& /*piece*/\n , span /*buf*/);\n virtual bool on_cancel (peer_request const&);\n virtual bool on_suggest (piece_index_t);\n virtual bool on_reject (peer_request const&);\n- virtual void sent_allow_fast (piece_index_t);\n- virtual void sent_request (peer_request const&);\n+ virtual void sent_have_all ();\n virtual void sent_have_none ();\n- virtual void sent_choke ();\n- virtual void sent_suggest (piece_index_t);\n+ virtual void sent_request (peer_request const&);\n virtual void sent_cancel (peer_request const&);\n- virtual void sent_have_all ();\n+ virtual void sent_choke ();\n virtual void sent_reject_request (peer_request const&);\n- virtual void sent_interested ();\n+ virtual void sent_allow_fast (piece_index_t);\n+ virtual void sent_suggest (piece_index_t);\n virtual void sent_not_interested ();\n- virtual void sent_have (piece_index_t);\n virtual void sent_piece (peer_request const&);\n+ virtual void sent_have (piece_index_t);\n virtual void sent_unchoke ();\n+ virtual void sent_interested ();\n virtual void sent_payload (int /* bytes */);\n virtual bool can_disconnect (error_code const& /*ec*/);\n virtual bool on_extended (int /*length*/, int /*msg*/,\n span /*body*/);\n virtual bool on_unknown_message (int /*length*/, int /*msg*/,\n span /*body*/);\n virtual void on_piece_pass (piece_index_t);\n@@ -3672,48 +3672,48 @@\n ***** on_extension_handshake() *****\n virtual bool on_extension_handshake (bdecode_node const&);\n called when the extension handshake from the other end is received if this\n returns false, it means that this extension isn't supported by this peer. It\n will result in this peer_plugin being removed from the peer_connection and\n destructed. this is not called for web seeds\n [report_issue]\n-***** on_have() on_unchoke() on_dont_have() on_request() on_have_none()\n-on_have_all() on_allowed_fast() on_choke() on_interested() on_not_interested()\n-on_bitfield() *****\n+***** on_have_none() on_allowed_fast() on_dont_have() on_have_all()\n+on_not_interested() on_unchoke() on_interested() on_choke() on_have()\n+on_request() on_bitfield() *****\n+virtual bool on_request (peer_request const&);\n virtual bool on_have (piece_index_t);\n-virtual bool on_unchoke ();\n+virtual bool on_have_none ();\n+virtual bool on_bitfield (bitfield const& /*bitfield*/);\n+virtual bool on_choke ();\n+virtual bool on_allowed_fast (piece_index_t);\n virtual bool on_interested ();\n+virtual bool on_unchoke ();\n virtual bool on_not_interested ();\n-virtual bool on_allowed_fast (piece_index_t);\n-virtual bool on_choke ();\n-virtual bool on_bitfield (bitfield const& /*bitfield*/);\n-virtual bool on_have_all ();\n virtual bool on_dont_have (piece_index_t);\n-virtual bool on_have_none ();\n-virtual bool on_request (peer_request const&);\n+virtual bool on_have_all ();\n returning true from any of the message handlers indicates that the plugin has\n handled the message. it will break the plugin chain traversing and not let\n anyone else handle the message, including the default handler.\n [report_issue]\n ***** on_piece() *****\n virtual bool on_piece (peer_request const& /*piece*/\n , span /*buf*/);\n This function is called when the peer connection is receiving a piece. buf\n points (non-owning pointer) to the data in an internal immutable disk buffer.\n The length of the data is specified in the length member of the piece\n parameter. returns true to indicate that the piece is handled and the rest of\n the logic should be ignored.\n [report_issue]\n-***** sent_interested() sent_unchoke() sent_have() sent_not_interested()\n-sent_piece() *****\n-virtual void sent_interested ();\n+***** sent_not_interested() sent_unchoke() sent_piece() sent_interested()\n+sent_have() *****\n virtual void sent_not_interested ();\n-virtual void sent_have (piece_index_t);\n virtual void sent_piece (peer_request const&);\n+virtual void sent_have (piece_index_t);\n virtual void sent_unchoke ();\n+virtual void sent_interested ();\n called after a choke message has been sent to the peer\n [report_issue]\n ***** sent_payload() *****\n virtual void sent_payload (int /* bytes */);\n called after piece data has been sent to the peer this can be used for stats\n book keeping\n [report_issue]\n@@ -3756,16 +3756,16 @@\n original request message won't be sent and no other plugin will have this\n function called.\n [report_issue]\n ****** crypto_plugin ******\n Declared in \"libtorrent/extensions.hpp\"\n struct crypto_plugin\n {\n- virtual void set_incoming_key (span key) = 0;\n virtual void set_outgoing_key (span key) = 0;\n+ virtual void set_incoming_key (span key) = 0;\n encrypt (span> /*send_vec*/) = 0;\n virtual std::tuple decrypt (span> /*receive_vec*/\n ) = 0;\n };\n [report_issue]\n ***** decrypt() *****\n virtual std::tuple decrypt (span> /*receive_vec*/) =\n@@ -3784,64 +3784,64 @@\n the peer_connection_handle class provides a handle to the internal peer\n connection object, to be used by plugins. This is a low level interface that\n may not be stable across libtorrent versions\n struct peer_connection_handle\n {\n explicit peer_connection_handle (std::weak_ptr impl);\n connection_type type () const;\n- peer_plugin const* find_plugin (string_view type) const;\n void add_extension (std::shared_ptr);\n+ peer_plugin const* find_plugin (string_view type) const;\n bool is_seed () const;\n bool upload_only () const;\n- bool has_piece (piece_index_t i) const;\n peer_id const& pid () const;\n- bool is_choked () const;\n+ bool has_piece (piece_index_t i) const;\n bool is_interesting () const;\n- bool has_peer_choked () const;\n+ bool is_choked () const;\n bool is_peer_interested () const;\n+ bool has_peer_choked () const;\n void maybe_unchoke_this_peer ();\n void choke_this_peer ();\n void get_peer_info (peer_info& p) const;\n torrent_handle associated_torrent () const;\n tcp::endpoint const& remote () const;\n tcp::endpoint local_endpoint () const;\n- bool is_connecting () const;\n void disconnect (error_code const& ec, operation_t op\n , disconnect_severity_t = peer_connection_interface::normal);\n bool is_outgoing () const;\n+ bool is_connecting () const;\n bool is_disconnecting () const;\n bool ignore_unchoke_slots () const;\n bool on_local_network () const;\n bool failed () const;\n+ bool should_log (peer_log_alert::direction_t direction) const;\n void peer_log (peer_log_alert::direction_t direction\n , char const* event, char const* fmt = \"\", ...) const TORRENT_FORMAT\n (4,5);\n- bool should_log (peer_log_alert::direction_t direction) const;\n bool can_disconnect (error_code const& ec) const;\n bool has_metadata () const;\n bool in_handshake () const;\n void send_buffer (char const* begin, int size);\n std::time_t last_seen_complete () const;\n time_point time_of_last_unchoke () const;\n- bool operator!= (peer_connection_handle const& o) const;\n bool operator< (peer_connection_handle const& o) const;\n+ bool operator!= (peer_connection_handle const& o) const;\n bool operator== (peer_connection_handle const& o) const;\n std::shared_ptr native_handle () const;\n };\n [report_issue]\n ****** bt_peer_connection_handle ******\n Declared in \"libtorrent/peer_connection_handle.hpp\"\n The bt_peer_connection_handle provides a handle to the internal bittorrent peer\n connection object to plugins. It's low level and may not be a stable API across\n libtorrent versions.\n struct bt_peer_connection_handle : peer_connection_handle\n {\n explicit bt_peer_connection_handle (peer_connection_handle pc);\n- bool packet_finished () const;\n bool support_extensions () const;\n+ bool packet_finished () const;\n bool supports_encryption () const;\n void switch_recv_crypto (std::shared_ptr crypto);\n void switch_send_crypto (std::shared_ptr crypto);\n std::shared_ptr native_handle () const;\n };\n [report_issue]\n ****** create_ut_pex_plugin() ******\n@@ -3910,28 +3910,28 @@\n bool is_valid () const;\n void reserve (int num_files);\n void add_file (error_code& ec, std::string const& path, std::int64_t\n file_size\n , file_flags_t file_flags = {}\n , std::time_t mtime = 0, string_view symlink_path = string_view()\n , char const* root_hash = nullptr);\n- void add_file_borrow (error_code& ec, string_view filename\n- , std::string const& path, std::int64_t file_size\n- , file_flags_t file_flags = {}, char const* filehash = nullptr\n- , std::int64_t mtime = 0, string_view symlink_path = string_view()\n- , char const* root_hash = nullptr);\n void add_file_borrow (string_view filename\n , std::string const& path, std::int64_t file_size\n , file_flags_t file_flags = {}, char const* filehash = nullptr\n , std::int64_t mtime = 0, string_view symlink_path = string_view()\n , char const* root_hash = nullptr);\n void add_file (std::string const& path, std::int64_t file_size\n , file_flags_t file_flags = {}\n , std::time_t mtime = 0, string_view symlink_path = string_view()\n , char const* root_hash = nullptr);\n+ void add_file_borrow (error_code& ec, string_view filename\n+ , std::string const& path, std::int64_t file_size\n+ , file_flags_t file_flags = {}, char const* filehash = nullptr\n+ , std::int64_t mtime = 0, string_view symlink_path = string_view()\n+ , char const* root_hash = nullptr);\n void rename_file (file_index_t index, std::string const& new_filename);\n std::vector map_block (piece_index_t piece, std::int64_t offset\n , std::int64_t size) const;\n peer_request map_file (file_index_t file, std::int64_t offset, int size)\n const;\n int num_files () const noexcept;\n file_index_t end_file () const noexcept;\n@@ -3947,28 +3947,28 @@\n int piece_size (piece_index_t index) const;\n int piece_size2 (piece_index_t index) const;\n int blocks_in_piece2 (piece_index_t index) const;\n std::string const& name () const;\n void set_name (std::string const& n);\n void swap (file_storage& ti) noexcept;\n void canonicalize ();\n- sha1_hash hash (file_index_t index) const;\n- std::time_t mtime (file_index_t index) const;\n std::string symlink (file_index_t index) const;\n bool pad_file_at (file_index_t index) const;\n+ sha256_hash root (file_index_t index) const;\n+ std::int64_t file_offset (file_index_t index) const;\n+ sha1_hash hash (file_index_t index) const;\n std::int64_t file_size (file_index_t index) const;\n std::string file_path (file_index_t index, std::string const& save_path =\n \"\") const;\n- std::int64_t file_offset (file_index_t index) const;\n char const* root_ptr (file_index_t const index) const;\n- sha256_hash root (file_index_t index) const;\n+ std::time_t mtime (file_index_t index) const;\n string_view file_name (file_index_t index) const;\n+ index_range file_piece_range (file_index_t) const;\n int file_num_blocks (file_index_t index) const;\n int file_num_pieces (file_index_t index) const;\n- index_range file_piece_range (file_index_t) const;\n int file_first_block_node (file_index_t index) const;\n int file_first_piece_node (file_index_t index) const;\n std::uint32_t file_path_hash (file_index_t index, std::string const&\n save_path) const;\n void all_path_hashes (std::unordered_set& table) const;\n file_flags_t file_flags (file_index_t index) const;\n bool file_absolute_path (file_index_t index) const;\n@@ -3993,33 +3993,33 @@\n [report_issue]\n ***** reserve() *****\n void reserve (int num_files);\n allocates space for num_files in the internal file list. This can be used to\n avoid reallocating the internal file list when the number of files to be added\n is known up-front.\n [report_issue]\n-***** add_file() add_file_borrow() *****\n+***** add_file_borrow() add_file() *****\n void add_file (error_code& ec, std::string const& path, std::int64_t file_size\n , file_flags_t file_flags = {}\n , std::time_t mtime = 0, string_view symlink_path = string_view()\n , char const* root_hash = nullptr);\n-void add_file_borrow (error_code& ec, string_view filename\n- , std::string const& path, std::int64_t file_size\n- , file_flags_t file_flags = {}, char const* filehash = nullptr\n- , std::int64_t mtime = 0, string_view symlink_path = string_view()\n- , char const* root_hash = nullptr);\n void add_file_borrow (string_view filename\n , std::string const& path, std::int64_t file_size\n , file_flags_t file_flags = {}, char const* filehash = nullptr\n , std::int64_t mtime = 0, string_view symlink_path = string_view()\n , char const* root_hash = nullptr);\n void add_file (std::string const& path, std::int64_t file_size\n , file_flags_t file_flags = {}\n , std::time_t mtime = 0, string_view symlink_path = string_view()\n , char const* root_hash = nullptr);\n+void add_file_borrow (error_code& ec, string_view filename\n+ , std::string const& path, std::int64_t file_size\n+ , file_flags_t file_flags = {}, char const* filehash = nullptr\n+ , std::int64_t mtime = 0, string_view symlink_path = string_view()\n+ , char const* root_hash = nullptr);\n Adds a file to the file storage. The add_file_borrow version expects that\n filename is the file name (without a path) of the file that's being added. This\n memory is borrowed, i.e. it is the caller's responsibility to make sure it\n stays valid throughout the lifetime of this file_storage object or any copy of\n it. The same thing applies to filehash, which is an optional pointer to a 20\n byte binary SHA-1 hash of the file.\n if filename is empty, the filename from path is used and not borrowed.\n@@ -4109,15 +4109,15 @@\n [report_issue]\n ***** piece_range() *****\n index_range piece_range () const noexcept;\n returns an implementation-defined type that can be used as the container in a\n range-for loop. Where the values are the indices of all pieces in the\n file_storage.\n [report_issue]\n-***** piece_length() set_piece_length() *****\n+***** set_piece_length() piece_length() *****\n int piece_length () const;\n void set_piece_length (int l);\n set and get the size of each piece in this torrent. It must be a power of two\n and at least 16 kiB.\n [report_issue]\n ***** piece_size() *****\n int piece_size (piece_index_t index) const;\n@@ -4131,40 +4131,40 @@\n where all files are piece aligned and padded. i.e. The pad files are not\n considered part of the piece for this purpose.\n [report_issue]\n ***** blocks_in_piece2() *****\n int blocks_in_piece2 (piece_index_t index) const;\n returns the number of blocks in the specified piece, for v2 torrents.\n [report_issue]\n-***** set_name() name() *****\n+***** name() set_name() *****\n std::string const& name () const;\n void set_name (std::string const& n);\n set and get the name of this torrent. For multi-file torrents, this is also the\n name of the root directory all the files are stored in.\n [report_issue]\n ***** swap() *****\n void swap (file_storage& ti) noexcept;\n swap all content of this with ti.\n [report_issue]\n ***** canonicalize() *****\n void canonicalize ();\n arrange files and padding to match the canonical form required by BEP 52\n [report_issue]\n-***** file_name() file_size() root_ptr() symlink() pad_file_at() root()\n-file_offset() hash() mtime() file_path() *****\n-sha1_hash hash (file_index_t index) const;\n-std::time_t mtime (file_index_t index) const;\n+***** mtime() file_name() file_offset() file_size() file_path() root() symlink\n+() pad_file_at() root_ptr() hash() *****\n std::string symlink (file_index_t index) const;\n bool pad_file_at (file_index_t index) const;\n+sha256_hash root (file_index_t index) const;\n+std::int64_t file_offset (file_index_t index) const;\n+sha1_hash hash (file_index_t index) const;\n std::int64_t file_size (file_index_t index) const;\n std::string file_path (file_index_t index, std::string const& save_path = \"\")\n const;\n-std::int64_t file_offset (file_index_t index) const;\n char const* root_ptr (file_index_t const index) const;\n-sha256_hash root (file_index_t index) const;\n+std::time_t mtime (file_index_t index) const;\n string_view file_name (file_index_t index) const;\n These functions are used to query attributes of files at a given index.\n The hash() is a SHA-1 hash of the file, or 0 if none was provided in the\n torrent file. This can potentially be used to join a bittorrent network with\n other file sharing networks.\n root() returns the SHA-256 merkle tree root of the specified file, in case this\n is a v2 torrent. Otherwise returns zeros. root_ptr() returns a pointer to the\n@@ -4178,24 +4178,24 @@\n file_size() returns the size of a file.\n pad_file_at() returns true if the file at the given index is a pad-file.\n file_name() returns just the name of the file, whereas file_path() returns the\n path (inside the torrent file) with the filename appended.\n file_offset() returns the byte offset within the torrent file where this file\n starts. It can be used to map the file to a piece index (given the piece size).\n [report_issue]\n-***** file_num_pieces() file_num_blocks() file_piece_range() *****\n+***** file_piece_range() file_num_pieces() file_num_blocks() *****\n+index_range file_piece_range (file_index_t) const;\n int file_num_blocks (file_index_t index) const;\n int file_num_pieces (file_index_t index) const;\n-index_range file_piece_range (file_index_t) const;\n Returns the number of pieces or blocks the file atindexspans, under the\n assumption that the file is aligned to the start of a piece. This is only\n meaningful for v2 torrents, where files are guaranteed such alignment. These\n numbers are used to size and navigate the merkle hash tree for each file.\n [report_issue]\n-***** file_first_block_node() file_first_piece_node() *****\n+***** file_first_piece_node() file_first_block_node() *****\n int file_first_block_node (file_index_t index) const;\n int file_first_piece_node (file_index_t index) const;\n index of first piece node in the merkle tree\n [report_issue]\n ***** file_path_hash() *****\n std::uint32_t file_path_hash (file_index_t index, std::string const& save_path)\n const;\n@@ -4214,15 +4214,15 @@\n returns a bitmask of flags from file_flags_t that apply to file at index.\n [report_issue]\n ***** file_absolute_path() *****\n bool file_absolute_path (file_index_t index) const;\n returns true if the file at the specified index has been renamed to have an\n absolute path, i.e. is not anchored in the save path of the torrent.\n [report_issue]\n-***** file_index_at_offset() file_index_at_piece() *****\n+***** file_index_at_piece() file_index_at_offset() *****\n file_index_t file_index_at_offset (std::int64_t offset) const;\n file_index_t file_index_at_piece (piece_index_t piece) const;\n returns the index of the file at the given offset in the torrent\n [report_issue]\n ***** file_index_for_root() *****\n file_index_t file_index_for_root (sha256_hash const& root_hash) const;\n finds the file with the given root hash and returns its index if there is no\n@@ -4357,32 +4357,32 @@\n struct client_data_t\n {\n client_data_t () = default;\n explicit client_data_t (T* v);\n client_data_t& operator= (T* v);\n T* get () const;\n explicit operator T () const;\n- operator void* () const = delete;\n operator void const* () const = delete;\n client_data_t& operator= (void*) = delete;\n client_data_t& operator= (void const*) = delete;\n+ operator void* () const = delete;\n \n template ::value>::type>\n };\n [report_issue]\n ***** client_data_t() *****\n client_data_t () = default;\n construct a nullptr client data\n [report_issue]\n-***** const*() operator=() void*() *****\n-operator void* () const = delete;\n+***** void*() operator=() const*() *****\n operator void const* () const = delete;\n client_data_t& operator= (void*) = delete;\n client_data_t& operator= (void const*) = delete;\n+operator void* () const = delete;\n we don't allow type-unsafe operations\n [report_issue]\n ****** add_torrent_params ******\n Declared in \"libtorrent/add_torrent_params.hpp\"\n The add_torrent_params contains all the information in a .torrent file along\n with all information necessary to add that torrent to a session. The key fields\n when adding a torrent are:\n@@ -4684,18 +4684,18 @@\n ****** peer_class_type_filter ******\n Declared in \"libtorrent/peer_class_type_filter.hpp\"\n peer_class_type_filter is a simple container for rules for adding and\n subtracting peer-classes from peers. It is applied after the peer class filter\n is applied (which is based on the peer's IP address).\n struct peer_class_type_filter\n {\n- void add (socket_type_t const st, peer_class_t const peer_class);\n void remove (socket_type_t const st, peer_class_t const peer_class);\n- void allow (socket_type_t const st, peer_class_t const peer_class);\n+ void add (socket_type_t const st, peer_class_t const peer_class);\n void disallow (socket_type_t const st, peer_class_t const peer_class);\n+ void allow (socket_type_t const st, peer_class_t const peer_class);\n std::uint32_t apply (socket_type_t const st, std::uint32_t peer_class_mask);\n friend bool operator== (peer_class_type_filter const& lhs\n , peer_class_type_filter const& rhs);\n \n enum socket_type_t\n {\n tcp_socket,\n@@ -4703,23 +4703,23 @@\n ssl_tcp_socket,\n ssl_utp_socket,\n i2p_socket,\n num_socket_types,\n };\n };\n [report_issue]\n-***** remove() add() *****\n-void add (socket_type_t const st, peer_class_t const peer_class);\n+***** add() remove() *****\n void remove (socket_type_t const st, peer_class_t const peer_class);\n+void add (socket_type_t const st, peer_class_t const peer_class);\n add() and remove() adds and removes a peer class to be added to new peers based\n on socket type.\n [report_issue]\n ***** disallow() allow() *****\n-void allow (socket_type_t const st, peer_class_t const peer_class);\n void disallow (socket_type_t const st, peer_class_t const peer_class);\n+void allow (socket_type_t const st, peer_class_t const peer_class);\n disallow() and allow() adds and removes a peer class to be removed from new\n peers based on socket type.\n The peer_class argument cannot be greater than 31. The bitmasks representing\n peer classes in the peer_class_type_filter are 32 bits.\n [report_issue]\n ***** apply() *****\n std::uint32_t apply (socket_type_t const st, std::uint32_t peer_class_mask);\n@@ -4740,16 +4740,16 @@\n [report_issue]\n ****** block_info ******\n Declared in \"libtorrent/torrent_handle.hpp\"\n holds the state of a block in a piece. Who we requested it from and how far\n along we are at downloading it.\n struct block_info\n {\n- tcp::endpoint peer () const;\n void set_peer (tcp::endpoint const& ep);\n+ tcp::endpoint peer () const;\n \n enum block_state_t\n {\n none,\n requested,\n writing,\n finished,\n@@ -4757,17 +4757,17 @@\n \n unsigned bytes_progress:15;\n unsigned block_size:15;\n unsigned state:2;\n unsigned num_peers:14;\n };\n [report_issue]\n-***** set_peer() peer() *****\n-tcp::endpoint peer () const;\n+***** peer() set_peer() *****\n void set_peer (tcp::endpoint const& ep);\n+tcp::endpoint peer () const;\n The peer is the ip address of the peer this block was downloaded from.\n [report_issue]\n ***** enum block_state_t *****\n Declared in \"libtorrent/torrent_handle.hpp\"\n ___________________________________________________________________________\n |name_____|value|description________________________________________________|\n |none |0 |This block has not been downloaded or requested form any |\n@@ -4862,105 +4862,105 @@\n flags = {}) const;\n void add_piece (piece_index_t piece, std::vector data,\n add_piece_flags_t flags = {}) const;\n void read_piece (piece_index_t piece) const;\n bool have_piece (piece_index_t piece) const;\n void get_peer_info (std::vector& v) const;\n torrent_status status (status_flags_t flags = status_flags_t::all()) const;\n- void get_download_queue (std::vector& queue) const;\n std::vector get_download_queue () const;\n+ void get_download_queue (std::vector& queue) const;\n void set_piece_deadline (piece_index_t index, int deadline, deadline_flags_t\n flags = {}) const;\n- void clear_piece_deadlines () const;\n void reset_piece_deadline (piece_index_t index) const;\n+ void clear_piece_deadlines () const;\n void file_progress (std::vector& progress,\n file_progress_flags_t flags = {}) const;\n std::vector file_progress (file_progress_flags_t flags = {})\n const;\n std::vector file_status () const;\n void clear_error () const;\n- void replace_trackers (std::vector const&) const;\n void add_tracker (announce_entry const&) const;\n+ void replace_trackers (std::vector const&) const;\n std::vector trackers () const;\n+ void add_url_seed (std::string const& url) const;\n std::set url_seeds () const;\n void remove_url_seed (std::string const& url) const;\n- void add_url_seed (std::string const& url) const;\n- std::set http_seeds () const;\n void remove_http_seed (std::string const& url) const;\n void add_http_seed (std::string const& url) const;\n+ std::set http_seeds () const;\n void add_extension (\n std::function(torrent_handle const&,\n client_data_t)> const& ext\n , client_data_t userdata = client_data_t{});\n bool set_metadata (span metadata) const;\n bool is_valid () const;\n void resume () const;\n void pause (pause_flags_t flags = {}) const;\n+ void set_flags (torrent_flags_t flags) const;\n torrent_flags_t flags () const;\n- void unset_flags (torrent_flags_t flags) const;\n void set_flags (torrent_flags_t flags, torrent_flags_t mask) const;\n- void set_flags (torrent_flags_t flags) const;\n+ void unset_flags (torrent_flags_t flags) const;\n void flush_cache () const;\n void force_recheck () const;\n void save_resume_data (resume_data_flags_t flags = {}) const;\n bool need_save_resume_data () const;\n- void queue_position_up () const;\n- queue_position_t queue_position () const;\n void queue_position_bottom () const;\n+ queue_position_t queue_position () const;\n+ void queue_position_up () const;\n void queue_position_down () const;\n void queue_position_top () const;\n void queue_position_set (queue_position_t p) const;\n+ void set_ssl_certificate_buffer (std::string const& certificate\n+ , std::string const& private_key\n+ , std::string const& dh_params);\n void set_ssl_certificate (std::string const& certificate\n , std::string const& private_key\n , std::string const& dh_params\n , std::string const& passphrase = \"\");\n- void set_ssl_certificate_buffer (std::string const& certificate\n- , std::string const& private_key\n- , std::string const& dh_params);\n- std::shared_ptr torrent_file_with_hashes () const;\n std::shared_ptr torrent_file () const;\n+ std::shared_ptr torrent_file_with_hashes () const;\n std::vector> piece_layers () const;\n void piece_availability (std::vector& avail) const;\n+ void piece_priority (piece_index_t index, download_priority_t priority)\n+const;\n std::vector get_piece_priorities () const;\n void prioritize_pieces (std::vector> const& pieces) const;\n download_priority_t piece_priority (piece_index_t index) const;\n- void piece_priority (piece_index_t index, download_priority_t priority)\n-const;\n void prioritize_pieces (std::vector const& pieces)\n const;\n- download_priority_t file_priority (file_index_t index) const;\n void file_priority (file_index_t index, download_priority_t priority) const;\n- void prioritize_files (std::vector const& files) const;\n+ download_priority_t file_priority (file_index_t index) const;\n std::vector get_file_priorities () const;\n+ void prioritize_files (std::vector const& files) const;\n+ void force_lsd_announce () const;\n+ void force_dht_announce () const;\n void force_reannounce (int seconds = 0, int idx = -1, reannounce_flags_t =\n {}) const;\n- void force_dht_announce () const;\n- void force_lsd_announce () const;\n void scrape_tracker (int idx = -1) const;\n int upload_limit () const;\n- int download_limit () const;\n void set_upload_limit (int limit) const;\n void set_download_limit (int limit) const;\n+ int download_limit () const;\n void connect_peer (tcp::endpoint const& adr, peer_source_flags_t source = {}\n , pex_flags_t flags = pex_encryption | pex_utp | pex_holepunch) const;\n void clear_peers ();\n void set_max_uploads (int max_uploads) const;\n int max_uploads () const;\n int max_connections () const;\n void set_max_connections (int max_connections) const;\n void move_storage (std::string const& save_path\n , move_flags_t flags = move_flags_t::always_replace_files\n ) const;\n void rename_file (file_index_t index, std::string const& new_name) const;\n info_hash_t info_hashes () const;\n sha1_hash info_hash () const;\n- bool operator< (const torrent_handle& h) const;\n- bool operator== (const torrent_handle& h) const;\n bool operator!= (const torrent_handle& h) const;\n+ bool operator== (const torrent_handle& h) const;\n+ bool operator< (const torrent_handle& h) const;\n std::uint32_t id () const;\n std::shared_ptr native_handle () const;\n client_data_t userdata () const;\n bool in_session () const;\n \n static constexpr add_piece_flags_t overwrite_existing = 0_bit;\n static constexpr status_flags_t query_distributed_copies = 0_bit;\n@@ -5040,25 +5040,25 @@\n returned in the torrent_status. Some information in there is relatively\n expensive to calculate, and if you're not interested in it (and see performance\n issues), you can filter them out.\n By default everything is included. The flags you can use to decide what to\n include are defined in this class.\n [report_issue]\n ***** get_download_queue() *****\n-void get_download_queue (std::vector& queue) const;\n std::vector get_download_queue () const;\n+void get_download_queue (std::vector& queue) const;\n get_download_queue() returns a vector with information about pieces that are\n partially downloaded or not downloaded but partially requested. See\n partial_piece_info for the fields in the returned vector.\n [report_issue]\n-***** clear_piece_deadlines() reset_piece_deadline() set_piece_deadline() *****\n+***** set_piece_deadline() clear_piece_deadlines() reset_piece_deadline() *****\n void set_piece_deadline (piece_index_t index, int deadline, deadline_flags_t\n flags = {}) const;\n-void clear_piece_deadlines () const;\n void reset_piece_deadline (piece_index_t index) const;\n+void clear_piece_deadlines () const;\n This function sets or resets the deadline associated with a specific piece\n index (index). libtorrent will attempt to download this entire piece before the\n deadline expires. This is not necessarily possible, but pieces with a more\n recent deadline will always be prioritized over pieces with a deadline further\n ahead in time. The deadline (and flags) of a piece can be changed by calling\n this function again.\n If the piece is already downloaded when this call is made, nothing happens,\n@@ -5099,17 +5099,17 @@\n See open_file_state\n [report_issue]\n ***** clear_error() *****\n void clear_error () const;\n If the torrent is in an error state (i.e. torrent_status::error is non-empty),\n this will clear the error and start the torrent again.\n [report_issue]\n-***** replace_trackers() trackers() add_tracker() *****\n-void replace_trackers (std::vector const&) const;\n+***** trackers() replace_trackers() add_tracker() *****\n void add_tracker (announce_entry const&) const;\n+void replace_trackers (std::vector const&) const;\n std::vector trackers () const;\n trackers() will return the list of trackers for this torrent. The announce\n entry contains both a string url which specify the announce url for the tracker\n as well as an int tier, which is specifies the order in which this tracker is\n tried. If you want libtorrent to use another list of trackers for this torrent,\n you can use replace_trackers() which takes a list of the same form as the one\n returned from trackers() and will replace it. If you want an immediate effect,\n@@ -5117,30 +5117,30 @@\n add_tracker() will look if the specified tracker is already in the set. If it\n is, it doesn't do anything. If it's not in the current set of trackers, it will\n insert it in the tier specified in the announce_entry.\n The updated set of trackers will be saved in the resume data, and when a\n torrent is started with resume data, the trackers from the resume data will\n replace the original ones.\n [report_issue]\n-***** url_seeds() add_url_seed() remove_url_seed() *****\n+***** url_seeds() remove_url_seed() add_url_seed() *****\n+void add_url_seed (std::string const& url) const;\n std::set url_seeds () const;\n void remove_url_seed (std::string const& url) const;\n-void add_url_seed (std::string const& url) const;\n add_url_seed() adds another url to the torrent's list of url seeds. If the\n given url already exists in that list, the call has no effect. The torrent will\n connect to the server and try to download pieces from it, unless it's paused,\n queued, checking or seeding. remove_url_seed() removes the given url if it\n exists already. url_seeds() return a set of the url seeds currently in this\n torrent. Note that URLs that fails may be removed automatically from the list.\n See http_seeding for more information.\n [report_issue]\n-***** remove_http_seed() http_seeds() add_http_seed() *****\n-std::set http_seeds () const;\n+***** http_seeds() add_http_seed() remove_http_seed() *****\n void remove_http_seed (std::string const& url) const;\n void add_http_seed (std::string const& url) const;\n+std::set http_seeds () const;\n These functions are identical as the *_url_seed() variants, but they operate on\n BEP_17 web seeds instead of BEP_19.\n See http_seeding for more information.\n [report_issue]\n ***** add_extension() *****\n void add_extension (\n std::function(torrent_handle const&,\n@@ -5189,18 +5189,18 @@\n Note\n Torrents that are auto-managed may be automatically resumed again. It does not\n make sense to pause an auto-managed torrent without making it not auto-managed\n first. Torrents are auto-managed by default when added to the session. For more\n information, see queuing.\n [report_issue]\n ***** unset_flags() set_flags() flags() *****\n+void set_flags (torrent_flags_t flags) const;\n torrent_flags_t flags () const;\n-void unset_flags (torrent_flags_t flags) const;\n void set_flags (torrent_flags_t flags, torrent_flags_t mask) const;\n-void set_flags (torrent_flags_t flags) const;\n+void unset_flags (torrent_flags_t flags) const;\n sets and gets the torrent state flags. See torrent_flags_t. The set_flags\n overload that take a mask will affect all flags part of the mask, and set their\n values to what the flags argument is set to. This allows clearing and setting\n flags in a single function call. The set_flags overload that just takes flags,\n sets all the specified flags and leave any other flags unchanged. unset_flags\n clears the specified flags, while leaving any other flags unchanged.\n Theseed_modeflag is special, it can only be cleared once the torrent has been\n@@ -5320,19 +5320,19 @@\n saving resume data periodically, it makes sense to skip any torrent which\n hasn't downloaded anything since the last time.\n Note\n A torrent's resume data is considered saved as soon as the\n save_resume_data_alert is posted. It is important to make sure this alert is\n received and handled in order for this function to be meaningful.\n [report_issue]\n-***** queue_position_up() queue_position_down() queue_position_top()\n-queue_position_bottom() queue_position() *****\n-void queue_position_up () const;\n-queue_position_t queue_position () const;\n+***** queue_position() queue_position_up() queue_position_bottom()\n+queue_position_down() queue_position_top() *****\n void queue_position_bottom () const;\n+queue_position_t queue_position () const;\n+void queue_position_up () const;\n void queue_position_down () const;\n void queue_position_top () const;\n Every torrent that is added is assigned a queue position exactly one greater\n than the greatest queue position of all existing torrents. Torrents that are\n being seeded have -1 as their queue position, since they're no longer in line\n to be downloaded.\n When a torrent is removed or turns into a seed, all torrents with greater queue\n@@ -5348,22 +5348,22 @@\n [report_issue]\n ***** queue_position_set() *****\n void queue_position_set (queue_position_t p) const;\n updates the position in the queue for this torrent. The relative order of all\n other torrents remain intact but their numerical queue position shifts to make\n space for this torrent's new position\n [report_issue]\n-***** set_ssl_certificate_buffer() set_ssl_certificate() *****\n+***** set_ssl_certificate() set_ssl_certificate_buffer() *****\n+void set_ssl_certificate_buffer (std::string const& certificate\n+ , std::string const& private_key\n+ , std::string const& dh_params);\n void set_ssl_certificate (std::string const& certificate\n , std::string const& private_key\n , std::string const& dh_params\n , std::string const& passphrase = \"\");\n-void set_ssl_certificate_buffer (std::string const& certificate\n- , std::string const& private_key\n- , std::string const& dh_params);\n For SSL torrents, use this to specify a path to a .pem file to use as this\n client's certificate. The certificate must be signed by the certificate in the\n .torrent file to be valid.\n The set_ssl_certificate_buffer() overload takes the actual certificate, private\n key and DH params as strings, rather than paths to files.\n cert is a path to the (signed) certificate in .pem format corresponding to this\n torrent.\n@@ -5377,17 +5377,17 @@\n Note that when a torrent first starts up, and it needs a certificate, it will\n suspend connecting to any peers until it has one. It's typically desirable to\n resume the torrent after setting the SSL certificate.\n If you receive a torrent_need_cert_alert, you need to call this to provide a\n valid cert. If you don't have a cert you won't be allowed to connect to any\n peers.\n [report_issue]\n-***** torrent_file() torrent_file_with_hashes() *****\n-std::shared_ptr torrent_file_with_hashes () const;\n+***** torrent_file_with_hashes() torrent_file() *****\n std::shared_ptr torrent_file () const;\n+std::shared_ptr torrent_file_with_hashes () const;\n torrent_file() returns a pointer to the torrent_info object associated with\n this torrent. The torrent_info object may be a copy of the internal object. If\n the torrent doesn't have metadata, the pointer will not be initialized (i.e. a\n nullptr). The torrent may be in a state without metadata only if it was started\n without a .torrent file, e.g. by being added by magnet link.\n Note that the torrent_info object returned here may be a different instance\n than the one added to the session, with different attributes like piece layers,\n@@ -5423,19 +5423,19 @@\n this torrent. libtorrent does not keep track of availability for seeds, so if\n the torrent is seeding the availability for all pieces is reported as 0.\n The piece availability is the number of peers that we are connected that has\n advertised having a particular piece. This is the information that libtorrent\n uses in order to prefer picking rare pieces.\n [report_issue]\n ***** piece_priority() prioritize_pieces() get_piece_priorities() *****\n+void piece_priority (piece_index_t index, download_priority_t priority) const;\n std::vector get_piece_priorities () const;\n void prioritize_pieces (std::vector> const& pieces) const;\n download_priority_t piece_priority (piece_index_t index) const;\n-void piece_priority (piece_index_t index, download_priority_t priority) const;\n void prioritize_pieces (std::vector const& pieces) const;\n These functions are used to set and get the priority of individual pieces. By\n default all pieces have priority 4. That means that the random rarest first\n algorithm is effectively active for all pieces. You may however change the\n priority of individual pieces. There are 8 priority levels. 0 means not to\n download the piece at all. Otherwise, lower priority values means less likely\n to be picked. Piece priority takes precedence over piece availability. Every\n@@ -5457,18 +5457,18 @@\n get_piece_priorities returns a vector with one element for each piece in the\n torrent. Each element is the current priority of that piece.\n It's possible to cancel the effect of file priorities by setting the priorities\n for the affected pieces. Care has to be taken when mixing usage of file- and\n piece priorities.\n [report_issue]\n ***** get_file_priorities() prioritize_files() file_priority() *****\n-download_priority_t file_priority (file_index_t index) const;\n void file_priority (file_index_t index, download_priority_t priority) const;\n-void prioritize_files (std::vector const& files) const;\n+download_priority_t file_priority (file_index_t index) const;\n std::vector get_file_priorities () const;\n+void prioritize_files (std::vector const& files) const;\n index must be in the range [0, number_of_files).\n file_priority() queries or sets the priority of file index.\n prioritize_files() takes a vector that has at as many elements as there are\n files in the torrent. Each entry is the priority of that file. The function\n sets the priorities of all the pieces in the torrent based on the vector.\n get_file_priorities() returns a vector with the priorities of all files.\n The priority values are the same as for piece_priority(). See\n@@ -5487,19 +5487,19 @@\n When combining file- and piece priorities, the resume file will record both.\n When loading the resume data, the file priorities will be applied first, then\n the piece priorities.\n Moving data from a file into the part file is currently not supported. If a\n file has its priority set to 0 after it has already been created, it will not\n be moved into the partfile.\n [report_issue]\n-***** force_dht_announce() force_lsd_announce() force_reannounce() *****\n+***** force_lsd_announce() force_reannounce() force_dht_announce() *****\n+void force_lsd_announce () const;\n+void force_dht_announce () const;\n void force_reannounce (int seconds = 0, int idx = -1, reannounce_flags_t = {})\n const;\n-void force_dht_announce () const;\n-void force_lsd_announce () const;\n force_reannounce() will force this torrent to do another tracker request, to\n receive new peers. The seconds argument specifies how many seconds from now to\n issue the tracker announces.\n If the tracker's min_interval has not passed since the last announce, the\n forced announce will be scheduled to happen immediately as the min_interval\n expires. This is to honor trackers minimum re-announce interval settings.\n The tracker_index argument specifies which tracker to re-announce. If set to -\n@@ -5520,17 +5520,17 @@\n fields in the torrent_status struct once it completes. When it completes, it\n will generate a scrape_reply_alert. If it fails, it will generate a\n scrape_failed_alert.\n [report_issue]\n ***** upload_limit() set_download_limit() set_upload_limit() download_limit()\n *****\n int upload_limit () const;\n-int download_limit () const;\n void set_upload_limit (int limit) const;\n void set_download_limit (int limit) const;\n+int download_limit () const;\n set_upload_limit will limit the upload bandwidth used by this particular\n torrent to the limit you set. It is given as the number of bytes per second the\n torrent is allowed to upload. set_download_limit works the same way but for\n download bandwidth instead of upload bandwidth. Note that setting a higher\n limit on a torrent then the global limit (settings_pack::upload_rate_limit)\n will not override the global rate limit. The torrent can never upload more than\n the global rate limit.\n@@ -5562,15 +5562,15 @@\n int max_uploads () const;\n set_max_uploads() sets the maximum number of peers that's unchoked at the same\n time on this torrent. If you set this to -1, there will be no limit. This\n defaults to infinite. The primary setting controlling this is the global\n unchoke slots limit, set by unchoke_slots_limit in settings_pack.\n max_uploads() returns the current settings.\n [report_issue]\n-***** max_connections() set_max_connections() *****\n+***** set_max_connections() max_connections() *****\n int max_connections () const;\n void set_max_connections (int max_connections) const;\n set_max_connections() sets the maximum number of connection this torrent will\n open. If all connections are used up, incoming connections may be refused or\n poor connections may be closed. This must be at least 2. The default is\n unlimited number of connections. If -1 is given to the function, it means\n unlimited. There is also a global limit of the number of connections, set by\n@@ -5631,18 +5631,18 @@\n sha1_hash info_hash () const;\n returns the info-hash(es) of the torrent. If this handle is to a torrent that\n hasn't loaded yet (for instance by being added) by a URL, the returned value is\n undefined. The info_hash() returns the SHA-1 info-hash for v1 torrents and a\n truncated hash for v2 torrents. For the full v2 info-hash, use info_hashes()\n instead.\n [report_issue]\n-***** operator<() operator!=() operator==() *****\n-bool operator< (const torrent_handle& h) const;\n-bool operator== (const torrent_handle& h) const;\n+***** operator==() operator!=() operator<() *****\n bool operator!= (const torrent_handle& h) const;\n+bool operator== (const torrent_handle& h) const;\n+bool operator< (const torrent_handle& h) const;\n comparison operators. The order of the torrents is unspecified but stable.\n [report_issue]\n ***** id() *****\n std::uint32_t id () const;\n returns a unique identifier for this torrent. It's not a dense index. It's not\n preserved across sessions.\n [report_issue]\n@@ -5873,15 +5873,15 @@\n [report_issue]\n ***** remove_torrent() *****\n virtual void remove_torrent (storage_index_t) = 0;\n remove the storage with the specified index. This is not expected to delete any\n files from disk, just to clean up any resources associated with the specified\n storage.\n [report_issue]\n-***** async_write() async_read() *****\n+***** async_read() async_write() *****\n virtual void async_read (storage_index_t storage, peer_request const& r\n , std::function handler\n , disk_job_flags_t flags = {}) = 0;\n virtual bool async_write (storage_index_t storage, peer_request const& r\n , char const* buf, std::shared_ptr o\n , std::function handler\n , disk_job_flags_t flags = {}) = 0;\n@@ -6076,16 +6076,16 @@\n (class that implements disk_interface). This is held by the internal libtorrent\n torrent object to tie the storage object allocated for a torrent to the\n lifetime of the internal torrent object. When a torrent is removed from the\n session, this holder is destructed and will inform the disk object.\n struct storage_holder\n {\n storage_holder (storage_index_t idx, disk_interface& disk_io);\n- storage_holder () = default;\n ~storage_holder ();\n+ storage_holder () = default;\n explicit operator bool () const;\n operator storage_index_t () const;\n void reset ();\n storage_holder& operator= (storage_holder const&) = delete;\n storage_holder (storage_holder const&) = delete;\n storage_holder (storage_holder&& rhs) noexcept;\n storage_holder& operator= (storage_holder&& rhs) noexcept;\n@@ -6174,21 +6174,21 @@\n [report_issue]\n ****** settings_interface ******\n Declared in \"libtorrent/settings_pack.hpp\"\n the common interface to settings_pack and the internal representation of\n settings.\n struct settings_interface\n {\n- virtual bool has_val (int name) const = 0;\n+ virtual void set_int (int name, int val) = 0;\n virtual void set_bool (int name, bool val) = 0;\n virtual void set_str (int name, std::string val) = 0;\n- virtual void set_int (int name, int val) = 0;\n- virtual bool get_bool (int name) const = 0;\n- virtual int get_int (int name) const = 0;\n+ virtual bool has_val (int name) const = 0;\n virtual std::string const& get_str (int name) const = 0;\n+ virtual int get_int (int name) const = 0;\n+ virtual bool get_bool (int name) const = 0;\n };\n [report_issue]\n ****** file_open_mode_t ******\n Declared in \"libtorrent/disk_interface.hpp\"\n read_only\n open the file for reading only\n write_only\n@@ -6469,15 +6469,15 @@\n char const* old_name () const;\n \n static constexpr alert_category_t static_category = alert_category::\n storage;\n file_index_t const index;\n };\n [report_issue]\n-***** old_name() new_name() *****\n+***** new_name() old_name() *****\n char const* new_name () const;\n char const* old_name () const;\n returns the new and previous file name, respectively.\n [report_issue]\n index\n refers to the index of the file that was renamed,\n [report_issue]\n@@ -7103,15 +7103,15 @@\n char const* old_path () const;\n char const* storage_path () const;\n \n static constexpr alert_category_t static_category = alert_category::\n storage;\n };\n [report_issue]\n-***** old_path() storage_path() *****\n+***** storage_path() old_path() *****\n char const* old_path () const;\n char const* storage_path () const;\n the path the torrent was moved to and from, respectively.\n [report_issue]\n ****** storage_moved_failed_alert ******\n Declared in \"libtorrent/alert_types.hpp\"\n The storage_moved_failed_alert is generated when an attempt to move the\n@@ -8356,15 +8356,15 @@\n std::vector> nodes () const;\n int num_nodes () const;\n \n static constexpr alert_category_t static_category = alert_category::dht;\n sha1_hash node_id;\n };\n [report_issue]\n-***** num_nodes() nodes() *****\n+***** nodes() num_nodes() *****\n std::vector> nodes () const;\n int num_nodes () const;\n the number of nodes in the routing table and the actual nodes.\n [report_issue]\n node_id\n the local DHT node's node-ID this routing table belongs to\n [report_issue]\n@@ -8387,30 +8387,30 @@\n ****** dht_sample_infohashes_alert ******\n Declared in \"libtorrent/alert_types.hpp\"\n posted as a response to a call to session::dht_sample_infohashes() with the\n information from the DHT response message.\n struct dht_sample_infohashes_alert final : alert\n {\n std::string message () const override;\n- std::vector samples () const;\n int num_samples () const;\n+ std::vector samples () const;\n int num_nodes () const;\n std::vector> nodes () const;\n \n static constexpr alert_category_t static_category = alert_category::\n dht_operation;\n sha1_hash node_id;\n aux::noexcept_movable endpoint;\n time_duration const interval;\n int const num_infohashes;\n };\n [report_issue]\n-***** num_samples() samples() *****\n-std::vector samples () const;\n+***** samples() num_samples() *****\n int num_samples () const;\n+std::vector samples () const;\n returns the number of info-hashes returned by the node, as well as the actual\n info-hashes. num_samples() is more efficient than samples().size().\n [report_issue]\n ***** num_nodes() *****\n int num_nodes () const;\n The total number of nodes returned by nodes().\n [report_issue]\n@@ -8559,16 +8559,16 @@\n metadata\n the metadata that was received by one of the torrents in conflict. One\n way to resolve the conflict is to remove both failing torrents and re-add\n it using this metadata\n [report_issue]\n ****** alert_cast() ******\n Declared in \"libtorrent/alert.hpp\"\n-template T* alert_cast (alert* a);\n template T const* alert_cast (alert const* a);\n+template T* alert_cast (alert* a);\n When you get an alert, you can use alert_cast<> to attempt to cast the pointer\n to a specific alert type, in order to query it for more information.\n Note\n alert_cast<> can only cast to an exact alert type, not a base class\n [report_issue]\n ****** operation_name() ******\n Declared in \"libtorrent/operations.hpp\"\n@@ -8726,23 +8726,23 @@\n ****** counters ******\n Declared in \"libtorrent/performance_counters.hpp\"\n struct counters\n {\n counters () ;\n counters& operator= (counters const&) & ;\n counters (counters const&) ;\n- std::int64_t inc_stats_counter (int c, std::int64_t value = 1) ;\n std::int64_t operator[] (int i) const ;\n+ std::int64_t inc_stats_counter (int c, std::int64_t value = 1) ;\n void blend_stats_counter (int c, std::int64_t value, int ratio) ;\n void set_value (int c, std::int64_t value) ;\n };\n [report_issue]\n-***** inc_stats_counter() operator[]() *****\n-std::int64_t inc_stats_counter (int c, std::int64_t value = 1) ;\n+***** operator[]() inc_stats_counter() *****\n std::int64_t operator[] (int i) const ;\n+std::int64_t inc_stats_counter (int c, std::int64_t value = 1) ;\n returns the new value\n [report_issue]\n ****** stats_metric ******\n Declared in \"libtorrent/session_stats.hpp\"\n describes one statistics metric from the session. For more information, see the\n session_statistics section.\n struct stats_metric\n@@ -8788,20 +8788,20 @@\n The ip_filter class is a set of rules that uniquely categorizes all ip\n addresses as allowed or disallowed. The default constructor creates a single\n rule that allows all addresses (0.0.0.0 - 255.255.255.255 for the IPv4 range,\n and the equivalent range covering all addresses for the IPv6 range).\n A default constructed ip_filter does not filter any address.\n struct ip_filter\n {\n+ ip_filter& operator= (ip_filter const&);\n ip_filter ();\n ip_filter& operator= (ip_filter&&);\n- ~ip_filter ();\n- ip_filter (ip_filter&&);\n ip_filter (ip_filter const&);\n- ip_filter& operator= (ip_filter const&);\n+ ip_filter (ip_filter&&);\n+ ~ip_filter ();\n bool empty () const;\n void add_rule (address const& first, address const& last, std::uint32_t\n flags);\n std::uint32_t access (address const& addr) const;\n filter_tuple_t export_filter () const;\n \n enum access_flags\n@@ -8851,19 +8851,19 @@\n Declared in \"libtorrent/ip_filter.hpp\"\n the port filter maps non-overlapping port ranges to flags. This is primarily\n used to indicate whether a range of ports should be connected to or not. The\n default is to have the full port range (0-65535) set to flag 0.\n class port_filter\n {\n port_filter ();\n- port_filter (port_filter&&);\n- port_filter& operator= (port_filter&&);\n port_filter (port_filter const&);\n+ port_filter (port_filter&&);\n ~port_filter ();\n port_filter& operator= (port_filter const&);\n+ port_filter& operator= (port_filter&&);\n void add_rule (std::uint16_t first, std::uint16_t last, std::uint32_t\n flags);\n std::uint32_t access (std::uint16_t port) const;\n \n enum access_flags\n {\n blocked,\n@@ -8905,46 +8905,46 @@\n Declared in \"libtorrent/entry.hpp\"\n The entry class represents one node in a bencoded hierarchy. It works as a\n variant type, it can be either a list, a dictionary (std::map), an integer or a\n string.\n class entry\n {\n data_type type () const;\n+ entry (preformatted_type);\n entry (dictionary_type);\n- entry (integer_type);\n- entry (list_type);\n entry (span);\n- entry (preformatted_type);\n+ entry (list_type);\n+ entry (integer_type);\n entry (U v);\n entry (data_type t);\n entry (bdecode_node const& n);\n entry& operator= (span) &;\n- entry& operator= (entry&&) & noexcept;\n+ entry& operator= (bdecode_node const&) &;\n entry& operator= (list_type) &;\n entry& operator= (preformatted_type) &;\n- entry& operator= (bdecode_node const&) &;\n- entry& operator= (integer_type) &;\n- entry& operator= (entry const&) &;\n entry& operator= (dictionary_type) &;\n+ entry& operator= (entry const&) &;\n+ entry& operator= (integer_type) &;\n+ entry& operator= (entry&&) & noexcept;\n entry& operator= (U v) &;\n integer_type& integer ();\n- integer_type const& integer () const;\n string_type& string ();\n dictionary_type& dict ();\n+ dictionary_type const& dict () const;\n preformatted_type const& preformatted () const;\n list_type& list ();\n preformatted_type& preformatted ();\n- string_type const& string () const;\n- dictionary_type const& dict () const;\n list_type const& list () const;\n+ integer_type const& integer () const;\n+ string_type const& string () const;\n void swap (entry& e);\n- entry& operator[] (string_view key);\n entry const& operator[] (string_view key) const;\n- entry const* find_key (string_view key) const;\n+ entry& operator[] (string_view key);\n entry* find_key (string_view key);\n+ entry const* find_key (string_view key) const;\n std::string to_string (bool single_line = false) const;\n \n enum data_type\n {\n int_t,\n string_t,\n list_t,\n@@ -8955,52 +8955,52 @@\n };\n [report_issue]\n ***** type() *****\n data_type type () const;\n returns the concrete type of the entry\n [report_issue]\n ***** entry() *****\n+entry (preformatted_type);\n entry (dictionary_type);\n-entry (integer_type);\n-entry (list_type);\n entry (span);\n-entry (preformatted_type);\n+entry (list_type);\n+entry (integer_type);\n constructors directly from a specific type. The content of the argument is\n copied into the newly constructed entry\n [report_issue]\n ***** entry() *****\n entry (data_type t);\n construct an empty entry of the specified type. see data_type enum.\n [report_issue]\n ***** entry() *****\n entry (bdecode_node const& n);\n construct from bdecode_node parsed form (see bdecode())\n [report_issue]\n ***** operator=() *****\n entry& operator= (span) &;\n-entry& operator= (entry&&) & noexcept;\n+entry& operator= (bdecode_node const&) &;\n entry& operator= (list_type) &;\n entry& operator= (preformatted_type) &;\n-entry& operator= (bdecode_node const&) &;\n-entry& operator= (integer_type) &;\n-entry& operator= (entry const&) &;\n entry& operator= (dictionary_type) &;\n+entry& operator= (entry const&) &;\n+entry& operator= (integer_type) &;\n+entry& operator= (entry&&) & noexcept;\n copies the structure of the right hand side into this entry.\n [report_issue]\n-***** dict() preformatted() integer() list() string() *****\n+***** integer() string() list() preformatted() dict() *****\n integer_type& integer ();\n-integer_type const& integer () const;\n string_type& string ();\n dictionary_type& dict ();\n+dictionary_type const& dict () const;\n preformatted_type const& preformatted () const;\n list_type& list ();\n preformatted_type& preformatted ();\n-string_type const& string () const;\n-dictionary_type const& dict () const;\n list_type const& list () const;\n+integer_type const& integer () const;\n+string_type const& string () const;\n The integer(), string(), list() and dict() functions are accessors that return\n the respective type. If the entry object isn't of the type you request, the\n accessor will throw system_error. You can ask an entry for its type through the\n type() function.\n If you want to create an entry you give it the type you want it to have in its\n constructor, and then use one of the non-const accessors to get a reference\n which you then can assign the value you want it to have.\n@@ -9031,27 +9031,27 @@\n torrent_info exists.\n [report_issue]\n ***** swap() *****\n void swap (entry& e);\n swaps the content of this with e.\n [report_issue]\n ***** operator[]() *****\n-entry& operator[] (string_view key);\n entry const& operator[] (string_view key) const;\n+entry& operator[] (string_view key);\n All of these functions requires the entry to be a dictionary, if it isn't they\n will throw system_error.\n The non-const versions of the operator[] will return a reference to either the\n existing element at the given key or, if there is no element with the given\n key, a reference to a newly inserted element at that key.\n The const version of operator[] will only return a reference to an existing\n element at the given key. If the key is not found, it will throw system_error.\n [report_issue]\n ***** find_key() *****\n-entry const* find_key (string_view key) const;\n entry* find_key (string_view key);\n+entry const* find_key (string_view key) const;\n These functions requires the entry to be a dictionary, if it isn't they will\n throw system_error.\n They will look for an element at the given key in the dictionary, if the\n element cannot be found, they will return nullptr. If an element with the given\n key is found, the return a pointer to it.\n [report_issue]\n ***** to_string() *****\n@@ -9127,28 +9127,28 @@\n Declared in \"libtorrent/create_torrent.hpp\"\n This class holds state for creating a torrent. After having added all\n information to it, call create_torrent::generate() to generate the torrent. The\n entry that's returned can then be bencoded into a .torrent file using bencode\n ().\n struct create_torrent\n {\n- explicit create_torrent (torrent_info const& ti);\n explicit create_torrent (file_storage& fs, int piece_size = 0\n , create_flags_t flags = {});\n- entry generate () const;\n+ explicit create_torrent (torrent_info const& ti);\n std::vector generate_buf () const;\n+ entry generate () const;\n file_storage const& files () const;\n void set_comment (char const* str);\n void set_creator (char const* str);\n void set_creation_date (std::time_t timestamp);\n void set_hash (piece_index_t index, sha1_hash const& h);\n void set_hash2 (file_index_t file, piece_index_t::diff_type piece,\n sha256_hash const& h);\n- void add_http_seed (string_view url);\n void add_url_seed (string_view url);\n+ void add_http_seed (string_view url);\n void add_node (std::pair node);\n void add_tracker (string_view url, int tier = 0);\n void set_root_cert (string_view cert);\n bool priv () const;\n void set_priv (bool p);\n bool is_v1_only () const;\n bool is_v2_only () const;\n@@ -9170,17 +9170,17 @@\n static constexpr create_flags_t v1_only = 6_bit;\n static constexpr create_flags_t canonical_files = 7_bit;\n static constexpr create_flags_t no_attributes = 8_bit;\n static constexpr create_flags_t canonical_files_no_tail_padding = 9_bit;\n };\n [report_issue]\n ***** create_torrent() *****\n-explicit create_torrent (torrent_info const& ti);\n explicit create_torrent (file_storage& fs, int piece_size = 0\n , create_flags_t flags = {});\n+explicit create_torrent (torrent_info const& ti);\n The piece_size is the size of each piece in bytes. It must be a power of 2 and\n a minimum of 16 kiB. If a piece size of 0 is specified, a piece_size will be\n set automatically.\n The flags arguments specifies options for the torrent creation. It can be any\n combination of the flags defined by create_flags_t.\n The file_storage (fs) parameter defines the files, sizes and their properties\n for the torrent to be created. Set this up first, before passing it to the\n@@ -9191,17 +9191,17 @@\n functions of create_torrent that affects the content of the info dictionary\n (such as set_hash()), will have any affect. Instead of using this overload,\n consider using write_torrent_file() instead.\n Warning\n The file_storage and torrent_info objects must stay alive for the entire\n duration of the create_torrent object.\n [report_issue]\n-***** generate() generate_buf() *****\n-entry generate () const;\n+***** generate_buf() generate() *****\n std::vector generate_buf () const;\n+entry generate () const;\n This function will generate the .torrent file as a bencode tree, or a bencoded\n into a buffer. In order to encode the entry into a flat file, use the bencode()\n function.\n The function returning an entry may be useful to add custom entries to the\n torrent file before bencoding it and saving it to disk.\n Whether the resulting torrent object is v1, v2 or hybrid depends on whether any\n of the v1_only or v2_only flags were set on the constructor. If neither were\n@@ -9258,17 +9258,17 @@\n the merkle tree formed by the piece's 16 kiB blocks. Note that piece sizes must\n be powers-of-2, so all per-piece merkle trees are complete. A SHA-256 hash of\n all zeros is internally used to indicate a hash that has not been set. Setting\n such hash will not be considered set when calling generate(). This function\n will throw std::system_error if it is called on an object constructed with the\n v1_only flag.\n [report_issue]\n-***** add_url_seed() add_http_seed() *****\n-void add_http_seed (string_view url);\n+***** add_http_seed() add_url_seed() *****\n void add_url_seed (string_view url);\n+void add_http_seed (string_view url);\n This adds a url seed to the torrent. You can have any number of url seeds. For\n a single file torrent, this should be an HTTP url, pointing to a file with\n identical content as the file of the torrent. For a multi-file torrent, it\n should point to a directory containing a directory with the same name as this\n torrent, and all the files of the torrent in it.\n The second function, add_http_seed() adds an HTTP seed instead.\n [report_issue]\n@@ -9408,30 +9408,30 @@\n directories are traversed.\n The \"..\" directory is never traversed.\n The flags argument should be the same as the flags passed to the create_torrent\n constructor.\n [report_issue]\n ****** set_piece_hashes() ******\n Declared in \"libtorrent/create_torrent.hpp\"\n-inline void set_piece_hashes (create_torrent& t, std::string const& p,\n-error_code& ec);\n-void set_piece_hashes (create_torrent& t, std::string const& p\n- , settings_interface const& settings, disk_io_constructor_type disk_io\n- , std::function const& f, error_code& ec);\n void set_piece_hashes (create_torrent& t, std::string const& p\n , settings_interface const& settings\n , std::function const& f, error_code& ec);\n-void set_piece_hashes (create_torrent& t, std::string const& p\n- , std::function const& f, error_code& ec);\n-inline void set_piece_hashes (create_torrent& t, std::string const& p\n- , std::function const& f);\n inline void set_piece_hashes (create_torrent& t, std::string const& p\n , settings_interface const& settings\n , std::function const& f);\n inline void set_piece_hashes (create_torrent& t, std::string const& p);\n+inline void set_piece_hashes (create_torrent& t, std::string const& p,\n+error_code& ec);\n+inline void set_piece_hashes (create_torrent& t, std::string const& p\n+ , std::function const& f);\n+void set_piece_hashes (create_torrent& t, std::string const& p\n+ , settings_interface const& settings, disk_io_constructor_type disk_io\n+ , std::function const& f, error_code& ec);\n+void set_piece_hashes (create_torrent& t, std::string const& p\n+ , std::function const& f, error_code& ec);\n This function will assume that the files added to the torrent file exists at\n path p, read those files and hash the content and set the hashes in the\n create_torrent object. The optional function f is called in between every hash\n that is set. f must have the following signature:\n void Fun(piece_index_t);\n The overloads taking a settings_pack may be used to configure the underlying\n disk access. Such as settings_pack::aio_threads.\n@@ -9442,24 +9442,24 @@\n ****** bitfield ******\n Declared in \"libtorrent/bitfield.hpp\"\n The bitfield type stores any number of bits as a bitfield in a heap allocated\n array.\n struct bitfield\n {\n bitfield (int bits, bool val);\n+ bitfield (bitfield&& rhs) noexcept = default;\n bitfield () noexcept = default;\n bitfield (char const* b, int bits);\n- explicit bitfield (int bits);\n- bitfield (bitfield&& rhs) noexcept = default;\n bitfield (bitfield const& rhs);\n+ explicit bitfield (int bits);\n void assign (char const* b, int const bits);\n bool get_bit (int index) const noexcept;\n bool operator[] (int index) const noexcept;\n- void clear_bit (int index) noexcept;\n void set_bit (int index) noexcept;\n+ void clear_bit (int index) noexcept;\n bool all_set () const noexcept;\n bool none_set () const noexcept;\n int size () const noexcept;\n int num_words () const noexcept;\n bool empty () const noexcept;\n char const* data () const noexcept;\n char* data () noexcept;\n@@ -9467,39 +9467,39 @@\n int count () const noexcept;\n int find_first_set () const noexcept;\n int find_last_clear () const noexcept;\n };\n [report_issue]\n ***** bitfield() *****\n bitfield (int bits, bool val);\n+bitfield (bitfield&& rhs) noexcept = default;\n bitfield () noexcept = default;\n bitfield (char const* b, int bits);\n-explicit bitfield (int bits);\n-bitfield (bitfield&& rhs) noexcept = default;\n bitfield (bitfield const& rhs);\n+explicit bitfield (int bits);\n constructs a new bitfield. The default constructor creates an empty bitfield.\n bits is the size of the bitfield (specified in bits). val is the value to\n initialize the bits to. If not specified all bits are initialized to 0.\n The constructor taking a pointer b and bits copies a bitfield from the\n specified buffer, and bits number of bits (rounded up to the nearest byte\n boundary).\n [report_issue]\n ***** assign() *****\n void assign (char const* b, int const bits);\n copy bitfield from buffer b of bits number of bits, rounded up to the nearest\n byte boundary.\n [report_issue]\n-***** operator[]() get_bit() *****\n+***** get_bit() operator[]() *****\n bool get_bit (int index) const noexcept;\n bool operator[] (int index) const noexcept;\n query bit at index. Returns true if bit is 1, otherwise false.\n [report_issue]\n-***** clear_bit() set_bit() *****\n-void clear_bit (int index) noexcept;\n+***** set_bit() clear_bit() *****\n void set_bit (int index) noexcept;\n+void clear_bit (int index) noexcept;\n set bit at index to 0 (clear_bit) or 1 (set_bit).\n [report_issue]\n ***** all_set() *****\n bool all_set () const noexcept;\n returns true if all bits in the bitfield are set\n [report_issue]\n ***** none_set() *****\n@@ -9554,35 +9554,35 @@\n If you want to reuse the hasher object once you have created a hash, you have\n to call reset() to reinitialize it.\n The built-in software version of sha1-algorithm was implemented by Steve Reid\n and released as public domain. For more info, see src/sha1.cpp.\n class hasher\n {\n hasher ();\n- explicit hasher (span data);\n hasher (hasher const&);\n- hasher (char const* data, int len);\n hasher& operator= (hasher const&) &;\n- hasher& update (char const* data, int len);\n+ explicit hasher (span data);\n+ hasher (char const* data, int len);\n hasher& update (span data);\n+ hasher& update (char const* data, int len);\n sha1_hash final ();\n void reset ();\n };\n [report_issue]\n ***** operator=() hasher() *****\n-explicit hasher (span data);\n hasher (hasher const&);\n-hasher (char const* data, int len);\n hasher& operator= (hasher const&) &;\n+explicit hasher (span data);\n+hasher (char const* data, int len);\n this is the same as default constructing followed by a call to update(data,\n len).\n [report_issue]\n ***** update() *****\n-hasher& update (char const* data, int len);\n hasher& update (span data);\n+hasher& update (char const* data, int len);\n append the following bytes to what is being hashed\n [report_issue]\n ***** final() *****\n sha1_hash final ();\n returns the SHA-1 digest of the buffers previously passed to update() and the\n hasher constructor.\n [report_issue]\n@@ -9592,36 +9592,36 @@\n constructed.\n [report_issue]\n ****** hasher256 ******\n Declared in \"libtorrent/hasher.hpp\"\n class hasher256\n {\n hasher256 ();\n- hasher256 (hasher256 const&);\n- explicit hasher256 (span data);\n hasher256 (char const* data, int len);\n+ explicit hasher256 (span data);\n+ hasher256 (hasher256 const&);\n hasher256& operator= (hasher256 const&) &;\n- hasher256& update (char const* data, int len);\n hasher256& update (span data);\n+ hasher256& update (char const* data, int len);\n sha256_hash final ();\n void reset ();\n ~hasher256 ();\n };\n [report_issue]\n ***** operator=() hasher256() *****\n-hasher256 (hasher256 const&);\n-explicit hasher256 (span data);\n hasher256 (char const* data, int len);\n+explicit hasher256 (span data);\n+hasher256 (hasher256 const&);\n hasher256& operator= (hasher256 const&) &;\n this is the same as default constructing followed by a call to update(data,\n len).\n [report_issue]\n ***** update() *****\n-hasher256& update (char const* data, int len);\n hasher256& update (span data);\n+hasher256& update (char const* data, int len);\n append the following bytes to what is being hashed\n [report_issue]\n ***** final() *****\n sha256_hash final ();\n returns the SHA-1 digest of the buffers previously passed to update() and the\n hasher constructor.\n [report_issue]\n@@ -10176,19 +10176,19 @@\n [report_issue]\n ****** announce_entry ******\n Declared in \"libtorrent/announce_entry.hpp\"\n this class holds information about one bittorrent tracker, as it relates to a\n specific torrent.\n struct announce_entry\n {\n- ~announce_entry ();\n- announce_entry (announce_entry const&);\n+ announce_entry& operator= (announce_entry const&) &;\n announce_entry ();\n+ announce_entry (announce_entry const&);\n explicit announce_entry (string_view u);\n- announce_entry& operator= (announce_entry const&) &;\n+ ~announce_entry ();\n \n enum tracker_source\n {\n source_torrent,\n source_client,\n source_magnet_link,\n source_tex,\n@@ -10200,19 +10200,19 @@\n std::uint8_t tier = 0;\n std::uint8_t fail_limit = 0;\n std::uint8_t source:4;\n bool verified:1;\n };\n [report_issue]\n ***** operator=() announce_entry() ~announce_entry() *****\n-~announce_entry ();\n-announce_entry (announce_entry const&);\n+announce_entry& operator= (announce_entry const&) &;\n announce_entry ();\n+announce_entry (announce_entry const&);\n explicit announce_entry (string_view u);\n-announce_entry& operator= (announce_entry const&) &;\n+~announce_entry ();\n constructs a tracker announce entry with u as the URL.\n [report_issue]\n ***** enum tracker_source *****\n Declared in \"libtorrent/announce_entry.hpp\"\n ____________________________________________________________________________\n |name______________|value|description________________________________________|\n |source_torrent____|1____|the_tracker_was_part_of_the_.torrent_file__________|\n@@ -11641,24 +11641,24 @@\n memory mapped, but will use normal pread/pwrite operations. This file size\n limit is specified in 16 kiB blocks.\n struct settings_pack final : settings_interface\n {\n friend void apply_pack_impl (settings_pack const*\n , aux::session_settings_single_thread&\n , std::vector*);\n- void set_str (int name, std::string val) override;\n void set_int (int name, flags::bitfield_flag const val);\n- void set_int (int name, int val) override;\n+ void set_str (int name, std::string val) override;\n void set_bool (int name, bool val) override;\n+ void set_int (int name, int val) override;\n bool has_val (int name) const override;\n void clear ();\n void clear (int name);\n+ int get_int (int name) const override;\n std::string const& get_str (int name) const override;\n bool get_bool (int name) const override;\n- int get_int (int name) const override;\n void for_each (Fun&& f) const;\n \n enum type_bases\n {\n string_type_base,\n int_type_base,\n bool_type_base,\n@@ -11729,19 +11729,19 @@\n socks5_pw,\n http,\n http_pw,\n i2p_proxy,\n };\n };\n [report_issue]\n-***** set_bool() set_int() set_str() *****\n-void set_str (int name, std::string val) override;\n+***** set_str() set_int() set_bool() *****\n void set_int (int name, flags::bitfield_flag const val);\n-void set_int (int name, int val) override;\n+void set_str (int name, std::string val) override;\n void set_bool (int name, bool val) override;\n+void set_int (int name, int val) override;\n set a configuration option in the settings_pack. name is one of the enum values\n from string_types, int_types or bool_types. They must match the respective type\n of the set_* function.\n [report_issue]\n ***** has_val() *****\n bool has_val (int name) const override;\n queries whether the specified configuration option has a value set in this\n@@ -11752,18 +11752,18 @@\n void clear ();\n clear the settings pack from all settings\n [report_issue]\n ***** clear() *****\n void clear (int name);\n clear a specific setting from the pack\n [report_issue]\n-***** get_int() get_str() get_bool() *****\n+***** get_bool() get_int() get_str() *****\n+int get_int (int name) const override;\n std::string const& get_str (int name) const override;\n bool get_bool (int name) const override;\n-int get_int (int name) const override;\n queries the current configuration option from the settings_pack. name is one of\n the enumeration values from string_types, int_types or bool_types. The enum\n value must match the type of the get_* function. If the specified setting field\n has not been set, the default value is returned.\n [report_issue]\n ***** enum type_bases *****\n Declared in \"libtorrent/settings_pack.hpp\"\n@@ -11916,15 +11916,15 @@\n |DE______|Deluge______________|\n |AZ______|Azureus_____________|\n |TL______|Tribler_____________|\n There's an informal directory of client id's here.\n The major, minor, revision and tag parameters are used to identify the version\n of your client.\n [report_issue]\n-****** min_memory_usage() high_performance_seed() ******\n+****** high_performance_seed() min_memory_usage() ******\n Declared in \"libtorrent/session.hpp\"\n settings_pack min_memory_usage ();\n settings_pack high_performance_seed ();\n The default values of the session settings are set for a regular bittorrent\n client running on a desktop system. There are functions that can set the\n session settings to pre set settings for other environments. These can be used\n for the basis, and should be tweaked to fit your needs better.\n@@ -11961,45 +11961,45 @@\n Sometimes it's important to get a non-owning reference to the root node ( to be\n able to copy it as a reference for instance). For that, use the non_owning()\n member function.\n There are 5 different types of nodes, see type_t.\n struct bdecode_node\n {\n bdecode_node () = default;\n- bdecode_node (bdecode_node const&);\n bdecode_node& operator= (bdecode_node&&) & = default;\n- bdecode_node& operator= (bdecode_node const&) &;\n bdecode_node (bdecode_node&&) noexcept;\n+ bdecode_node& operator= (bdecode_node const&) &;\n+ bdecode_node (bdecode_node const&);\n type_t type () const noexcept;\n explicit operator bool () const noexcept;\n bdecode_node non_owning () const;\n- span data_section () const noexcept;\n std::ptrdiff_t data_offset () const noexcept;\n+ span data_section () const noexcept;\n std::int64_t list_int_value_at (int i\n , std::int64_t default_val = 0) const;\n+ bdecode_node list_at (int i) const;\n int list_size () const;\n string_view list_string_value_at (int i\n , string_view default_val = string_view()) const;\n- bdecode_node list_at (int i) const;\n+ std::pair dict_at (int i) const;\n+ bdecode_node dict_find_int (string_view key) const;\n bdecode_node dict_find_list (string_view key) const;\n+ std::pair dict_at_node (int i) const;\n+ bdecode_node dict_find (string_view key) const;\n string_view dict_find_string_value (string_view key\n , string_view default_value = string_view()) const;\n- bdecode_node dict_find_int (string_view key) const;\n- std::pair dict_at_node (int i) const;\n std::int64_t dict_find_int_value (string_view key\n , std::int64_t default_val = 0) const;\n- bdecode_node dict_find (string_view key) const;\n+ int dict_size () const;\n bdecode_node dict_find_dict (string_view key) const;\n bdecode_node dict_find_string (string_view key) const;\n- int dict_size () const;\n- std::pair dict_at (int i) const;\n std::int64_t int_value () const;\n- string_view string_value () const;\n std::ptrdiff_t string_offset () const;\n int string_length () const;\n+ string_view string_value () const;\n char const* string_ptr () const;\n void clear ();\n void swap (bdecode_node& n);\n void reserve (int tokens);\n void switch_underlying_buffer (char const* buf) noexcept;\n bool has_soft_error (span error) const;\n \n@@ -12014,18 +12014,18 @@\n };\n [report_issue]\n ***** bdecode_node() *****\n bdecode_node () = default;\n creates a default constructed node, it will have the type none_t.\n [report_issue]\n ***** bdecode_node() operator=() *****\n-bdecode_node (bdecode_node const&);\n bdecode_node& operator= (bdecode_node&&) & = default;\n-bdecode_node& operator= (bdecode_node const&) &;\n bdecode_node (bdecode_node&&) noexcept;\n+bdecode_node& operator= (bdecode_node const&) &;\n+bdecode_node (bdecode_node const&);\n For owning nodes, the copy will create a copy of the tree, but the underlying\n buffer remains the same.\n [report_issue]\n ***** type() *****\n type_t type () const noexcept;\n the type of this node. See type_t.\n [report_issue]\n@@ -12035,49 +12035,49 @@\n [report_issue]\n ***** non_owning() *****\n bdecode_node non_owning () const;\n return a non-owning reference to this node. This is useful to refer to the root\n node without copying it in assignments.\n [report_issue]\n ***** data_section() data_offset() *****\n-span data_section () const noexcept;\n std::ptrdiff_t data_offset () const noexcept;\n+span data_section () const noexcept;\n returns the buffer and length of the section in the original bencoded buffer\n where this node is defined. For a dictionary for instance, this starts with d\n and ends with e, and has all the content of the dictionary in between. the\n data_offset() function returns the byte-offset to this node in, starting from\n the beginning of the buffer that was parsed.\n [report_issue]\n-***** list_at() list_int_value_at() list_size() list_string_value_at() *****\n+***** list_at() list_string_value_at() list_int_value_at() list_size() *****\n std::int64_t list_int_value_at (int i\n , std::int64_t default_val = 0) const;\n+bdecode_node list_at (int i) const;\n int list_size () const;\n string_view list_string_value_at (int i\n , string_view default_val = string_view()) const;\n-bdecode_node list_at (int i) const;\n functions with the list_ prefix operate on lists. These functions are only\n valid if type() == list_t. list_at() returns the item in the list at index i. i\n may not be greater than or equal to the size of the list. size() returns the\n size of the list.\n [report_issue]\n-***** dict_find_int_value() dict_find() dict_size() dict_find_string()\n-dict_find_int() dict_at() dict_find_list() dict_find_string_value()\n-dict_find_dict() dict_at_node() *****\n+***** dict_find() dict_at_node() dict_find_int_value() dict_find_string_value()\n+dict_at() dict_find_string() dict_size() dict_find_list() dict_find_int()\n+dict_find_dict() *****\n+std::pair dict_at (int i) const;\n+bdecode_node dict_find_int (string_view key) const;\n bdecode_node dict_find_list (string_view key) const;\n+std::pair dict_at_node (int i) const;\n+bdecode_node dict_find (string_view key) const;\n string_view dict_find_string_value (string_view key\n , string_view default_value = string_view()) const;\n-bdecode_node dict_find_int (string_view key) const;\n-std::pair dict_at_node (int i) const;\n std::int64_t dict_find_int_value (string_view key\n , std::int64_t default_val = 0) const;\n-bdecode_node dict_find (string_view key) const;\n+int dict_size () const;\n bdecode_node dict_find_dict (string_view key) const;\n bdecode_node dict_find_string (string_view key) const;\n-int dict_size () const;\n-std::pair dict_at (int i) const;\n Functions with the dict_ prefix operates on dictionaries. They are only valid\n if type() == dict_t. In case a key you're looking up contains a 0 byte, you\n cannot use the 0-terminated string overloads, but have to use string_view\n instead. dict_find_list will return a valid bdecode_node if the key is found\n _and_ it is a list. Otherwise it will return a default-constructed\n bdecode_node.\n Functions with the _value suffix return the value of the node directly, rather\n@@ -12089,18 +12089,18 @@\n string).\n [report_issue]\n ***** int_value() *****\n std::int64_t int_value () const;\n this function is only valid if type() == int_t. It returns the value of the\n integer.\n [report_issue]\n-***** string_length() string_ptr() string_offset() string_value() *****\n-string_view string_value () const;\n+***** string_ptr() string_offset() string_length() string_value() *****\n std::ptrdiff_t string_offset () const;\n int string_length () const;\n+string_view string_value () const;\n char const* string_ptr () const;\n these functions are only valid if type() == string_t. They return the string\n values. Note that string_ptr() is not 0-terminated. string_length() returns the\n number of bytes in the string. string_offset() returns the byte offset from the\n start of the parsed bencoded buffer this string can be found.\n [report_issue]\n ***** clear() *****\n@@ -12403,22 +12403,22 @@\n specified in the message. This may improve the chances of traversing NATs\n when using uTP.\n ssl_torrent\n Specify the port number for the SSL listen socket in the DHT announce.\n [report_issue]\n ****** read_resume_data() ******\n Declared in \"libtorrent/read_resume_data.hpp\"\n-add_torrent_params read_resume_data (span buffer\n- , load_torrent_limits const& cfg = {});\n add_torrent_params read_resume_data (bdecode_node const& rd\n , int piece_limit = 0x200000);\n add_torrent_params read_resume_data (span buffer\n- , error_code& ec, load_torrent_limits const& cfg = {});\n+ , load_torrent_limits const& cfg = {});\n add_torrent_params read_resume_data (bdecode_node const& rd\n , error_code& ec, int piece_limit = 0x200000);\n+add_torrent_params read_resume_data (span buffer\n+ , error_code& ec, load_torrent_limits const& cfg = {});\n these functions are used to parse resume data and populate the appropriate\n fields in an add_torrent_params object. This object can then be used to add the\n actual torrent_info object to and pass to session::add_torrent() or session::\n async_add_torrent().\n If the client wants to override any field that was loaded from the resume data,\n e.g. save_path, those fields must be changed after loading resume data but\n before adding the torrent.\n@@ -12426,28 +12426,28 @@\n the torrent that may be loaded as part of the resume data, if it contains an\n info field. The overloads that take a flat buffer are instead configured with\n limits on torrent sizes via load_torrent limits.\n In order to support large torrents, it may also be necessary to raise the\n settings_pack::max_piece_count setting and pass a higher limit to calls to\n torrent_info::parse_info_section().\n [report_issue]\n-****** write_resume_data_buf() write_resume_data() ******\n+****** write_resume_data() write_resume_data_buf() ******\n Declared in \"libtorrent/write_resume_data.hpp\"\n std::vector write_resume_data_buf (add_torrent_params const& atp);\n entry write_resume_data (add_torrent_params const& atp);\n this function turns the resume data in an add_torrent_params object into a\n bencoded structure\n [report_issue]\n ****** write_torrent_file_buf() write_torrent_file() ******\n Declared in \"libtorrent/write_resume_data.hpp\"\n+entry write_torrent_file (add_torrent_params const& atp, write_torrent_flags_t\n+flags);\n std::vector write_torrent_file_buf (add_torrent_params const& atp\n , write_torrent_flags_t flags);\n entry write_torrent_file (add_torrent_params const& atp);\n-entry write_torrent_file (add_torrent_params const& atp, write_torrent_flags_t\n-flags);\n writes only the fields to create a .torrent file. This function may fail with a\n std::system_error exception if:\n * The add_torrent_params object passed to this function does not contain\n the info dictionary (the ti field)\n * The piece layers are not complete for all files that need them\n The write_torrent_file_buf() overload returns the torrent file in bencoded\n buffer form. This overload may be faster at the expense of lost flexibility to\n"}]}]}]}]}]}