{"diffoscope-json-version": 1, "source1": "/srv/reproducible-results/rbuild-debian/r-b-build.MxKy5KfJ/b1/libtorrent-rasterbar_2.0.8-1_arm64.changes", "source2": "/srv/reproducible-results/rbuild-debian/r-b-build.MxKy5KfJ/b2/libtorrent-rasterbar_2.0.8-1_arm64.changes", "unified_diff": null, "details": [{"source1": "Files", "source2": "Files", "unified_diff": "@@ -1,7 +1,7 @@\n \n ea2b15fc2deab7780aaacf712285a085 360872 libdevel optional libtorrent-rasterbar-dev_2.0.8-1_arm64.deb\n- 926bb5a68ac62410d9a1510b97fb2257 1605628 doc optional libtorrent-rasterbar-doc_2.0.8-1_all.deb\n+ 7ed72382f1bf9876b66e89b43366c2e3 1605692 doc optional libtorrent-rasterbar-doc_2.0.8-1_all.deb\n 9ec46b4275c7f127701bd431e7298a67 51089296 debug optional libtorrent-rasterbar2.0-dbgsym_2.0.8-1_arm64.deb\n 482e75b766c380893e3f3eca9ecc60fb 1382480 libs optional libtorrent-rasterbar2.0_2.0.8-1_arm64.deb\n 4afa0182598fe3d364cc2025d382f7b1 12997680 debug optional python3-libtorrent-dbgsym_2.0.8-1_arm64.deb\n 6156d8646e7ae39928a4980cbd3eef60 644948 python optional python3-libtorrent_2.0.8-1_arm64.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 1601804 2022-10-23 15:10:21.000000 data.tar.xz\n+-rw-r--r-- 0 0 0 1601868 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-
  • read_session_params() write_session_params_buf() write_session_params()
  • \n+
  • write_session_params_buf() read_session_params() write_session_params()
  • \n
  • web_seed_entry\n
  • \n
  • load_torrent_limits
  • \n
  • torrent_info\n
  • \n
  • piece_block
  • \n
  • peer_request\n
  • \n-
  • load_torrent_parsed() load_torrent_file() load_torrent_buffer()
  • \n+
  • load_torrent_file() load_torrent_buffer() load_torrent_parsed()
  • \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
  • storage_params
  • \n@@ -280,87 +280,87 @@\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
  • \n
  • add_torrent_params
  • \n
  • peer_class_info
  • \n
  • peer_class_type_filter\n
  • \n
  • block_info\n
  • \n
  • partial_piece_info
  • \n
  • torrent_handle\n
  • \n
  • hash_value()
  • \n
  • open_file_state
  • \n
  • disk_interface\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@@ -609,15 +609,15 @@\n \n
  • entry\n
  • \n@@ -628,49 +628,49 @@\n
  • generate_buf() generate()
  • \n
  • files()
  • \n
  • set_comment()
  • \n
  • set_creator()
  • \n
  • set_creation_date()
  • \n
  • set_hash()
  • \n
  • set_hash2()
  • \n-
  • add_http_seed() add_url_seed()
  • \n+
  • add_url_seed() add_http_seed()
  • \n
  • add_node()
  • \n
  • add_tracker()
  • \n
  • set_root_cert()
  • \n-
  • priv() set_priv()
  • \n+
  • set_priv() priv()
  • \n
  • num_pieces()
  • \n
  • piece_range()
  • \n
  • file_range()
  • \n
  • file_piece_range()
  • \n
  • total_size()
  • \n-
  • piece_size() piece_length()
  • \n+
  • piece_length() piece_size()
  • \n
  • add_similar_torrent() add_collection()
  • \n \n \n
  • add_files()
  • \n
  • set_piece_hashes()
  • \n
  • bitfield\n
  • \n
  • hasher\n
  • \n
  • hasher256\n
  • \n
  • announce_infohash
  • \n
  • announce_endpoint
  • \n
  • announce_entry\n
  • \n
  • settings_pack\n
  • \n
  • generate_fingerprint()
  • \n
  • min_memory_usage() high_performance_seed()
  • \n-
  • name_for_setting() setting_by_name()
  • \n+
  • setting_by_name() name_for_setting()
  • \n
  • default_settings()
  • \n
  • bdecode_node\n@@ -753,16 +753,16 @@\n
  • counters()
  • \n \n \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_torrent_file() write_torrent_file_buf()
  • \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
  • ed25519_key_exchange()
  • \n@@ -774,16 +774,16 @@\n

    used by storage to return errors\n also includes which underlying file the\n error happened on

    \n
    \n struct storage_error\n {\n    explicit operator bool () const;\n-   file_index_t file () const;\n    void file (file_index_t f);\n+   file_index_t file () const;\n \n    error_code ec;\n    operation_t operation;\n };\n 
    \n [report issue]
    \n

    bool()

    \n@@ -792,16 +792,16 @@\n \n

    explicitly converts to true if this object represents an error, and\n false if it does not.

    \n [report issue]
    \n
    \n

    file()

    \n
    \n-file_index_t file () const;\n void file (file_index_t f);\n+file_index_t file () const;\n 
    \n

    set and query the index (in the torrent) of the file this error\n occurred on. This may also have special values defined in\n torrent_status.

    \n [report issue]
    \n
    ec
    \n
    the error that occurred
    \n@@ -2121,18 +2121,18 @@\n before it's started.

    \n
    \n struct session_params\n {\n    session_params (settings_pack&& sp);\n    session_params (settings_pack const& sp);\n    session_params ();\n-   session_params (settings_pack&& sp\n-      , std::vector<std::shared_ptr<plugin>> exts);\n    session_params (settings_pack const& sp\n       , std::vector<std::shared_ptr<plugin>> exts);\n+   session_params (settings_pack&& sp\n+      , std::vector<std::shared_ptr<plugin>> exts);\n \n    settings_pack settings;\n    std::vector<std::shared_ptr<plugin>> 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<std::string, std::string> ext_state;\n@@ -2149,18 +2149,18 @@\n 

    This constructor can be used to start with the default plugins\n (ut_metadata, ut_pex and smart_ban). Pass a settings_pack to set the\n initial settings when the session starts.

    \n [report issue]
    \n
    \n

    session_params()

    \n
    \n-session_params (settings_pack&& sp\n-      , std::vector<std::shared_ptr<plugin>> exts);\n session_params (settings_pack const& sp\n       , std::vector<std::shared_ptr<plugin>> exts);\n+session_params (settings_pack&& sp\n+      , std::vector<std::shared_ptr<plugin>> exts);\n 
    \n

    This constructor helps to configure the set of initial plugins\n to be added to the session before it's started.

    \n [report issue]
    \n
    settings
    \n
    The settings to configure the session with
    \n
    \n@@ -2202,33 +2202,33 @@\n synchronize the completion of the shutdown. The lifetime of this object\n may outlive session, causing the session destructor to not block. The\n session_proxy destructor will block however, until the underlying session\n is done shutting down.

    \n
    \n struct session_proxy\n {\n-   session_proxy& operator= (session_proxy const&) &;\n-   ~session_proxy ();\n-   session_proxy ();\n    session_proxy (session_proxy&&) noexcept;\n-   session_proxy& operator= (session_proxy&&) & noexcept;\n+   ~session_proxy ();\n+   session_proxy& operator= (session_proxy const&) &;\n    session_proxy (session_proxy const&);\n+   session_proxy& operator= (session_proxy&&) & noexcept;\n+   session_proxy ();\n };\n 
    \n-\n+\n \n-[report issue]
    \n-

    ~session_proxy() operator=() session_proxy()

    \n+[report issue]
    \n+

    session_proxy() operator=() ~session_proxy()

    \n
    \n-session_proxy& operator= (session_proxy const&) &;\n-~session_proxy ();\n-session_proxy ();\n session_proxy (session_proxy&&) noexcept;\n-session_proxy& operator= (session_proxy&&) & noexcept;\n+~session_proxy ();\n+session_proxy& operator= (session_proxy const&) &;\n session_proxy (session_proxy const&);\n+session_proxy& operator= (session_proxy&&) & noexcept;\n+session_proxy ();\n 
    \n

    default constructor, does not refer to any session\n implementation object.

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

    session

    \n@@ -2248,17 +2248,17 @@\n {\n explicit session (session_params const& params);\n session (session_params&& params, session_flags_t flags);\n session ();\n explicit session (session_params&& params);\n session (session_params const& params, session_flags_t flags);\n session (session_params const& params, io_context& ios);\n- session (session_params const& params, io_context& ios, session_flags_t);\n session (session_params&& params, io_context& ios, session_flags_t);\n session (session_params&& params, io_context& ios);\n+ session (session_params const& params, io_context& ios, session_flags_t);\n ~session ();\n session_proxy abort ();\n };\n \n [report issue]
    \n

    session()

    \n
    \n@@ -2277,17 +2277,17 @@\n add_default_plugins do not have an affect on constructors that\n take a session_params object. It already contains the plugins to use.

    \n [report issue]
    \n
    \n

    session()

    \n
    \n session (session_params const& params, io_context& ios);\n-session (session_params const& params, io_context& ios, session_flags_t);\n session (session_params&& params, io_context& ios, session_flags_t);\n session (session_params&& params, io_context& ios);\n+session (session_params const& params, io_context& ios, session_flags_t);\n 
    \n

    Overload of the constructor that takes an external io_context to run\n the session object on. This is primarily useful for tests that may want\n to run multiple sessions on a single io_context, or low resource\n systems where additional threads are expensive and sharing an\n io_context with other events is fine.

    \n
    \n@@ -2342,74 +2342,74 @@\n any operation on it will throw a system_error exception, with error code\n invalid_session_handle.

    \n
    \n struct session_handle\n {\n    bool is_valid () const;\n    session_params session_state (save_state_flags_t flags = save_state_flags_t::all()) const;\n+   void refresh_torrent_status (std::vector<torrent_status>* ret\n+      , status_flags_t flags = {}) const;\n    std::vector<torrent_status> get_torrent_status (\n       std::function<bool(torrent_status const&)> const& pred\n       , status_flags_t flags = {}) const;\n-   void refresh_torrent_status (std::vector<torrent_status>* 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&& st);\n    void set_dht_state (dht::dht_state const& st);\n    torrent_handle find_torrent (sha1_hash const& info_hash) const;\n    std::vector<torrent_handle> get_torrents () const;\n    torrent_handle add_torrent (add_torrent_params&& params);\n-   void async_add_torrent (add_torrent_params&& params);\n-   torrent_handle add_torrent (add_torrent_params&& params, error_code& ec);\n    torrent_handle add_torrent (add_torrent_params const& params);\n    torrent_handle add_torrent (add_torrent_params const& params, error_code& ec);\n    void async_add_torrent (add_torrent_params const& params);\n-   void pause ();\n-   bool is_paused () const;\n+   void async_add_torrent (add_torrent_params&& params);\n+   torrent_handle add_torrent (add_torrent_params&& params, error_code& ec);\n    void resume ();\n+   bool is_paused () const;\n+   void pause ();\n    bool is_dht_running () const;\n    void set_dht_storage (dht::dht_storage_constructor_type sc);\n    void add_dht_node (std::pair<std::string, int> const& node);\n    void dht_get_item (sha1_hash const& target);\n    void dht_get_item (std::array<char, 32> key\n       , std::string salt = std::string());\n    sha1_hash dht_put_item (entry data);\n    void dht_put_item (std::array<char, 32> key\n       , std::function<void(entry&, std::array<char, 64>&\n       , std::int64_t&, std::string const&)> cb\n       , std::string salt = std::string());\n-   void dht_get_peers (sha1_hash const& info_hash);\n    void dht_announce (sha1_hash const& info_hash, int port = 0, dht::announce_flags_t flags = {});\n+   void dht_get_peers (sha1_hash const& info_hash);\n    void dht_live_nodes (sha1_hash const& nid);\n    void dht_sample_infohashes (udp::endpoint const& ep, sha1_hash const& target);\n    void dht_direct_request (udp::endpoint const& ep, entry const& e, client_data_t userdata = {});\n    void add_extension (std::function<std::shared_ptr<torrent_plugin>(\n       torrent_handle const&, client_data_t)> ext);\n    void add_extension (std::shared_ptr<plugin> 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-   bool is_listening () const;\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    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    void remove_torrent (const torrent_handle&, remove_flags_t = {});\n-   void apply_settings (settings_pack const&);\n-   settings_pack get_settings () const;\n    void apply_settings (settings_pack&&);\n-   void set_alert_notify (std::function<void()> const& fun);\n+   settings_pack get_settings () const;\n+   void apply_settings (settings_pack const&);\n    alert* wait_for_alert (time_duration max_wait);\n+   void set_alert_notify (std::function<void()> const& fun);\n    void pop_alerts (std::vector<alert*>* alerts);\n    std::vector<port_mapping_t> add_port_mapping (portmap_protocol t, int external_port, int local_port);\n    void delete_port_mapping (port_mapping_t handle);\n    void reopen_network_sockets (reopen_network_flags_t options = reopen_map_ports);\n    std::shared_ptr<aux::session_impl> native_handle () const;\n \n    static constexpr save_state_flags_t save_settings  = 0_bit;\n@@ -2444,24 +2444,24 @@\n 

    returns the current session state. This can be passed to\n write_session_params() to save the state to disk and restored using\n read_session_params() when constructing a new session. The kind of\n state that's included is all settings, the DHT routing table, possibly\n plugin-specific state.\n the flags parameter can be used to only save certain parts of the\n session state

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

    refresh_torrent_status() get_torrent_status()

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

    get_torrent_status() refresh_torrent_status()

    \n
    \n+void refresh_torrent_status (std::vector<torrent_status>* ret\n+      , status_flags_t flags = {}) const;\n std::vector<torrent_status> get_torrent_status (\n       std::function<bool(torrent_status const&)> const& pred\n       , status_flags_t flags = {}) const;\n-void refresh_torrent_status (std::vector<torrent_status>* ret\n-      , status_flags_t flags = {}) const;\n 
    \n
    \n

    Note

    \n

    these calls are potentially expensive and won't scale well with\n lots of torrents. If you're concerned about performance, consider\n using post_torrent_updates() instead.

    \n
    \n@@ -2531,41 +2531,41 @@\n
    \n void set_dht_state (dht::dht_state&& st);\n void set_dht_state (dht::dht_state const& st);\n 
    \n

    set the DHT state for the session. This will be taken into account the\n next time the DHT is started, as if it had been passed in via the\n session_params on startup.

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

    get_torrents() find_torrent()

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

    find_torrent() get_torrents()

    \n
    \n torrent_handle find_torrent (sha1_hash const& info_hash) const;\n std::vector<torrent_handle> get_torrents () const;\n 
    \n

    find_torrent() looks for a torrent with the given info-hash. In\n case there is such a torrent in the session, a torrent_handle to that\n torrent is returned. In case the torrent cannot be found, an invalid\n torrent_handle is returned.

    \n

    See torrent_handle::is_valid() to know if the torrent was found or\n not.

    \n

    get_torrents() returns a vector of torrent_handles to all the\n torrents currently in the session.

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

    add_torrent() async_add_torrent()

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

    async_add_torrent() add_torrent()

    \n
    \n torrent_handle add_torrent (add_torrent_params&& params);\n-void async_add_torrent (add_torrent_params&& params);\n-torrent_handle add_torrent (add_torrent_params&& params, error_code& ec);\n torrent_handle add_torrent (add_torrent_params const& params);\n torrent_handle add_torrent (add_torrent_params const& params, error_code& ec);\n void async_add_torrent (add_torrent_params const& params);\n+void async_add_torrent (add_torrent_params&& params);\n+torrent_handle add_torrent (add_torrent_params&& params, error_code& ec);\n 
    \n

    You add torrents through the add_torrent() function where you give an\n object with all the parameters. The add_torrent() overloads will block\n until the torrent has been added (or failed to be added) and returns\n an error code and a torrent_handle. In order to add torrents more\n efficiently, consider using async_add_torrent() which returns\n immediately, without waiting for the torrent to add. Notification of\n@@ -2585,23 +2585,23 @@\n want to control are torrent_flags::paused and\n torrent_flags::auto_managed. In order to add a magnet link that will\n 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\n (i.e. torrents that are BitTorrent v2 torrents that are backwards\n compatible with v1). For more details, see BitTorrent v2 torrents.

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

    resume() is_paused() pause()

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

    is_paused() pause() resume()

    \n
    \n-void pause ();\n-bool is_paused () const;\n void resume ();\n+bool is_paused () const;\n+void pause ();\n 
    \n

    Pausing the session has the same effect as pausing every torrent in\n it, except that torrents will not be resumed by the auto-manage\n mechanism. Resuming will restore the torrents to their previous paused\n state. i.e. the session pause state is separate from the torrent pause\n state. A torrent is inactive if it is paused or if the session is\n paused.

    \n@@ -2709,21 +2709,21 @@\n with the function object's context and make the function entirely\n self-contained. The only reason data blob's value is computed\n via a function instead of just passing in the new value is to avoid\n race conditions. If you want to update the value in the DHT, you\n must first retrieve it, then modify it, then write it back. The way\n the DHT works, it is natural to always do a lookup before storing and\n calling the callback in between is convenient.

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

    dht_announce() dht_get_peers()

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

    dht_get_peers() dht_announce()

    \n
    \n-void dht_get_peers (sha1_hash const& info_hash);\n void dht_announce (sha1_hash const& info_hash, int port = 0, dht::announce_flags_t flags = {});\n+void dht_get_peers (sha1_hash const& info_hash);\n 
    \n

    dht_get_peers() will issue a DHT get_peer request to the DHT for the\n specified 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\n specified info-hash, advertising the specified port. If the port is\n left at its default, 0, the port will be implied by the DHT message's\n@@ -2830,34 +2830,34 @@\n

    \n void set_port_filter (port_filter const& f);\n 
    \n

    apply port_filter f to incoming and outgoing peers. a port filter\n will reject making outgoing peer connections to certain remote ports.\n The main intention is to be able to avoid triggering certain\n anti-virus software by connecting to SMTP, FTP ports.

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

    is_listening() listen_port() ssl_listen_port()

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

    ssl_listen_port() listen_port() is_listening()

    \n
    \n-bool is_listening () const;\n unsigned short listen_port () const;\n unsigned short ssl_listen_port () const;\n+bool is_listening () const;\n 
    \n

    is_listening() will tell you whether or not the session has\n successfully opened a listening port. If it hasn't, this function will\n return false, and then you can set a new\n settings_pack::listen_interfaces to try another interface and port to\n bind to.

    \n

    listen_port() returns the port we ended up listening on.

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

    set_peer_class_filter() get_peer_class_filter()

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

    get_peer_class_filter() set_peer_class_filter()

    \n
    \n void set_peer_class_filter (ip_filter const& f);\n ip_filter get_peer_class_filter () const;\n 
    \n

    Sets the peer class filter for this session. All new peer connections\n will take this into account and be added to the peer classes specified\n by this filter, based on the peer's IP address.

    \n@@ -2933,18 +2933,18 @@\n remove the peer class if it's still assigned to torrents or peers. It\n will however remove it once the last peer and torrent drops their\n references to it.

    \n

    There is no need to call this function for custom peer classes. All\n peer classes will be properly destructed when the session object\n destructs.

    \n

    For more information on peer classes, see peer classes.

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

    get_peer_class() set_peer_class()

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

    set_peer_class() get_peer_class()

    \n
    \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 
    \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\n@@ -2992,29 +2992,29 @@\n advised to remove them from the back of the queue, to minimize the\n shifting.

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

    apply_settings() get_settings()

    \n
    \n-void apply_settings (settings_pack const&);\n-settings_pack get_settings () const;\n void apply_settings (settings_pack&&);\n+settings_pack get_settings () const;\n+void apply_settings (settings_pack const&);\n 
    \n

    Applies the settings specified by the settings_pack s. This is an\n asynchronous operation that will return immediately and actually apply\n the settings to the main thread of libtorrent some time later.

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

    pop_alerts() set_alert_notify() wait_for_alert()

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

    wait_for_alert() pop_alerts() set_alert_notify()

    \n
    \n-void set_alert_notify (std::function<void()> const& fun);\n alert* wait_for_alert (time_duration max_wait);\n+void set_alert_notify (std::function<void()> const& fun);\n void pop_alerts (std::vector<alert*>* alerts);\n 
    \n

    Alerts is the main mechanism for libtorrent to report errors and\n events. pop_alerts fills in the vector passed to it with pointers\n to new alerts. The session still owns these alerts and they will stay\n valid until the next time pop_alerts is called. You may not delete\n the alert objects.

    \n@@ -3141,20 +3141,20 @@\n [report issue]
    \n
    reopen_map_ports
    \n
    This option indicates if the ports are mapped using natpmp\n and upnp. If mapping was already made, they are deleted and added\n again. This only works if natpmp and/or upnp are configured to be\n enable.
    \n
    \n-\n \n-[report issue]
    \n+\n+[report issue]
    \n
    \n-
    \n-

    read_session_params() write_session_params_buf() write_session_params()

    \n+
    \n+

    write_session_params_buf() read_session_params() write_session_params()

    \n

    Declared in "libtorrent/session_params.hpp"

    \n
    \n entry write_session_params (session_params const& sp\n    , save_state_flags_t flags = save_state_flags_t::all());\n session_params read_session_params (span<char const> buf\n    , save_state_flags_t flags = save_state_flags_t::all());\n std::vector<char> write_session_params_buf (session_params const& sp\n@@ -3292,35 +3292,35 @@\n 
    \n

    torrent_info

    \n

    Declared in "libtorrent/torrent_info.hpp"

    \n

    the torrent_info class holds the information found in a .torrent file.

    \n
    \n class torrent_info\n {\n+   torrent_info (std::string const& filename, load_torrent_limits const& cfg);\n+   torrent_info (bdecode_node const& torrent_file, load_torrent_limits const& cfg);\n+   torrent_info (span<char const> buffer, error_code& ec, from_span_t);\n+   torrent_info (std::string const& filename, error_code& ec);\n    torrent_info (span<char const> buffer, load_torrent_limits const& cfg, from_span_t);\n    torrent_info (bdecode_node const& torrent_file, error_code& ec);\n-   torrent_info (span<char const> buffer, error_code& ec, from_span_t);\n-   explicit torrent_info (info_hash_t const& info_hash);\n    explicit torrent_info (std::string const& filename);\n-   torrent_info (char const* buffer, int size);\n    torrent_info (char const* buffer, int size, error_code& ec);\n-   torrent_info (bdecode_node const& torrent_file, load_torrent_limits const& cfg);\n-   explicit torrent_info (span<char const> buffer, from_span_t);\n+   torrent_info (char const* buffer, int size);\n+   explicit torrent_info (info_hash_t const& info_hash);\n    torrent_info (torrent_info const& t);\n-   torrent_info (std::string const& filename, error_code& ec);\n-   torrent_info (std::string const& filename, load_torrent_limits const& cfg);\n    explicit torrent_info (bdecode_node const& torrent_file);\n+   explicit torrent_info (span<char const> buffer, from_span_t);\n    ~torrent_info ();\n    file_storage const& orig_files () const;\n    file_storage const& 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\n       , announce_entry::tracker_source source);\n-   void clear_trackers ();\n    void add_tracker (std::string const& url, int tier = 0);\n    std::vector<announce_entry> const& trackers () const;\n    std::vector<std::string> collections () const;\n    std::vector<sha1_hash> similar_torrents () const;\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::headers_t());\n@@ -3328,32 +3328,32 @@\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::headers_t());\n    void set_web_seeds (std::vector<web_seed_entry> seeds);\n    std::int64_t total_size () const;\n    int piece_length () const;\n    int num_pieces () const;\n+   piece_index_t last_piece () const;\n    index_range<piece_index_t> piece_range () const;\n    piece_index_t end_piece () const;\n-   piece_index_t last_piece () const;\n    sha1_hash info_hash () const noexcept;\n    info_hash_t const& info_hashes () const;\n-   bool v2 () const;\n    bool v1 () const;\n+   bool v2 () const;\n    int num_files () const;\n    std::vector<file_slice> map_block (piece_index_t const piece\n       , std::int64_t offset, int size) const;\n    peer_request map_file (file_index_t const file, std::int64_t offset, int size) const;\n    string_view ssl_cert () const;\n    bool is_valid () const;\n    bool priv () const;\n    bool is_i2p () const;\n    int piece_size (piece_index_t index) const;\n-   sha1_hash hash_for_piece (piece_index_t index) const;\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    bool is_loaded () const;\n    const std::string& name () const;\n    std::time_t creation_date () const;\n    const std::string& creator () const;\n    const std::string& comment () const;\n    std::vector<std::pair<std::string, int>> const& nodes () const;\n    void add_node (std::pair<std::string, int> const& node);\n@@ -3363,27 +3363,27 @@\n    span<char const> piece_layer (file_index_t) const;\n    void free_piece_layers ();\n };\n 
    \n [report issue]
    \n

    torrent_info()

    \n
    \n+torrent_info (std::string const& filename, load_torrent_limits const& cfg);\n+torrent_info (bdecode_node const& torrent_file, load_torrent_limits const& cfg);\n+torrent_info (span<char const> buffer, error_code& ec, from_span_t);\n+torrent_info (std::string const& filename, error_code& ec);\n torrent_info (span<char const> buffer, load_torrent_limits const& cfg, from_span_t);\n torrent_info (bdecode_node const& torrent_file, error_code& ec);\n-torrent_info (span<char const> buffer, error_code& ec, from_span_t);\n-explicit torrent_info (info_hash_t const& info_hash);\n explicit torrent_info (std::string const& filename);\n-torrent_info (char const* buffer, int size);\n torrent_info (char const* buffer, int size, error_code& ec);\n-torrent_info (bdecode_node const& torrent_file, load_torrent_limits const& cfg);\n-explicit torrent_info (span<char const> buffer, from_span_t);\n+torrent_info (char const* buffer, int size);\n+explicit torrent_info (info_hash_t const& info_hash);\n torrent_info (torrent_info const& t);\n-torrent_info (std::string const& filename, error_code& ec);\n-torrent_info (std::string const& filename, load_torrent_limits const& cfg);\n explicit torrent_info (bdecode_node const& torrent_file);\n+explicit torrent_info (span<char const> buffer, from_span_t);\n 
    \n

    The constructor that takes an info-hash will initialize the info-hash\n to the given value, but leave all other fields empty. This is used\n internally when downloading torrents without the metadata. The\n metadata will be created by libtorrent as soon as it has been\n downloaded from the swarm.

    \n

    The constructor that takes a bdecode_node will create a torrent_info\n@@ -3412,18 +3412,18 @@\n [report issue]

    \n
    \n

    ~torrent_info()

    \n
    \n ~torrent_info ();\n 
    \n

    frees all storage associated with this torrent_info object

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

    orig_files() files()

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

    files() orig_files()

    \n
    \n file_storage const& orig_files () const;\n file_storage const& files () const;\n 
    \n

    The file_storage object contains the information on how to map the\n pieces to files. It is separated from the torrent_info object because\n when creating torrents a storage object needs to be created without\n@@ -3470,23 +3470,23 @@\n

    \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\n number of fixed size sector aligned files, regardless of the number\n and sizes of the files in the torrent.

    \n

    The new specified file_storage must have the exact same size as\n the current one.

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

    clear_trackers() add_tracker() trackers()

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

    add_tracker() clear_trackers() trackers()

    \n
    \n+void clear_trackers ();\n void add_tracker (std::string const& url, int tier\n       , announce_entry::tracker_source source);\n-void clear_trackers ();\n void add_tracker (std::string const& url, int tier = 0);\n std::vector<announce_entry> const& trackers () const;\n 
    \n

    add_tracker() adds a tracker to the announce-list. The tier\n determines the order in which the trackers are to be tried.\n The trackers() function will return a sorted vector of\n announce_entry. Each announce entry contains a string, which is\n@@ -3505,20 +3505,20 @@\n std::vector<sha1_hash> similar_torrents () const;\n

    \n

    These two functions are related to BEP 38 (mutable torrents). The\n vectors returned from these correspond to the "similar" and\n "collections" keys in the .torrent file. Both info-hashes and\n collections from within the info-dict and from outside of it are\n included.

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

    add_http_seed() set_web_seeds() add_url_seed() web_seeds()

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

    set_web_seeds() add_url_seed() add_http_seed() web_seeds()

    \n
    \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::headers_t());\n std::vector<web_seed_entry> const& web_seeds () const;\n void add_http_seed (std::string const& url\n       , std::string const& extern_auth = std::string()\n@@ -3547,63 +3547,63 @@\n std::int64_t total_size () const;\n 
    \n

    total_size() returns the total number of bytes the torrent-file\n represents. Note that this is the number of pieces times the piece\n size (modulo the last piece possibly being smaller). With pad files,\n the total size will be larger than the sum of all (regular) file\n sizes.

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

    num_pieces() piece_length()

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

    piece_length() num_pieces()

    \n
    \n int piece_length () const;\n int num_pieces () const;\n 
    \n

    piece_length() and num_pieces() returns the number of byte\n for each piece and the total number of pieces, respectively. The\n difference between piece_size() and piece_length() is that\n piece_size() takes the piece index as argument and gives you the\n 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\n smaller.

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

    piece_range() last_piece() end_piece()

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

    last_piece() end_piece() piece_range()

    \n
    \n+piece_index_t last_piece () const;\n index_range<piece_index_t> piece_range () const;\n piece_index_t end_piece () const;\n-piece_index_t last_piece () const;\n 
    \n

    last_piece() returns the index to the last piece in the torrent and\n end_piece() returns the index to the one-past-end piece in the\n torrent\n piece_range() returns an implementation-defined type that can be\n used as the container in a range-for loop. Where the values are the\n indices of all pieces in the file_storage.

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

    info_hash() info_hashes()

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

    info_hashes() info_hash()

    \n
    \n sha1_hash info_hash () const noexcept;\n info_hash_t const& info_hashes () const;\n 
    \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\n info-hash

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

    v1() v2()

    \n
    \n-bool v2 () const;\n bool v1 () const;\n+bool v2 () const;\n 
    \n

    returns whether this torrent has v1 and/or v2 metadata, respectively.\n Hybrid torrents have both. These are shortcuts for\n info_hashes().has_v1() and info_hashes().has_v2() calls.

    \n [report issue]
    \n
    \n

    num_files()

    \n@@ -3676,21 +3676,21 @@\n
    \n

    piece_size()

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

    returns the piece size of file with index. This will be the same as piece_length(),\n except for the last piece, which may be shorter.

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

    hash_for_piece() hash_for_piece_ptr()

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

    hash_for_piece_ptr() hash_for_piece()

    \n
    \n-sha1_hash hash_for_piece (piece_index_t index) const;\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 
    \n

    hash_for_piece() takes a piece-index and returns the 20-bytes\n sha1-hash for that piece and info_hash() returns the 20-bytes\n sha1-hash for the info-section of the torrent file.\n hash_for_piece_ptr() returns a pointer to the 20 byte sha1 digest\n for the piece. Note that the string is not 0-terminated.

    \n [report issue]
    \n@@ -4286,20 +4286,20 @@\n

    Note

    \n

    If has_v2() is false then the v1 hash might actually be a truncated\n v2 hash

    \n
    \n
    \n struct info_hash_t\n {\n-   explicit info_hash_t (sha256_hash h2) noexcept;\n-   info_hash_t () noexcept = default;\n    explicit info_hash_t (sha1_hash h1) noexcept;\n+   info_hash_t () noexcept = default;\n    info_hash_t (sha1_hash h1, sha256_hash h2) noexcept;\n-   bool has (protocol_version v) const;\n+   explicit info_hash_t (sha256_hash h2) noexcept;\n    bool has_v2 () const;\n+   bool has (protocol_version v) const;\n    bool has_v1 () 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) noexcept;\n    template <typename F> void for_each (F f) const;\n    bool operator< (info_hash_t const& o) const;\n@@ -4308,32 +4308,32 @@\n    sha1_hash v1;\n    sha256_hash v2;\n };\n 
    \n [report issue]
    \n

    info_hash_t()

    \n
    \n-explicit info_hash_t (sha256_hash h2) noexcept;\n-info_hash_t () noexcept = default;\n explicit info_hash_t (sha1_hash h1) noexcept;\n+info_hash_t () noexcept = default;\n info_hash_t (sha1_hash h1, sha256_hash h2) noexcept;\n+explicit info_hash_t (sha256_hash h2) noexcept;\n 
    \n

    The default constructor creates an object that has neither a v1 or v2\n hash.

    \n

    For backwards compatibility, make it possible to construct directly\n from a v1 hash. This constructor allows implicit conversion from a\n v1 hash, but the implicitness is deprecated.

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

    has() has_v1() has_v2()

    \n
    \n-bool has (protocol_version v) const;\n bool has_v2 () const;\n+bool has (protocol_version v) const;\n bool has_v1 () const;\n 
    \n

    returns true if the corresponding info hash is present in this\n object.

    \n [report issue]
    \n
    \n

    get()

    \n@@ -4410,34 +4410,34 @@\n
    start
    \n
    The byte offset within that piece where the range starts.
    \n \n [report issue]
    \n
    length
    \n
    The size of the range, in bytes.
    \n
    \n-\n \n-[report issue]
    \n+\n+[report issue]
    \n
    \n-
    \n-

    load_torrent_parsed() load_torrent_file() load_torrent_buffer()

    \n+
    \n+

    load_torrent_file() load_torrent_buffer() load_torrent_parsed()

    \n

    Declared in "libtorrent/load_torrent.hpp"

    \n
    \n-add_torrent_params load_torrent_parsed (\n-   bdecode_node const& torrent_file, load_torrent_limits const& cfg);\n-add_torrent_params load_torrent_buffer (\n-   span<char const> buffer, load_torrent_limits const& cfg);\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<char const> 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_parsed (\n+   bdecode_node const& torrent_file);\n add_torrent_params load_torrent_file (\n    std::string const& filename);\n add_torrent_params load_torrent_buffer (\n    span<char const> buffer);\n-add_torrent_params load_torrent_parsed (\n-   bdecode_node const& torrent_file);\n 
    \n

    These functions load the content of a .torrent file into an\n add_torrent_params object.\n 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\n object).\n The returned object is suitable to be:

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

    make_magnet_uri()

    \n

    Declared in "libtorrent/magnet_uri.hpp"

    \n
    \n-std::string make_magnet_uri (torrent_handle const& handle);\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 
    \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@@ -4479,17 +4479,17 @@\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+void parse_magnet_uri (string_view uri, add_torrent_params& p, error_code& ec);\n add_torrent_params parse_magnet_uri (string_view uri);\n add_torrent_params parse_magnet_uri (string_view uri, error_code& ec);\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 [report issue]
    \n@@ -5275,16 +5275,16 @@\n

    Torrent plugins are associated with a single torrent and have a number\n of functions called at certain events. Many of its functions have the\n ability to change or override the default libtorrent behavior.

    \n
    \n struct torrent_plugin\n {\n    virtual std::shared_ptr<peer_plugin> new_connection (peer_connection_handle const&);\n-   virtual void on_piece_failed (piece_index_t);\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_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@@ -5311,33 +5311,33 @@\n to it, use weak_ptr.

    \n

    If this function throws an exception, the connection will be closed.

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

    on_piece_failed() on_piece_pass()

    \n
    \n-virtual void on_piece_failed (piece_index_t);\n virtual void on_piece_pass (piece_index_t);\n+virtual void on_piece_failed (piece_index_t);\n 
    \n

    These hooks are called when a piece passes the hash check or fails the hash\n check, respectively. The index is the piece index that was downloaded.\n It is possible to access the list of peers that participated in sending the\n piece through the torrent and the piece_picker.

    \n [report issue]
    \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_resume() on_pause()

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

    on_pause() on_resume()

    \n
    \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@@ -5405,51 +5405,51 @@\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_have_all ();\n- virtual bool on_unchoke ();\n- virtual bool on_choke ();\n- virtual bool on_interested ();\n- virtual bool on_request (peer_request const&);\n- virtual bool on_bitfield (bitfield const& /*bitfield*/);\n virtual bool on_not_interested ();\n- virtual bool on_have (piece_index_t);\n+ virtual bool on_have_none ();\n virtual bool on_dont_have (piece_index_t);\n+ virtual bool on_have (piece_index_t);\n virtual bool on_allowed_fast (piece_index_t);\n- virtual bool on_have_none ();\n+ virtual bool on_interested ();\n+ virtual bool on_bitfield (bitfield const& /*bitfield*/);\n+ virtual bool on_choke ();\n+ virtual bool on_request (peer_request const&);\n+ virtual bool on_have_all ();\n+ virtual bool on_unchoke ();\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_reject (peer_request const&);\n virtual bool on_suggest (piece_index_t);\n- virtual void sent_cancel (peer_request const&);\n- virtual void sent_have_all ();\n+ virtual bool on_reject (peer_request const&);\n+ virtual bool on_cancel (peer_request const&);\n virtual void sent_suggest (piece_index_t);\n+ virtual void sent_reject_request (peer_request const&);\n+ virtual void sent_request (peer_request const&);\n+ virtual void sent_have_all ();\n+ virtual void sent_cancel (peer_request const&);\n virtual void sent_choke ();\n virtual void sent_have_none ();\n virtual void sent_allow_fast (piece_index_t);\n- virtual void sent_reject_request (peer_request const&);\n- virtual void sent_request (peer_request const&);\n- virtual void sent_not_interested ();\n virtual void sent_unchoke ();\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_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_failed (piece_index_t);\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 write_request (peer_request const&);\n };\n \n [report issue]

    \n

    type()

    \n
    \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+\n+\n \n-[report issue]
    \n-
    \n-

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

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

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

    \n
    \n-virtual bool on_have_all ();\n-virtual bool on_unchoke ();\n-virtual bool on_choke ();\n-virtual bool on_interested ();\n-virtual bool on_request (peer_request const&);\n-virtual bool on_bitfield (bitfield const& /*bitfield*/);\n virtual bool on_not_interested ();\n-virtual bool on_have (piece_index_t);\n+virtual bool on_have_none ();\n virtual bool on_dont_have (piece_index_t);\n+virtual bool on_have (piece_index_t);\n virtual bool on_allowed_fast (piece_index_t);\n-virtual bool on_have_none ();\n+virtual bool on_interested ();\n+virtual bool on_bitfield (bitfield const& /*bitfield*/);\n+virtual bool on_choke ();\n+virtual bool on_request (peer_request const&);\n+virtual bool on_have_all ();\n+virtual bool on_unchoke ();\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,25 +5543,25 @@\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 \n-[report issue]
    \n-
    \n-

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

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

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

    \n
    \n-virtual void sent_not_interested ();\n virtual void sent_unchoke ();\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 
    \n

    called after a choke message has been sent to the peer

    \n [report issue]
    \n
    \n

    sent_payload()

    \n@@ -5604,16 +5604,16 @@\n \n

    this is not called for web seeds

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

    on_piece_failed() on_piece_pass()

    \n
    \n-virtual void on_piece_failed (piece_index_t);\n virtual void on_piece_pass (piece_index_t);\n+virtual void on_piece_failed (piece_index_t);\n 
    \n

    called when a piece that this peer participated in either\n fails or passes the hash_check

    \n [report issue]
    \n
    \n

    tick()

    \n
    \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,50 +5666,50 @@\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-   void add_extension (std::shared_ptr<peer_plugin>);\n    peer_plugin const* find_plugin (string_view type) const;\n+   void add_extension (std::shared_ptr<peer_plugin>);\n    bool is_seed () const;\n    bool upload_only () const;\n-   peer_id const& pid () const;\n    bool has_piece (piece_index_t i) const;\n+   peer_id const& pid () const;\n    bool is_interesting () const;\n    bool is_choked () const;\n-   bool has_peer_choked () const;\n    bool is_peer_interested () const;\n-   void maybe_unchoke_this_peer ();\n+   bool has_peer_choked () const;\n    void choke_this_peer ();\n+   void maybe_unchoke_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+   tcp::endpoint const& remote () const;\n    bool is_outgoing () const;\n+   bool is_disconnecting () 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_disconnecting () const;\n    bool on_local_network () const;\n    bool ignore_unchoke_slots () 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    time_point time_of_last_unchoke () const;\n    std::time_t last_seen_complete () 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

    Declared in "libtorrent/peer_connection_handle.hpp"

    \n@@ -5719,16 +5719,16 @@\n
    \n struct bt_peer_connection_handle : peer_connection_handle\n {\n    explicit bt_peer_connection_handle (peer_connection_handle pc);\n    bool support_extensions () const;\n    bool packet_finished () const;\n    bool supports_encryption () const;\n-   void switch_send_crypto (std::shared_ptr<crypto_plugin> crypto);\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
    \n

    create_ut_pex_plugin()

    \n

    Declared in "libtorrent/extensions/ut_pex.hpp"

    \n@@ -5808,75 +5808,75 @@\n size. Everything necessary to interpret a regular bittorrent storage\n file structure.

    \n
    \n class file_storage\n {\n    bool is_valid () const;\n    void reserve (int num_files);\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 (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+   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_borrow (string_view filename\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    std::int64_t total_size () const;\n-   void set_num_pieces (int n);\n    int num_pieces () const;\n+   void set_num_pieces (int n);\n    piece_index_t end_piece () const;\n    piece_index_t last_piece () const;\n    index_range<piece_index_t> piece_range () const noexcept;\n    int piece_length () const;\n    void set_piece_length (int l);\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-   bool pad_file_at (file_index_t index) const;\n    sha256_hash root (file_index_t index) const;\n    char const* root_ptr (file_index_t const index) const;\n-   std::string symlink (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-   std::int64_t file_size (file_index_t index) const;\n    string_view file_name (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::string symlink (file_index_t index) const;\n+   sha1_hash hash (file_index_t index) const;\n    std::time_t mtime (file_index_t index) const;\n+   std::int64_t file_offset (file_index_t index) const;\n+   bool pad_file_at (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_num_blocks (file_index_t index) const;\n-   int file_num_pieces (file_index_t index) 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    file_index_t file_index_at_piece (piece_index_t piece) const;\n+   file_index_t file_index_at_offset (std::int64_t offset) const;\n    file_index_t file_index_for_root (sha256_hash const& root_hash) const;\n    piece_index_t piece_index_at_file (file_index_t f) const;\n    void sanitize_symlinks ();\n    bool v2 () const;\n \n    static constexpr file_flags_t flag_pad_file  = 0_bit;\n    static constexpr file_flags_t flag_hidden  = 1_bit;\n@@ -5903,28 +5903,28 @@\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_borrow() add_file()

    \n
    \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 (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+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_borrow (string_view filename\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@@ -6026,21 +6026,21 @@\n [report issue]

    \n
    \n

    total_size()

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

    returns the total number of bytes all the files in this torrent spans

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

    set_num_pieces() num_pieces()

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

    num_pieces() set_num_pieces()

    \n
    \n-void set_num_pieces (int n);\n int num_pieces () const;\n+void set_num_pieces (int n);\n 
    \n

    set and get the number of pieces in the torrent

    \n [report issue]
    \n
    \n

    end_piece()

    \n
    \n piece_index_t end_piece () const;\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-

    set_piece_length() piece_length()

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

    piece_length() set_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-

    name() set_name()

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

    set_name() 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@@ -6121,36 +6121,36 @@\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-[report issue]\n-\n+\n-
    \n-

    file_num_blocks() file_piece_range() file_num_pieces()

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

    file_num_blocks() file_num_pieces() file_piece_range()

    \n
    \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_num_blocks (file_index_t index) const;\n-int file_num_pieces (file_index_t index) 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_piece_node() file_first_block_node()

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

    file_first_block_node() file_first_piece_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,21 +6229,21 @@\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_piece() file_index_at_offset()

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

    file_index_at_offset() file_index_at_piece()

    \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+file_index_t file_index_at_offset (std::int64_t offset) const;\n 
    \n

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

    \n [report issue]
    \n
    \n

    file_index_for_root()

    \n
    \n file_index_t file_index_for_root (sha256_hash const& root_hash) const;\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    explicit operator T () const;\n    T* get () const;\n-   client_data_t& operator= (void const*) = delete;\n+   client_data_t& operator= (void*) = delete;\n    operator void const* () const = delete;\n    operator void* () const = delete;\n-   client_data_t& operator= (void*) = delete;\n+   client_data_t& 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-client_data_t& operator= (void const*) = delete;\n+client_data_t& operator= (void*) = delete;\n operator void const* () const = delete;\n operator void* () const = delete;\n-client_data_t& operator= (void*) = delete;\n+client_data_t& 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@@ -6896,16 +6896,16 @@\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 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+   void disallow (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@@ -6922,21 +6922,21 @@\n 

    remove() add()

    \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 
    \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-

    allow() disallow()

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

    disallow() allow()

    \n
    \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+void disallow (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@@ -7014,17 +7014,17 @@\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-

    peer() set_peer()

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

    set_peer() peer()

    \n
    \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@@ -7172,94 +7172,94 @@\n void add_piece (piece_index_t piece, char const* 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 std::vector<partial_piece_info> get_download_queue () const;\n void get_download_queue (std::vector<partial_piece_info>& queue) const;\n- void clear_piece_deadlines () const;\n- void reset_piece_deadline (piece_index_t index) const;\n void set_piece_deadline (piece_index_t index, int deadline, deadline_flags_t flags = {}) const;\n- void file_progress (std::vector<std::int64_t>& progress, file_progress_flags_t flags = {}) const;\n+ void reset_piece_deadline (piece_index_t index) const;\n+ void clear_piece_deadlines () const;\n std::vector<std::int64_t> file_progress (file_progress_flags_t flags = {}) const;\n+ void file_progress (std::vector<std::int64_t>& 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- 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- void remove_http_seed (std::string const& url) const;\n+ std::set<std::string> url_seeds () const;\n std::set<std::string> http_seeds () const;\n void add_http_seed (std::string const& url) const;\n+ void remove_http_seed (std::string const& url) 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 pause (pause_flags_t flags = {}) const;\n void resume () const;\n+ void pause (pause_flags_t flags = {}) const;\n void set_flags (torrent_flags_t flags, torrent_flags_t mask) const;\n- torrent_flags_t flags () const;\n- void set_flags (torrent_flags_t flags) const;\n void unset_flags (torrent_flags_t flags) const;\n+ void set_flags (torrent_flags_t flags) const;\n+ 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- queue_position_t queue_position () const;\n void queue_position_down () const;\n+ void queue_position_bottom () const;\n void queue_position_top () const;\n void queue_position_up () const;\n- void queue_position_bottom () const;\n+ queue_position_t queue_position () 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::vector<std::vector<sha256_hash>> piece_layers () const;\n void piece_availability (std::vector<int>& avail) const;\n std::vector<download_priority_t> get_piece_priorities () const;\n void piece_priority (piece_index_t index, download_priority_t priority) 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 prioritize_pieces (std::vector<download_priority_t> const& pieces) const;\n- void file_priority (file_index_t index, download_priority_t priority) const;\n+ download_priority_t piece_priority (piece_index_t index) 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- void force_lsd_announce () const;\n+ std::vector<download_priority_t> get_file_priorities () const;\n+ void file_priority (file_index_t index, download_priority_t priority) const;\n void force_reannounce (int seconds = 0, int idx = -1, reannounce_flags_t = {}) const;\n+ void force_lsd_announce () const;\n void force_dht_announce () const;\n void scrape_tracker (int idx = -1) const;\n+ int upload_limit () const;\n void set_download_limit (int limit) const;\n int download_limit () const;\n- int upload_limit () const;\n void set_upload_limit (int 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+ 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- sha1_hash info_hash () const;\n info_hash_t info_hashes () const;\n- bool operator!= (const torrent_handle& h) 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 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@@ -7370,23 +7370,23 @@\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-[report issue]
    \n-
    \n-

    clear_piece_deadlines() set_piece_deadline() reset_piece_deadline()

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

    set_piece_deadline() reset_piece_deadline() clear_piece_deadlines()

    \n
    \n-void clear_piece_deadlines () const;\n-void reset_piece_deadline (piece_index_t index) const;\n void set_piece_deadline (piece_index_t index, int deadline, deadline_flags_t flags = {}) 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@@ -7401,16 +7401,16 @@\n priority.

    \n

    clear_piece_deadlines() removes deadlines on all pieces in\n the torrent. As if reset_piece_deadline() was called on all pieces.

    \n [report issue]
    \n
    \n

    file_progress()

    \n
    \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+void file_progress (std::vector<std::int64_t>& progress, file_progress_flags_t flags = {}) const;\n 
    \n

    This function fills in the supplied vector, or returns a vector, with\n the number of bytes downloaded of each file in this torrent. The\n progress values are ordered the same as the files in the\n torrent_info.

    \n

    This operation is not very cheap. Its complexity is O(n + mj).\n Where n is the number of files, m is the number of currently\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() add_tracker() trackers()

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

    add_tracker() replace_trackers() trackers()

    \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@@ -7471,36 +7471,36 @@\n data will replace the original ones.

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

    remove_url_seed() add_url_seed() url_seeds()

    \n
    \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> url_seeds () 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-

    add_http_seed() http_seeds() remove_http_seed()

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

    http_seeds() add_http_seed() remove_http_seed()

    \n
    \n-void remove_http_seed (std::string const& url) const;\n std::set<std::string> http_seeds () const;\n void add_http_seed (std::string const& url) const;\n+void remove_http_seed (std::string const& url) 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@@ -7542,21 +7542,21 @@\n afterward.

    \n

    Clients should only use is_valid() to determine if the result of\n session::find_torrent() was successful.

    \n

    Unlike other member functions which return a value, is_valid()\n completes immediately, without blocking on a result from the\n network thread. Also unlike other functions, it never throws\n the system_error exception.

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

    resume() pause()

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

    pause() resume()

    \n
    \n-void pause (pause_flags_t flags = {}) const;\n void resume () const;\n+void pause (pause_flags_t flags = {}) const;\n 
    \n

    pause(), and resume() will disconnect all peers and reconnect\n all peers respectively. When a torrent is paused, it will however\n remember all share ratios to all peers and remember all potential (not\n connected) peers. Torrents may be paused automatically if there is a\n file error (e.g. disk full) or something similar. See\n file_error_alert.

    \n@@ -7567,24 +7567,24 @@\n
    \n

    Note

    \n

    Torrents that are auto-managed may be automatically resumed again. It\n does not make sense to pause an auto-managed torrent without making it\n not auto-managed first. Torrents are auto-managed by default when added\n to the session. For more information, see queuing.

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

    unset_flags() flags() set_flags()

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

    set_flags() flags() unset_flags()

    \n
    \n void set_flags (torrent_flags_t flags, torrent_flags_t mask) const;\n-torrent_flags_t flags () const;\n-void set_flags (torrent_flags_t flags) const;\n void unset_flags (torrent_flags_t flags) const;\n+void set_flags (torrent_flags_t flags) const;\n+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,27 +7735,27 @@\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 \n-[report issue]
    \n-
    \n-

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

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

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

    \n
    \n-queue_position_t queue_position () const;\n void queue_position_down () const;\n+void queue_position_bottom () const;\n void queue_position_top () const;\n void queue_position_up () const;\n-void queue_position_bottom () const;\n+queue_position_t queue_position () 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

    When a torrent is removed or turns into a seed, all torrents with\n greater queue positions have their positions decreased to fill in the\n@@ -7779,21 +7779,21 @@\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-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,18 +7809,18 @@\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 
    \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@@ -7868,25 +7868,25 @@\n

    Fills the specified std::vector<int> with the availability for\n each piece in this torrent. libtorrent does not keep track of\n availability for seeds, so if the torrent is seeding the availability\n for all pieces is reported as 0.

    \n

    The piece availability is the number of peers that we are connected\n that has advertised having a particular piece. This is the information\n that libtorrent uses in order to prefer picking rare pieces.

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

    prioritize_pieces() get_piece_priorities() piece_priority()

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

    get_piece_priorities() piece_priority() prioritize_pieces()

    \n
    \n std::vector<download_priority_t> get_piece_priorities () const;\n void piece_priority (piece_index_t index, download_priority_t priority) 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 prioritize_pieces (std::vector<download_priority_t> const& pieces) const;\n+download_priority_t piece_priority (piece_index_t index) 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 lower priority values means less likely to be picked. Piece priority\n@@ -7908,24 +7908,24 @@\n Invalid entries, where the piece index or priority is out of range, are\n not allowed.

    \n

    get_piece_priorities returns a vector with one element for each piece\n in the torrent. Each element is the current priority of that piece.

    \n

    It's possible to cancel the effect of file priorities by setting the\n priorities for the affected pieces. Care has to be taken when mixing\n usage of file- and piece priorities.

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

    prioritize_files() file_priority() get_file_priorities()

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

    get_file_priorities() file_priority() prioritize_files()

    \n
    \n-void file_priority (file_index_t index, download_priority_t priority) 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+std::vector<download_priority_t> get_file_priorities () const;\n+void file_priority (file_index_t index, download_priority_t priority) 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,22 +7948,22 @@\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-\n-[report issue]
    \n-
    \n-

    force_dht_announce() force_lsd_announce() force_reannounce()

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

    force_reannounce() force_dht_announce() force_lsd_announce()

    \n
    \n-void force_lsd_announce () const;\n void force_reannounce (int seconds = 0, int idx = -1, reannounce_flags_t = {}) const;\n+void force_lsd_announce () const;\n void force_dht_announce () 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@@ -7988,24 +7988,24 @@\n idx is >= 0, the tracker with the specified index will scraped.

    \n

    A scrape request queries the tracker for statistics such as total\n number of incomplete peers, complete peers, number of downloads etc.

    \n

    This request will specifically update the num_complete and\n num_incomplete fields in the torrent_status struct once it\n completes. When it completes, it will generate a scrape_reply_alert.\n If it fails, it will generate a scrape_failed_alert.

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

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

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

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

    \n
    \n+int upload_limit () const;\n void set_download_limit (int limit) const;\n int download_limit () const;\n-int upload_limit () const;\n void set_upload_limit (int 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@@ -8057,16 +8057,16 @@\n settings_pack.

    \n

    max_uploads() returns the current settings.

    \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+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 must be at least 2. The default is unlimited number of connections. If\n -1 is given to the function, it means unlimited. There is also a\n global limit of the number of connections, set by\n@@ -8129,36 +8129,36 @@\n

    rename_file()

    \n
    \n void rename_file (file_index_t index, std::string const& new_name) const;\n 
    \n

    Renames the file with the given index asynchronously. The rename\n operation is complete when either a file_renamed_alert or\n file_rename_failed_alert is posted.

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

    info_hash() info_hashes()

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

    info_hashes() info_hash()

    \n
    \n-sha1_hash info_hash () const;\n info_hash_t info_hashes () const;\n+sha1_hash info_hash () const;\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-[report issue]
    \n+\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 
    \n

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

    \n [report issue]
    \n
    \n

    id()

    \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@@ -8703,22 +8703,22 @@\n internal libtorrent torrent object to tie the storage object allocated\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 ();\n-   storage_holder () = default;\n    storage_holder (storage_index_t idx, disk_interface& disk_io);\n+   storage_holder () = default;\n+   ~storage_holder ();\n    explicit operator bool () const;\n    operator storage_index_t () const;\n    void reset ();\n-   storage_holder (storage_holder const&) = delete;\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 };\n 
    \n [report issue]
    \n
    \n

    disk_observer

    \n@@ -8758,18 +8758,18 @@\n

    The disk buffer holder acts like a unique_ptr that frees a disk buffer\n when it's destructed

    \n

    If this buffer holder is moved-from, default constructed or reset,\n data() will return nullptr.

    \n
    \n struct disk_buffer_holder\n {\n-   disk_buffer_holder (disk_buffer_holder&&) noexcept;\n    disk_buffer_holder& operator= (disk_buffer_holder&&) & noexcept;\n-   disk_buffer_holder& operator= (disk_buffer_holder const&) = delete;\n+   disk_buffer_holder (disk_buffer_holder&&) noexcept;\n    disk_buffer_holder (disk_buffer_holder const&) = delete;\n+   disk_buffer_holder& operator= (disk_buffer_holder const&) = delete;\n    disk_buffer_holder (buffer_allocator_interface& alloc\n       , char* buf, int sz) noexcept;\n    disk_buffer_holder () noexcept = default;\n    ~disk_buffer_holder ();\n    char* data () const noexcept;\n    void reset ();\n    void swap (disk_buffer_holder& h) noexcept;\n@@ -8844,18 +8844,18 @@\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_str (int name, std::string 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 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@@ -9954,26 +9954,26 @@\n torrent_handle::move_storage. This is useful to synchronize with the\n actual disk. The storage_path() member return the new path of the\n storage.

    \n
    \n struct storage_moved_alert final : torrent_alert\n {\n    std::string message () const override;\n-   char const* old_path () const;\n    char const* storage_path () const;\n+   char const* old_path () const;\n \n    static constexpr alert_category_t static_category  = alert_category::storage;\n };\n 
    \n-\n-[report issue]
    \n-

    storage_path() old_path()

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

    old_path() storage_path()

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

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

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

    storage_moved_failed_alert

    \n

    Declared in "libtorrent/alert_types.hpp"

    \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-

    nodes() num_nodes()

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

    num_nodes() 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@@ -11672,17 +11672,17 @@\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 
    \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@@ -11746,16 +11746,16 @@\n

    this alert is posted to indicate to the client that some alerts were\n dropped. Dropped meaning that the alert failed to be delivered to the\n client. The most common cause of such failure is that the internal alert\n queue grew too big (controlled by alert_queue_size).

    \n
    \n struct alerts_dropped_alert final : alert\n {\n-   static_assert (num_alert_types <= abi_alert_count, "need to increase bitset. This is an ABI break");\n    std::string message () const override;\n+   static_assert (num_alert_types <= abi_alert_count, "need to increase bitset. This is an ABI break");\n \n    static constexpr alert_category_t static_category  = alert_category::error;\n    std::bitset<abi_alert_count> dropped_alerts;\n };\n 
    \n [report issue]
    \n
    dropped_alerts
    \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 const* alert_cast (alert const* a);\n template <typename T> T* alert_cast (alert* a);\n+template <typename T> T const* alert_cast (alert const* 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@@ -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 ();\n-   ip_filter& operator= (ip_filter const&);\n    ip_filter ();\n-   ip_filter (ip_filter&&);\n-   ip_filter& operator= (ip_filter&&);\n+   ip_filter& operator= (ip_filter const&);\n    ip_filter (ip_filter const&);\n+   ip_filter& operator= (ip_filter&&);\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@@ -12458,20 +12458,20 @@\n 

    the port filter maps non-overlapping port ranges to flags. This\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& operator= (port_filter const&);\n+   port_filter (port_filter&&);\n+   port_filter (port_filter const&);\n    ~port_filter ();\n-   port_filter ();\n    port_filter& operator= (port_filter&&);\n-   port_filter (port_filter const&);\n-   port_filter (port_filter&&);\n-   port_filter& operator= (port_filter const&);\n+   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@@ -12547,38 +12547,38 @@\n    entry (preformatted_type);\n    entry (dictionary_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= (entry const&) &;\n-   entry& operator= (dictionary_type) &;\n-   entry& operator= (bdecode_node const&) &;\n-   entry& operator= (list_type) &;\n-   entry& operator= (preformatted_type) &;\n    entry& operator= (entry&&) & noexcept;\n+   entry& operator= (bdecode_node const&) &;\n    entry& operator= (integer_type) &;\n+   entry& operator= (preformatted_type) &;\n    entry& operator= (span<char const>) &;\n+   entry& operator= (dictionary_type) &;\n+   entry& operator= (list_type) &;\n+   entry& operator= (entry const&) &;\n    entry& operator= (U v) &;\n-   dictionary_type const& dict () const;\n+   preformatted_type const& preformatted () const;\n+   list_type const& list () const;\n    integer_type const& integer () const;\n-   string_type& string ();\n-   list_type& list ();\n    preformatted_type& preformatted ();\n-   string_type const& string () const;\n    dictionary_type& dict ();\n+   dictionary_type const& dict () const;\n+   string_type const& string () const;\n    integer_type& integer ();\n-   preformatted_type const& preformatted () const;\n-   list_type const& list () const;\n+   string_type& string ();\n+   list_type& list ();\n    void swap (entry& e);\n    entry const& operator[] (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+   entry* find_key (string_view key);\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@@ -12622,43 +12622,43 @@\n entry (bdecode_node const& n);\n 
    \n

    construct from bdecode_node parsed form (see bdecode())

    \n [report issue]
    \n
    \n

    operator=()

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

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

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

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

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

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

    \n
    \n-dictionary_type const& dict () const;\n+preformatted_type const& preformatted () const;\n+list_type const& list () const;\n integer_type const& integer () const;\n-string_type& string ();\n-list_type& list ();\n preformatted_type& preformatted ();\n-string_type const& string () const;\n dictionary_type& dict ();\n+dictionary_type const& dict () const;\n+string_type const& string () const;\n integer_type& integer ();\n-preformatted_type const& preformatted () const;\n-list_type const& list () const;\n+string_type& string ();\n+list_type& list ();\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@@ -12718,16 +12718,16 @@\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* find_key (string_view key);\n entry const* find_key (string_view key) const;\n+entry* find_key (string_view key);\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@@ -12860,42 +12860,42 @@\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-   std::vector<char> generate_buf () const;\n    entry generate () const;\n+   std::vector<char> generate_buf () 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_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-   void set_priv (bool p);\n    bool priv () const;\n-   bool is_v2_only () const;\n+   void set_priv (bool p);\n    bool is_v1_only () const;\n+   bool is_v2_only () const;\n    int num_pieces () const;\n    piece_index_t end_piece () const;\n    index_range<piece_index_t> piece_range () const noexcept;\n    file_index_t end_file () const;\n    index_range<file_index_t> file_range () const noexcept;\n    index_range<piece_index_t::diff_type> file_piece_range (file_index_t f);\n    std::int64_t total_size () const;\n    int piece_length () const;\n    int piece_size (piece_index_t i) const;\n-   void add_similar_torrent (sha1_hash ih);\n    void add_collection (string_view c);\n+   void add_similar_torrent (sha1_hash ih);\n \n    static constexpr create_flags_t modification_time  = 2_bit;\n    static constexpr create_flags_t symlinks  = 3_bit;\n    static constexpr create_flags_t v2_only  = 5_bit;\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@@ -12930,16 +12930,16 @@\n entire duration of the create_torrent object.

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

    generate_buf() generate()

    \n
    \n-std::vector<char> generate_buf () const;\n entry generate () const;\n+std::vector<char> generate_buf () 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,18 +13022,18 @@\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_http_seed() add_url_seed()

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

    add_url_seed() add_http_seed()

    \n
    \n void add_http_seed (string_view url);\n void add_url_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@@ -13070,21 +13070,21 @@\n \n

    This function sets an X.509 certificate in PEM format to the torrent. This makes the\n torrent an SSL torrent. An SSL torrent requires that each peer has a valid certificate\n signed by this root certificate. For SSL torrents, all peers are connecting over SSL\n connections. For more information, see the section on ssl torrents.

    \n

    The string is not the path to the cert, it's the actual content of the\n certificate.

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

    priv() set_priv()

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

    set_priv() priv()

    \n
    \n-void set_priv (bool p);\n bool priv () const;\n+void set_priv (bool p);\n 
    \n

    Sets and queries the private flag of the torrent.\n Torrents with the private flag set ask the client to not use any other\n sources than the tracker for peers, and to not use DHT to advertise itself publicly,\n only the tracker.

    \n [report issue]
    \n
    \n@@ -13119,32 +13119,32 @@\n [report issue]
    \n
    \n

    total_size()

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

    the total number of bytes of all files and pad files

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

    piece_size() piece_length()

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

    piece_length() piece_size()

    \n
    \n int piece_length () const;\n int piece_size (piece_index_t i) const;\n 
    \n

    piece_length() returns the piece size of all pieces but the\n last one. piece_size() returns the size of the specified piece.\n these functions are just forwarding to the associated file_storage.

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

    add_similar_torrent() add_collection()

    \n
    \n-void add_similar_torrent (sha1_hash ih);\n void add_collection (string_view c);\n+void add_similar_torrent (sha1_hash ih);\n 
    \n

    Add similar torrents (by info-hash) or collections of similar torrents.\n Similar torrents are expected to share some files with this torrent.\n Torrents sharing a collection name with this torrent are also expected\n to share files with this torrent. A torrent may have more than one\n collection and more than one similar torrents. For more information,\n see BEP 38.

    \n@@ -13209,17 +13209,17 @@\n [report issue]
    \n
    \n
    \n

    add_files()

    \n

    Declared in "libtorrent/create_torrent.hpp"

    \n
    \n void add_files (file_storage& fs, std::string const& file\n-   , create_flags_t flags = {});\n-void add_files (file_storage& fs, std::string const& file\n    , std::function<bool(std::string)> p, create_flags_t flags = {});\n+void add_files (file_storage& fs, std::string const& file\n+   , create_flags_t flags = {});\n 
    \n

    Adds the file specified by path to the file_storage object. In case path\n refers to a directory, files will be added recursively from the directory.

    \n

    If specified, the predicate p is called once for every file and directory that\n is encountered. Files for which p returns true are added, and directories for\n which p returns true are traversed. p must have the following signature:

    \n
    \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\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\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 void set_piece_hashes (create_torrent& t, std::string const& p\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, disk_io_constructor_type disk_io\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-   , 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+   , settings_interface const& settings\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 
    \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@@ -13268,46 +13268,46 @@\n 

    bitfield

    \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 () noexcept = default;\n    bitfield (int bits, bool val);\n-   bitfield (bitfield&& rhs) noexcept = default;\n-   explicit bitfield (int bits);\n    bitfield (char const* b, int bits);\n+   explicit bitfield (int bits);\n+   bitfield (bitfield&& rhs) noexcept = default;\n+   bitfield () noexcept = default;\n    bitfield (bitfield const& rhs);\n    void assign (char const* b, int const bits);\n    bool operator[] (int index) const noexcept;\n    bool get_bit (int index) const noexcept;\n    void clear_bit (int index) noexcept;\n    void set_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* data () noexcept;\n    char const* data () const noexcept;\n+   char* data () noexcept;\n    void swap (bitfield& rhs) noexcept;\n    int count () const noexcept;\n    int find_first_set () const noexcept;\n    int find_last_clear () const noexcept;\n };\n 
    \n [report issue]
    \n

    bitfield()

    \n
    \n-bitfield () noexcept = default;\n bitfield (int bits, bool val);\n-bitfield (bitfield&& rhs) noexcept = default;\n-explicit bitfield (int bits);\n bitfield (char const* b, int bits);\n+explicit bitfield (int bits);\n+bitfield (bitfield&& rhs) noexcept = default;\n+bitfield () noexcept = default;\n bitfield (bitfield const& rhs);\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@@ -13317,27 +13317,27 @@\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-

    get_bit() operator[]()

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

    operator[]() get_bit()

    \n
    \n bool operator[] (int index) const noexcept;\n bool get_bit (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 
    \n

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

    \n [report issue]
    \n
    \n@@ -13375,16 +13375,16 @@\n bool empty () const noexcept;\n
    \n

    returns true if the bitfield has zero size.

    \n [report issue]
    \n
    \n

    data()

    \n
    \n-char* data () noexcept;\n char const* data () const noexcept;\n+char* data () noexcept;\n 
    \n

    returns a pointer to the internal buffer of the bitfield, or\n nullptr if it's empty.

    \n [report issue]
    \n
    \n

    swap()

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

    hasher() operator=()

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

    operator=() hasher()

    \n
    \n-explicit hasher (span<char const> data);\n hasher (char const* data, int len);\n-hasher& operator= (hasher const&) &;\n hasher (hasher const&);\n+explicit hasher (span<char const> data);\n+hasher& operator= (hasher 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-hasher& update (span<char const> data);\n hasher& update (char const* data, int len);\n+hasher& update (span<char const> data);\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 (char const* data, int len);\n    explicit hasher256 (span<char const> data);\n    hasher256& operator= (hasher256 const&) &;\n    hasher256 (hasher256 const&);\n-   hasher256 (char const* data, int len);\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

    hasher256() operator=()

    \n
    \n+hasher256 (char const* data, int len);\n explicit hasher256 (span<char const> data);\n hasher256& operator= (hasher256 const&) &;\n hasher256 (hasher256 const&);\n-hasher256 (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-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,18 +14203,18 @@\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-   explicit announce_entry (string_view u);\n    announce_entry (announce_entry const&);\n    ~announce_entry ();\n    announce_entry ();\n+   explicit announce_entry (string_view u);\n    announce_entry& operator= (announce_entry const&) &;\n \n    enum tracker_source\n    {\n       source_torrent,\n       source_client,\n       source_magnet_link,\n@@ -14226,23 +14226,23 @@\n    std::vector<announce_endpoint> endpoints;\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 
    \n-\n \n-[report issue]
    \n-

    operator=() ~announce_entry() announce_entry()

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

    ~announce_entry() operator=() announce_entry()

    \n
    \n-explicit announce_entry (string_view u);\n announce_entry (announce_entry const&);\n ~announce_entry ();\n announce_entry ();\n+explicit announce_entry (string_view u);\n announce_entry& operator= (announce_entry const&) &;\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@@ -18770,18 +18770,18 @@\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, int val) override;\n-   void set_int (int name, flags::bitfield_flag<Type, Tag> const val);\n    void set_bool (int name, bool val) override;\n-   void set_str (int name, std::string val) override;\n+   void set_int (int name, flags::bitfield_flag<Type, Tag> const val);\n    bool has_val (int name) const override;\n    void clear ();\n    void clear (int name);\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@@ -18858,23 +18858,23 @@\n       socks5_pw,\n       http,\n       http_pw,\n       i2p_proxy,\n    };\n };\n 
    \n-\n \n-[report issue]
    \n-

    set_bool() set_str() set_int()

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

    set_str() set_bool() set_int()

    \n
    \n+void set_str (int name, std::string val) override;\n void set_int (int name, int val) override;\n-void set_int (int name, flags::bitfield_flag<Type, Tag> const val);\n void set_bool (int name, bool val) override;\n-void set_str (int name, std::string val) override;\n+void set_int (int name, flags::bitfield_flag<Type, Tag> const val);\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@@ -18895,18 +18895,18 @@\n
    \n

    clear()

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

    clear a specific setting from the pack

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

    get_str() get_bool() get_int()

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

    get_str() get_int() get_bool()

    \n
    \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@@ -19337,16 +19337,16 @@\n identify the version of your client.

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

    min_memory_usage() high_performance_seed()

    \n

    Declared in "libtorrent/session.hpp"

    \n
    \n-settings_pack high_performance_seed ();\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 can set the session settings to pre set settings for other environments.\n These can be used for the basis, and should be tweaked to fit your needs\n better.

    \n

    min_memory_usage returns settings that will use the minimal amount of\n@@ -19360,18 +19360,18 @@\n pieces, instead of reading it all into memory before hashing.

    \n

    This configuration is intended to be the starting point for embedded\n devices. It will significantly reduce memory usage.

    \n

    high_performance_seed returns settings optimized for a seed box,\n serving many peers and that doesn't do any downloading. It has a 128 MB\n disk cache and has a limit of 400 files in its file pool. It support fast\n upload rates by allowing large send buffers.

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

    name_for_setting() setting_by_name()

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

    setting_by_name() name_for_setting()

    \n

    Declared in "libtorrent/settings_pack.hpp"

    \n
    \n int setting_by_name (string_view name);\n char const* name_for_setting (int s);\n 
    \n

    converts a setting integer (from the enums string_types, int_types or\n bool_types) to a string, and vice versa.

    \n@@ -19406,31 +19406,31 @@\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 string_view list_string_value_at (int i\n , string_view default_val = string_view()) const;\n int list_size () const;\n+ int dict_size () const;\n std::pair<bdecode_node, bdecode_node> dict_at_node (int i) const;\n- bdecode_node dict_find_string (string_view key) 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_int (string_view key) const;\n- bdecode_node dict_find (string_view key) const;\n- int dict_size () const;\n std::pair<string_view, bdecode_node> dict_at (int i) const;\n- bdecode_node dict_find_dict (string_view key) const;\n- bdecode_node dict_find_list (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 (string_view key) const;\n+ bdecode_node dict_find_list (string_view key) 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 (string_view key) const;\n+ bdecode_node dict_find_dict (string_view key) const;\n std::int64_t int_value () const;\n- char const* string_ptr () const;\n+ std::ptrdiff_t string_offset () const;\n int string_length () const;\n string_view string_value () const;\n- std::ptrdiff_t string_offset () 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 enum type_t\n@@ -19479,71 +19479,71 @@\n
    \n

    non_owning()

    \n
    \n bdecode_node non_owning () const;\n 
    \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+[report issue]
    \n+
    \n+

    data_offset() data_section()

    \n
    \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_size() list_int_value_at() list_at() list_string_value_at()

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

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

    \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 string_view list_string_value_at (int i\n       , string_view default_val = string_view()) const;\n int list_size () 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-[report issue]
    \n-
    \n-

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

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

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

    \n
    \n+int dict_size () const;\n std::pair<bdecode_node, bdecode_node> dict_at_node (int i) const;\n-bdecode_node dict_find_string (string_view key) 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_int (string_view key) const;\n-bdecode_node dict_find (string_view key) const;\n-int dict_size () const;\n std::pair<string_view, bdecode_node> dict_at (int i) const;\n-bdecode_node dict_find_dict (string_view key) const;\n-bdecode_node dict_find_list (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 (string_view key) const;\n+bdecode_node dict_find_list (string_view key) 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 (string_view key) const;\n+bdecode_node dict_find_dict (string_view key) 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,25 +19558,25 @@\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_ptr() string_length() string_value() string_offset()

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

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

    \n
    \n-char const* string_ptr () const;\n+std::ptrdiff_t string_offset () const;\n int string_length () const;\n string_view string_value () const;\n-std::ptrdiff_t string_offset () 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 [report issue]
    \n@@ -19675,19 +19675,19 @@\n that's returned.

    \n [report issue]
    \n
    \n

    bdecode()

    \n

    Declared in "libtorrent/bdecode.hpp"

    \n
    \n bdecode_node bdecode (span<char const> buffer\n+   , int depth_limit = 100, int token_limit = 2000000);\n+int bdecode (char const* start, char const* end, bdecode_node& ret\n    , error_code& ec, int* error_pos = nullptr, int depth_limit = 100\n    , int token_limit = 2000000);\n bdecode_node bdecode (span<char const> buffer\n-   , int depth_limit = 100, int token_limit = 2000000);\n-int bdecode (char const* start, char const* end, bdecode_node& ret\n    , error_code& ec, int* error_pos = nullptr, int depth_limit = 100\n    , int token_limit = 2000000);\n 
    \n

    This function decodes/parses bdecoded data (for example a .torrent file).\n The data structure is returned in the ret argument. the buffer to parse\n is specified by the start of the buffer as well as the end, i.e. one\n byte past the end. If the buffer fails to parse, the function returns a\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() write_torrent_file_buf()

    \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+entry write_torrent_file (add_torrent_params const& atp);\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,86 +27,86 @@\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 session_proxy()_operator=()_~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 get_torrents()_find_torrent()\n- o add_torrent()_async_add_torrent()\n- o resume()_is_paused()_pause()\n+ o find_torrent()_get_torrents()\n+ o async_add_torrent()_add_torrent()\n+ o is_paused()_pause()_resume()\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 is_listening()_listen_port()_ssl_listen_port()\n- o set_peer_class_filter()_get_peer_class_filter()\n+ o ssl_listen_port()_listen_port()_is_listening()\n+ o get_peer_class_filter()_set_peer_class_filter()\n o set_peer_class_type_filter()_get_peer_class_type_filter()\n o create_peer_class()\n o delete_peer_class()\n- o get_peer_class()_set_peer_class()\n+ o set_peer_class()_get_peer_class()\n o remove_torrent()\n o apply_settings()_get_settings()\n- o pop_alerts()_set_alert_notify()_wait_for_alert()\n+ o wait_for_alert()_pop_alerts()_set_alert_notify()\n o delete_port_mapping()_add_port_mapping()\n o reopen_network_sockets()\n o native_handle()\n- * read_session_params()_write_session_params_buf()_write_session_params()\n+ * write_session_params_buf()_read_session_params()_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 orig_files()_files()\n+ o files()_orig_files()\n o rename_file()\n o remap_files()\n- o clear_trackers()_add_tracker()_trackers()\n+ o add_tracker()_clear_trackers()_trackers()\n o collections()_similar_torrents()\n- o add_http_seed()_set_web_seeds()_add_url_seed()_web_seeds()\n+ o set_web_seeds()_add_url_seed()_add_http_seed()_web_seeds()\n o total_size()\n- o num_pieces()_piece_length()\n- o piece_range()_last_piece()_end_piece()\n- o info_hash()_info_hashes()\n+ o piece_length()_num_pieces()\n+ o last_piece()_end_piece()_piece_range()\n+ o info_hashes()_info_hash()\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@@ -120,15 +120,15 @@\n o has()_has_v1()_has_v2()\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_buffer()_load_torrent_parsed()\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_failed()_on_piece_pass()\n o tick()\n- o on_resume()_on_pause()\n+ o on_pause()_on_resume()\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_request()_on_choke()_on_have_none()_on_have_all()_on_dont_have()\n- on_have()_on_allowed_fast()_on_not_interested()_on_interested()\n+ o on_have_all()_on_allowed_fast()_on_request()_on_choke()_on_have()\n+ on_interested()_on_have_none()_on_not_interested()_on_dont_have()\n on_bitfield()_on_unchoke()\n o on_piece()\n- o sent_have()_sent_unchoke()_sent_piece()_sent_not_interested()\n- sent_interested()\n+ o sent_piece()_sent_interested()_sent_not_interested()_sent_unchoke()\n+ sent_have()\n o sent_payload()\n o can_disconnect()\n o on_extended()\n o on_unknown_message()\n o on_piece_failed()_on_piece_pass()\n o tick()\n o write_request()\n@@ -198,115 +198,115 @@\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 num_pieces()_set_num_pieces()\n o end_piece()\n o last_piece()\n o piece_range()\n- o set_piece_length()_piece_length()\n+ o piece_length()_set_piece_length()\n o piece_size()\n o piece_size2()\n o blocks_in_piece2()\n- o name()_set_name()\n+ o set_name()_name()\n o swap()\n o canonicalize()\n- o file_offset()_hash()_symlink()_root()_pad_file_at()_file_path()\n- file_size()_mtime()_file_name()_root_ptr()\n- o file_num_blocks()_file_piece_range()_file_num_pieces()\n- o file_first_piece_node()_file_first_block_node()\n+ o file_offset()_file_path()_pad_file_at()_file_name()_symlink()\n+ file_size()_mtime()_root()_root_ptr()_hash()\n+ o file_num_blocks()_file_num_pieces()_file_piece_range()\n+ o file_first_block_node()_file_first_piece_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_piece()_file_index_at_offset()\n+ o file_index_at_offset()_file_index_at_piece()\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 allow()_disallow()\n+ o disallow()_allow()\n o apply()\n o enum_socket_type_t\n * block_info\n- o peer()_set_peer()\n+ o set_peer()_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()_set_piece_deadline()_reset_piece_deadline()\n+ o set_piece_deadline()_reset_piece_deadline()_clear_piece_deadlines()\n o file_progress()\n o file_status()\n o clear_error()\n- o replace_trackers()_add_tracker()_trackers()\n+ o add_tracker()_replace_trackers()_trackers()\n o remove_url_seed()_add_url_seed()_url_seeds()\n- o add_http_seed()_http_seeds()_remove_http_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()_flags()_set_flags()\n+ o pause()_resume()\n+ o set_flags()_flags()_unset_flags()\n o flush_cache()\n o force_recheck()\n o save_resume_data()\n o need_save_resume_data()\n- o queue_position()_queue_position_down()_queue_position_top()\n- queue_position_up()_queue_position_bottom()\n+ o queue_position_top()_queue_position_bottom()_queue_position_down()\n+ queue_position_up()_queue_position()\n o queue_position_set()\n o set_ssl_certificate_buffer()_set_ssl_certificate()\n- o torrent_file()_torrent_file_with_hashes()\n+ o torrent_file_with_hashes()_torrent_file()\n o piece_layers()\n o piece_availability()\n- o prioritize_pieces()_get_piece_priorities()_piece_priority()\n- o prioritize_files()_file_priority()_get_file_priorities()\n- o force_dht_announce()_force_lsd_announce()_force_reannounce()\n+ o get_piece_priorities()_piece_priority()_prioritize_pieces()\n+ o get_file_priorities()_file_priority()_prioritize_files()\n+ o force_reannounce()_force_dht_announce()_force_lsd_announce()\n o scrape_tracker()\n- o download_limit()_set_download_limit()_set_upload_limit()\n- upload_limit()\n+ o upload_limit()_set_upload_limit()_set_download_limit()\n+ download_limit()\n o connect_peer()\n o clear_peers()\n o set_max_uploads()_max_uploads()\n o set_max_connections()_max_connections()\n o move_storage()\n o rename_file()\n- o info_hash()_info_hashes()\n- o operator<()_operator==()_operator!=()\n+ o info_hashes()_info_hash()\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@@ -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 storage_path()_old_path()\n+ o old_path()_storage_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,18 +450,18 @@\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 nodes()_num_nodes()\n+ o num_nodes()_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@@ -489,15 +489,15 @@\n o enum_access_flags\n * entry\n o type()\n o entry()\n o entry()\n o entry()\n o operator=()\n- o list()_string()_integer()_dict()_preformatted()\n+ o integer()_preformatted()_dict()_list()_string()\n o swap()\n o operator[]()\n o find_key()\n o to_string()\n o enum_data_type\n * operator<<()\n * bencode()\n@@ -506,94 +506,94 @@\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_http_seed()_add_url_seed()\n+ o add_url_seed()_add_http_seed()\n o add_node()\n o add_tracker()\n o set_root_cert()\n- o priv()_set_priv()\n+ o set_priv()_priv()\n o num_pieces()\n o piece_range()\n o file_range()\n o file_piece_range()\n o total_size()\n- o piece_size()_piece_length()\n+ o piece_length()_piece_size()\n o add_similar_torrent()_add_collection()\n * add_files()\n * set_piece_hashes()\n * bitfield\n o bitfield()\n o assign()\n- o get_bit()_operator[]()\n- o clear_bit()_set_bit()\n+ o operator[]()_get_bit()\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 o count()\n o find_first_set()\n o find_last_clear()\n * hasher\n- o hasher()_operator=()\n+ o operator=()_hasher()\n o update()\n o final()\n o reset()\n * hasher256\n o hasher256()_operator=()\n o update()\n o final()\n o reset()\n * torrent_status\n o operator==()\n o enum_state_t\n * announce_infohash\n * announce_endpoint\n * announce_entry\n- o operator=()_~announce_entry()_announce_entry()\n+ o ~announce_entry()_operator=()_announce_entry()\n o enum_tracker_source\n * settings_pack\n- o set_bool()_set_str()_set_int()\n+ o set_str()_set_bool()_set_int()\n o has_val()\n o clear()\n o clear()\n- o get_str()_get_bool()_get_int()\n+ o get_str()_get_int()_get_bool()\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- * name_for_setting()_setting_by_name()\n+ * setting_by_name()_name_for_setting()\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_size()_list_int_value_at()_list_at()_list_string_value_at()\n- o dict_find_string_value()_dict_at_node()_dict_size()\n- dict_find_int_value()_dict_find_string()_dict_find()_dict_find_int\n- ()_dict_find_list()_dict_find_dict()_dict_at()\n+ o data_offset()_data_section()\n+ o list_size()_list_string_value_at()_list_at()_list_int_value_at()\n+ o dict_find_int()_dict_find_string_value()_dict_find_dict()\n+ dict_find_int_value()_dict_find_string()_dict_at()_dict_find_list()\n+ dict_size()_dict_at_node()_dict_find()\n o int_value()\n- o string_ptr()_string_length()_string_value()_string_offset()\n+ o string_length()_string_ptr()_string_offset()_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,16 +613,16 @@\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_torrent_file()_write_torrent_file_buf()\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 * ed25519_key_exchange()\n@@ -630,29 +630,29 @@\n ****** storage_error ******\n Declared in \"libtorrent/error_code.hpp\"\n used by storage to return errors also includes which underlying file the error\n happened on\n struct storage_error\n {\n explicit operator bool () const;\n- file_index_t file () const;\n void file (file_index_t f);\n+ file_index_t file () const;\n \n error_code ec;\n operation_t operation;\n };\n [report_issue]\n ***** bool() *****\n explicit operator bool () const;\n explicitly converts to true if this object represents an error, and false if it\n does not.\n [report_issue]\n ***** file() *****\n-file_index_t file () const;\n void file (file_index_t f);\n+file_index_t file () const;\n set and query the index (in the torrent) of the file this error occurred on.\n This may also have special values defined in torrent_status.\n [report_issue]\n ec\n the error that occurred\n [report_issue]\n operation\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&& sp);\n session_params (settings_pack const& 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 const& 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@@ -1299,29 +1299,29 @@\n session destruction is explicitly initiated, this holder is used to synchronize\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& operator= (session_proxy const&) &;\n- ~session_proxy ();\n- session_proxy ();\n session_proxy (session_proxy&&) noexcept;\n- session_proxy& operator= (session_proxy&&) & noexcept;\n+ ~session_proxy ();\n+ session_proxy& operator= (session_proxy const&) &;\n session_proxy (session_proxy const&);\n+ session_proxy& operator= (session_proxy&&) & noexcept;\n+ session_proxy ();\n };\n [report_issue]\n-***** ~session_proxy() operator=() session_proxy() *****\n-session_proxy& operator= (session_proxy const&) &;\n-~session_proxy ();\n-session_proxy ();\n+***** session_proxy() operator=() ~session_proxy() *****\n session_proxy (session_proxy&&) noexcept;\n-session_proxy& operator= (session_proxy&&) & noexcept;\n+~session_proxy ();\n+session_proxy& operator= (session_proxy const&) &;\n session_proxy (session_proxy const&);\n+session_proxy& operator= (session_proxy&&) & noexcept;\n+session_proxy ();\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@@ -1335,17 +1335,17 @@\n {\n explicit session (session_params const& params);\n session (session_params&& params, session_flags_t flags);\n session ();\n explicit session (session_params&& params);\n session (session_params const& params, session_flags_t flags);\n session (session_params const& params, io_context& ios);\n- session (session_params const& params, io_context& ios, session_flags_t);\n session (session_params&& params, io_context& ios, session_flags_t);\n session (session_params&& 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 explicit session (session_params const& params);\n session (session_params&& params, session_flags_t flags);\n@@ -1359,17 +1359,17 @@\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);\n-session (session_params const& params, io_context& ios, session_flags_t);\n session (session_params&& params, io_context& ios, session_flags_t);\n session (session_params&& 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,78 +1409,78 @@\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&& st);\n void set_dht_state (dht::dht_state const& st);\n torrent_handle find_torrent (sha1_hash const& info_hash) const;\n std::vector get_torrents () const;\n torrent_handle add_torrent (add_torrent_params&& params);\n- void async_add_torrent (add_torrent_params&& params);\n- torrent_handle add_torrent (add_torrent_params&& params, error_code& ec);\n torrent_handle add_torrent (add_torrent_params const& params);\n torrent_handle add_torrent (add_torrent_params const& params, error_code&\n ec);\n void async_add_torrent (add_torrent_params const& params);\n- void pause ();\n- bool is_paused () const;\n+ void async_add_torrent (add_torrent_params&& params);\n+ torrent_handle add_torrent (add_torrent_params&& params, error_code& ec);\n void resume ();\n+ bool is_paused () const;\n+ void pause ();\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 void dht_put_item (std::array key\n , std::function&\n , std::int64_t&, std::string const&)> cb\n , std::string salt = std::string());\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+ void dht_get_peers (sha1_hash const& info_hash);\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::function(\n torrent_handle const&, client_data_t)> ext);\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- bool is_listening () const;\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 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 void remove_torrent (const torrent_handle&, remove_flags_t = {});\n- void apply_settings (settings_pack const&);\n- settings_pack get_settings () const;\n void apply_settings (settings_pack&&);\n- void set_alert_notify (std::function const& fun);\n+ settings_pack get_settings () const;\n+ void apply_settings (settings_pack const&);\n alert* wait_for_alert (time_duration max_wait);\n+ void set_alert_notify (std::function const& fun);\n void pop_alerts (std::vector* alerts);\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@@ -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+***** get_torrent_status() refresh_torrent_status() *****\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 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&& st);\n void set_dht_state (dht::dht_state const& 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-***** get_torrents() find_torrent() *****\n+***** find_torrent() get_torrents() *****\n torrent_handle find_torrent (sha1_hash const& info_hash) const;\n std::vector get_torrents () 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-***** add_torrent() async_add_torrent() *****\n+***** async_add_torrent() add_torrent() *****\n torrent_handle add_torrent (add_torrent_params&& params);\n-void async_add_torrent (add_torrent_params&& params);\n-torrent_handle add_torrent (add_torrent_params&& params, error_code& ec);\n torrent_handle add_torrent (add_torrent_params const& params);\n torrent_handle add_torrent (add_torrent_params const& params, error_code& ec);\n void async_add_torrent (add_torrent_params const& params);\n+void async_add_torrent (add_torrent_params&& 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-void pause ();\n-bool is_paused () const;\n+***** is_paused() pause() resume() *****\n void resume ();\n+bool is_paused () const;\n+void pause ();\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,18 +1702,18 @@\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-void dht_get_peers (sha1_hash const& info_hash);\n+***** dht_get_peers() dht_announce() *****\n void dht_announce (sha1_hash const& info_hash, int port = 0, dht::\n announce_flags_t flags = {});\n+void dht_get_peers (sha1_hash const& info_hash);\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 info-hash, advertising the specified port. If the port is left at its default,\n 0, the port will be implied by the DHT message's source port (which may improve\n connectivity through a NAT).\n@@ -1787,25 +1787,25 @@\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-***** is_listening() listen_port() ssl_listen_port() *****\n-bool is_listening () const;\n+***** ssl_listen_port() listen_port() is_listening() *****\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-***** set_peer_class_filter() get_peer_class_filter() *****\n+***** get_peer_class_filter() set_peer_class_filter() *****\n void set_peer_class_filter (ip_filter const& f);\n ip_filter get_peer_class_filter () const;\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@@ -1862,15 +1862,15 @@\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-***** get_peer_class() set_peer_class() *****\n+***** set_peer_class() get_peer_class() *****\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 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@@ -1903,24 +1903,24 @@\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-void apply_settings (settings_pack const&);\n-settings_pack get_settings () const;\n void apply_settings (settings_pack&&);\n+settings_pack get_settings () const;\n+void apply_settings (settings_pack 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-***** pop_alerts() set_alert_notify() wait_for_alert() *****\n-void set_alert_notify (std::function const& fun);\n+***** wait_for_alert() pop_alerts() set_alert_notify() *****\n alert* wait_for_alert (time_duration max_wait);\n+void set_alert_notify (std::function const& fun);\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 It is safe to call pop_alerts from multiple different threads, as long as the\n alerts themselves are not accessed once another thread calls pop_alerts. Doing\n@@ -2017,15 +2017,15 @@\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-****** read_session_params() write_session_params_buf() write_session_params()\n+****** write_session_params_buf() read_session_params() write_session_params()\n ******\n Declared in \"libtorrent/session_params.hpp\"\n entry write_session_params (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 std::vector write_session_params_buf (session_params const& sp\n@@ -2117,37 +2117,37 @@\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+ torrent_info (std::string const& filename, load_torrent_limits const& cfg);\n+ torrent_info (bdecode_node const& torrent_file, load_torrent_limits const&\n+cfg);\n+ torrent_info (span buffer, error_code& ec, from_span_t);\n+ torrent_info (std::string const& filename, error_code& ec);\n torrent_info (span buffer, load_torrent_limits const& cfg,\n from_span_t);\n torrent_info (bdecode_node const& torrent_file, error_code& ec);\n- torrent_info (span buffer, error_code& ec, from_span_t);\n- explicit torrent_info (info_hash_t const& info_hash);\n explicit torrent_info (std::string const& filename);\n- torrent_info (char const* buffer, int size);\n torrent_info (char const* buffer, int size, error_code& ec);\n- torrent_info (bdecode_node const& torrent_file, load_torrent_limits const&\n-cfg);\n- explicit torrent_info (span buffer, from_span_t);\n+ torrent_info (char const* buffer, int size);\n+ explicit torrent_info (info_hash_t const& info_hash);\n torrent_info (torrent_info const& t);\n- torrent_info (std::string const& filename, error_code& ec);\n- torrent_info (std::string const& filename, load_torrent_limits const& cfg);\n explicit torrent_info (bdecode_node const& torrent_file);\n+ explicit torrent_info (span buffer, from_span_t);\n ~torrent_info ();\n file_storage const& orig_files () const;\n file_storage const& 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\n , announce_entry::tracker_source source);\n- void clear_trackers ();\n void add_tracker (std::string const& url, int tier = 0);\n std::vector const& trackers () const;\n std::vector collections () const;\n std::vector similar_torrents () const;\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@@ -2157,33 +2157,33 @@\n , std::string const& extern_auth = std::string()\n , web_seed_entry::headers_t const& extra_headers = web_seed_entry::\n headers_t());\n void set_web_seeds (std::vector seeds);\n std::int64_t total_size () const;\n int piece_length () const;\n int num_pieces () const;\n+ piece_index_t last_piece () const;\n index_range piece_range () const;\n piece_index_t end_piece () const;\n- piece_index_t last_piece () const;\n sha1_hash info_hash () const noexcept;\n info_hash_t const& info_hashes () const;\n- bool v2 () const;\n bool v1 () const;\n+ bool v2 () const;\n int num_files () const;\n std::vector map_block (piece_index_t const piece\n , std::int64_t offset, int size) const;\n peer_request map_file (file_index_t const file, std::int64_t offset, int\n size) const;\n string_view ssl_cert () const;\n bool is_valid () const;\n bool priv () const;\n bool is_i2p () const;\n int piece_size (piece_index_t index) const;\n- sha1_hash hash_for_piece (piece_index_t index) const;\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 bool is_loaded () const;\n const std::string& name () const;\n std::time_t creation_date () const;\n const std::string& creator () const;\n const std::string& comment () const;\n std::vector> const& nodes () const;\n void add_node (std::pair const& node);\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+torrent_info (std::string const& filename, load_torrent_limits const& cfg);\n+torrent_info (bdecode_node const& torrent_file, load_torrent_limits const&\n+cfg);\n+torrent_info (span buffer, error_code& ec, from_span_t);\n+torrent_info (std::string const& filename, error_code& ec);\n torrent_info (span buffer, load_torrent_limits const& cfg,\n from_span_t);\n torrent_info (bdecode_node const& torrent_file, error_code& ec);\n-torrent_info (span buffer, error_code& ec, from_span_t);\n-explicit torrent_info (info_hash_t const& info_hash);\n explicit torrent_info (std::string const& filename);\n-torrent_info (char const* buffer, int size);\n torrent_info (char const* buffer, int size, error_code& ec);\n-torrent_info (bdecode_node const& torrent_file, load_torrent_limits const&\n-cfg);\n-explicit torrent_info (span buffer, from_span_t);\n+torrent_info (char const* buffer, int size);\n+explicit torrent_info (info_hash_t const& info_hash);\n torrent_info (torrent_info const& t);\n-torrent_info (std::string const& filename, error_code& ec);\n-torrent_info (std::string const& filename, load_torrent_limits const& cfg);\n explicit torrent_info (bdecode_node const& torrent_file);\n+explicit torrent_info (span buffer, 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-***** orig_files() files() *****\n+***** files() orig_files() *****\n file_storage const& orig_files () const;\n file_storage const& 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,18 +2280,18 @@\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-***** clear_trackers() add_tracker() trackers() *****\n+***** add_tracker() clear_trackers() trackers() *****\n+void clear_trackers ();\n void add_tracker (std::string const& url, int tier\n , announce_entry::tracker_source source);\n-void clear_trackers ();\n void add_tracker (std::string const& url, int tier = 0);\n std::vector const& trackers () const;\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@@ -2304,15 +2304,15 @@\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-***** add_http_seed() set_web_seeds() add_url_seed() web_seeds() *****\n+***** set_web_seeds() add_url_seed() add_http_seed() web_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 std::vector const& web_seeds () const;\n void add_http_seed (std::string const& url\n , std::string const& extern_auth = std::string()\n@@ -2335,42 +2335,42 @@\n ***** total_size() *****\n std::int64_t total_size () const;\n total_size() returns the total number of bytes the torrent-file represents.\n Note that this is the number of pieces times the piece size (modulo the last\n piece possibly being smaller). With pad files, the total size will be larger\n than the sum of all (regular) file sizes.\n [report_issue]\n-***** num_pieces() piece_length() *****\n+***** piece_length() num_pieces() *****\n int piece_length () const;\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-***** piece_range() last_piece() end_piece() *****\n+***** last_piece() end_piece() piece_range() *****\n+piece_index_t last_piece () const;\n index_range piece_range () const;\n piece_index_t end_piece () const;\n-piece_index_t last_piece () 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_hash() info_hashes() *****\n+***** info_hashes() info_hash() *****\n sha1_hash info_hash () const noexcept;\n info_hash_t const& info_hashes () const;\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 ***** v1() v2() *****\n-bool v2 () const;\n bool v1 () const;\n+bool v2 () 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 int num_files () const;\n If you need index-access to files you can use the num_files() along with the\n@@ -2418,17 +2418,17 @@\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-sha1_hash hash_for_piece (piece_index_t index) const;\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 ***** name() *****\n const std::string& name () const;\n@@ -2869,20 +2869,20 @@\n Declared in \"libtorrent/info_hash.hpp\"\n class holding the info-hash of a torrent. It can hold a v1 info-hash (SHA-1) or\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- explicit info_hash_t (sha256_hash h2) noexcept;\n- info_hash_t () noexcept = default;\n explicit info_hash_t (sha1_hash h1) noexcept;\n+ info_hash_t () noexcept = default;\n info_hash_t (sha1_hash h1, sha256_hash h2) noexcept;\n- bool has (protocol_version v) const;\n+ explicit info_hash_t (sha256_hash h2) noexcept;\n bool has_v2 () const;\n+ bool has (protocol_version v) const;\n bool has_v1 () 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@@ -2890,26 +2890,26 @@\n friend std::ostream& operator<< (std::ostream& os, info_hash_t const& ih);\n \n sha1_hash v1;\n sha256_hash v2;\n };\n [report_issue]\n ***** info_hash_t() *****\n-explicit info_hash_t (sha256_hash h2) noexcept;\n-info_hash_t () noexcept = default;\n explicit info_hash_t (sha1_hash h1) noexcept;\n+info_hash_t () noexcept = default;\n info_hash_t (sha1_hash h1, sha256_hash h2) noexcept;\n+explicit info_hash_t (sha256_hash h2) 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() has_v1() has_v2() *****\n-bool has (protocol_version v) const;\n bool has_v2 () const;\n+bool has (protocol_version v) const;\n bool has_v1 () 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@@ -2962,40 +2962,40 @@\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_buffer() load_torrent_parsed() ******\n Declared in \"libtorrent/load_torrent.hpp\"\n-add_torrent_params load_torrent_parsed (\n- bdecode_node const& torrent_file, 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_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+add_torrent_params load_torrent_parsed (\n+ bdecode_node const& torrent_file);\n add_torrent_params load_torrent_file (\n std::string const& filename);\n add_torrent_params load_torrent_buffer (\n span buffer);\n-add_torrent_params load_torrent_parsed (\n- bdecode_node const& torrent_file);\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_handle const& handle);\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 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@@ -3011,17 +3011,17 @@\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+void parse_magnet_uri (string_view uri, add_torrent_params& p, error_code& ec);\n add_torrent_params parse_magnet_uri (string_view uri);\n add_torrent_params parse_magnet_uri (string_view uri, error_code& ec);\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 ****** truncate_files() ******\n@@ -3502,16 +3502,16 @@\n Torrent plugins are associated with a single torrent and have a number of\n functions called at certain events. Many of its functions have the ability to\n change or override the default libtorrent behavior.\n struct torrent_plugin\n {\n virtual std::shared_ptr new_connection (peer_connection_handle\n const&);\n- virtual void on_piece_failed (piece_index_t);\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_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@@ -3532,27 +3532,27 @@\n The peer_connection_handle will be valid as long as the shared_ptr is being\n held by the torrent object. So, it is generally a good idea to not keep a\n shared_ptr to your own peer_plugin. If you want to keep references to it, use\n weak_ptr.\n If this function throws an exception, the connection will be closed.\n [report_issue]\n ***** on_piece_failed() on_piece_pass() *****\n-virtual void on_piece_failed (piece_index_t);\n virtual void on_piece_pass (piece_index_t);\n+virtual void on_piece_failed (piece_index_t);\n These hooks are called when a piece passes the hash check or fails the hash\n check, respectively. The index is the piece index that was downloaded. It is\n possible to access the list of peers that participated in sending the piece\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_resume() on_pause() *****\n+***** on_pause() on_resume() *****\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@@ -3600,51 +3600,51 @@\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_have_all ();\n- virtual bool on_unchoke ();\n- virtual bool on_choke ();\n- virtual bool on_interested ();\n- virtual bool on_request (peer_request const&);\n- virtual bool on_bitfield (bitfield const& /*bitfield*/);\n virtual bool on_not_interested ();\n- virtual bool on_have (piece_index_t);\n+ virtual bool on_have_none ();\n virtual bool on_dont_have (piece_index_t);\n+ virtual bool on_have (piece_index_t);\n virtual bool on_allowed_fast (piece_index_t);\n- virtual bool on_have_none ();\n+ virtual bool on_interested ();\n+ virtual bool on_bitfield (bitfield const& /*bitfield*/);\n+ virtual bool on_choke ();\n+ virtual bool on_request (peer_request const&);\n+ virtual bool on_have_all ();\n+ virtual bool on_unchoke ();\n virtual bool on_piece (peer_request const& /*piece*/\n , span /*buf*/);\n- virtual bool on_cancel (peer_request const&);\n- virtual bool on_reject (peer_request const&);\n virtual bool on_suggest (piece_index_t);\n- virtual void sent_cancel (peer_request const&);\n- virtual void sent_have_all ();\n+ virtual bool on_reject (peer_request const&);\n+ virtual bool on_cancel (peer_request const&);\n virtual void sent_suggest (piece_index_t);\n+ virtual void sent_reject_request (peer_request const&);\n+ virtual void sent_request (peer_request const&);\n+ virtual void sent_have_all ();\n+ virtual void sent_cancel (peer_request const&);\n virtual void sent_choke ();\n virtual void sent_have_none ();\n virtual void sent_allow_fast (piece_index_t);\n- virtual void sent_reject_request (peer_request const&);\n- virtual void sent_request (peer_request const&);\n- virtual void sent_not_interested ();\n virtual void sent_unchoke ();\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_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_failed (piece_index_t);\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 write_request (peer_request const&);\n };\n [report_issue]\n ***** type() *****\n virtual string_view type () const;\n This function is expected to return the name of the plugin.\n@@ -3672,46 +3672,46 @@\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_request() on_choke() on_have_none() on_have_all() on_dont_have()\n-on_have() on_allowed_fast() on_not_interested() on_interested() on_bitfield()\n+***** on_have_all() on_allowed_fast() on_request() on_choke() on_have()\n+on_interested() on_have_none() on_not_interested() on_dont_have() on_bitfield()\n on_unchoke() *****\n-virtual bool on_have_all ();\n-virtual bool on_unchoke ();\n-virtual bool on_choke ();\n-virtual bool on_interested ();\n-virtual bool on_request (peer_request const&);\n-virtual bool on_bitfield (bitfield const& /*bitfield*/);\n virtual bool on_not_interested ();\n-virtual bool on_have (piece_index_t);\n+virtual bool on_have_none ();\n virtual bool on_dont_have (piece_index_t);\n+virtual bool on_have (piece_index_t);\n virtual bool on_allowed_fast (piece_index_t);\n-virtual bool on_have_none ();\n+virtual bool on_interested ();\n+virtual bool on_bitfield (bitfield const& /*bitfield*/);\n+virtual bool on_choke ();\n+virtual bool on_request (peer_request const&);\n+virtual bool on_have_all ();\n+virtual bool on_unchoke ();\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_have() sent_unchoke() sent_piece() sent_not_interested()\n-sent_interested() *****\n-virtual void sent_not_interested ();\n+***** sent_piece() sent_interested() sent_not_interested() sent_unchoke()\n+sent_have() *****\n virtual void sent_unchoke ();\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 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@@ -3737,16 +3737,16 @@\n [report_issue]\n ***** on_unknown_message() *****\n virtual bool on_unknown_message (int /*length*/, int /*msg*/,\n span /*body*/);\n this is not called for web seeds\n [report_issue]\n ***** on_piece_failed() on_piece_pass() *****\n-virtual void on_piece_failed (piece_index_t);\n virtual void on_piece_pass (piece_index_t);\n+virtual void on_piece_failed (piece_index_t);\n called when a piece that this peer participated in either fails or passes the\n hash_check\n [report_issue]\n ***** tick() *****\n virtual void tick ();\n called approximately once every second\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,67 +3784,67 @@\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- void add_extension (std::shared_ptr);\n peer_plugin const* find_plugin (string_view type) const;\n+ void add_extension (std::shared_ptr);\n bool is_seed () const;\n bool upload_only () const;\n- peer_id const& pid () const;\n bool has_piece (piece_index_t i) const;\n+ peer_id const& pid () const;\n bool is_interesting () const;\n bool is_choked () const;\n- bool has_peer_choked () const;\n bool is_peer_interested () const;\n- void maybe_unchoke_this_peer ();\n+ bool has_peer_choked () const;\n void choke_this_peer ();\n+ void maybe_unchoke_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+ tcp::endpoint const& remote () const;\n bool is_outgoing () const;\n+ bool is_disconnecting () 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_disconnecting () const;\n bool on_local_network () const;\n bool ignore_unchoke_slots () 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 time_point time_of_last_unchoke () const;\n std::time_t last_seen_complete () 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 support_extensions () const;\n bool packet_finished () const;\n bool supports_encryption () const;\n- void switch_send_crypto (std::shared_ptr crypto);\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 Declared in \"libtorrent/extensions/ut_pex.hpp\"\n std::shared_ptr create_ut_pex_plugin (torrent_handle const&,\n client_data_t);\n@@ -3905,79 +3905,79 @@\n Declared in \"libtorrent/file_storage.hpp\"\n The file_storage class represents a file list and the piece size. Everything\n necessary to interpret a regular bittorrent storage file structure.\n class file_storage\n {\n bool is_valid () const;\n void reserve (int num_files);\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 (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+ 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_borrow (string_view filename\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 index_range file_range () const noexcept;\n std::int64_t total_size () const;\n- void set_num_pieces (int n);\n int num_pieces () const;\n+ void set_num_pieces (int n);\n piece_index_t end_piece () const;\n piece_index_t last_piece () const;\n index_range piece_range () const noexcept;\n int piece_length () const;\n void set_piece_length (int l);\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- bool pad_file_at (file_index_t index) const;\n sha256_hash root (file_index_t index) const;\n char const* root_ptr (file_index_t const index) const;\n- std::string symlink (file_index_t index) const;\n+ string_view file_name (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- std::int64_t file_size (file_index_t index) const;\n- string_view file_name (file_index_t index) const;\n+ std::string symlink (file_index_t index) const;\n+ sha1_hash hash (file_index_t index) const;\n std::time_t mtime (file_index_t index) const;\n+ std::int64_t file_offset (file_index_t index) const;\n+ bool pad_file_at (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_num_blocks (file_index_t index) const;\n- int file_num_pieces (file_index_t index) 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- 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+ file_index_t file_index_at_offset (std::int64_t offset) const;\n file_index_t file_index_for_root (sha256_hash const& root_hash) const;\n piece_index_t piece_index_at_file (file_index_t f) const;\n void sanitize_symlinks ();\n bool v2 () const;\n \n static constexpr file_flags_t flag_pad_file = 0_bit;\n static constexpr file_flags_t flag_hidden = 1_bit;\n@@ -3994,28 +3994,28 @@\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_borrow() add_file() *****\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 (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+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_borrow (string_view filename\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@@ -4088,17 +4088,17 @@\n range-for loop. Where the values are the indices of all files in the\n file_storage.\n [report_issue]\n ***** total_size() *****\n std::int64_t total_size () const;\n returns the total number of bytes all the files in this torrent spans\n [report_issue]\n-***** set_num_pieces() num_pieces() *****\n-void set_num_pieces (int n);\n+***** num_pieces() set_num_pieces() *****\n int num_pieces () const;\n+void set_num_pieces (int n);\n set and get the number of pieces in the torrent\n [report_issue]\n ***** end_piece() *****\n piece_index_t end_piece () const;\n returns the index of the one-past-end piece in the file storage\n [report_issue]\n ***** last_piece() *****\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-***** set_piece_length() piece_length() *****\n+***** piece_length() set_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,41 +4131,41 @@\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-***** name() set_name() *****\n+***** set_name() 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_offset() hash() symlink() root() pad_file_at() file_path() file_size\n-() mtime() file_name() root_ptr() *****\n-sha1_hash hash (file_index_t index) const;\n-bool pad_file_at (file_index_t index) const;\n+***** file_offset() file_path() pad_file_at() file_name() symlink() file_size()\n+mtime() root() root_ptr() hash() *****\n sha256_hash root (file_index_t index) const;\n char const* root_ptr (file_index_t const index) const;\n-std::string symlink (file_index_t index) const;\n+string_view file_name (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-std::int64_t file_size (file_index_t index) const;\n-string_view file_name (file_index_t index) const;\n+std::string symlink (file_index_t index) const;\n+sha1_hash hash (file_index_t index) const;\n std::time_t mtime (file_index_t index) const;\n+std::int64_t file_offset (file_index_t index) const;\n+bool pad_file_at (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 SHA-256 merkle tree root hash for the specified file. The pointer points into\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_blocks() file_piece_range() file_num_pieces() *****\n+***** file_num_blocks() file_num_pieces() file_piece_range() *****\n+int file_num_pieces (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 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_piece_node() file_first_block_node() *****\n+***** file_first_block_node() file_first_piece_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,17 +4214,17 @@\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_piece() file_index_at_offset() *****\n-file_index_t file_index_at_offset (std::int64_t offset) const;\n+***** file_index_at_offset() file_index_at_piece() *****\n file_index_t file_index_at_piece (piece_index_t piece) const;\n+file_index_t file_index_at_offset (std::int64_t offset) 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 file with the root hash, file_index_t{-1} is returned\n [report_issue]\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 explicit operator T () const;\n T* get () const;\n- client_data_t& operator= (void const*) = delete;\n+ client_data_t& operator= (void*) = delete;\n operator void const* () const = delete;\n operator void* () const = delete;\n- client_data_t& operator= (void*) = delete;\n+ client_data_t& 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-client_data_t& operator= (void const*) = delete;\n+***** void*() operator=() const*() *****\n+client_data_t& operator= (void*) = delete;\n operator void const* () const = delete;\n operator void* () const = delete;\n-client_data_t& operator= (void*) = delete;\n+client_data_t& 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@@ -4686,16 +4686,16 @@\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 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+ void disallow (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@@ -4709,17 +4709,17 @@\n [report_issue]\n ***** remove() add() *****\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 add() and remove() adds and removes a peer class to be added to new peers based\n on socket type.\n [report_issue]\n-***** allow() disallow() *****\n-void disallow (socket_type_t const st, peer_class_t const peer_class);\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 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@@ -4757,15 +4757,15 @@\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-***** peer() set_peer() *****\n+***** set_peer() 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@@ -4864,102 +4864,102 @@\n 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 std::vector get_download_queue () const;\n void get_download_queue (std::vector& queue) const;\n- void clear_piece_deadlines () const;\n- void reset_piece_deadline (piece_index_t index) const;\n void set_piece_deadline (piece_index_t index, int deadline, deadline_flags_t\n flags = {}) const;\n- void file_progress (std::vector& progress,\n-file_progress_flags_t flags = {}) const;\n+ void reset_piece_deadline (piece_index_t index) const;\n+ void clear_piece_deadlines () const;\n std::vector file_progress (file_progress_flags_t flags = {})\n const;\n+ void file_progress (std::vector& progress,\n+file_progress_flags_t flags = {}) 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- 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- void remove_http_seed (std::string const& url) const;\n+ std::set url_seeds () const;\n std::set http_seeds () const;\n void add_http_seed (std::string const& url) const;\n+ void remove_http_seed (std::string const& url) 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 pause (pause_flags_t flags = {}) const;\n void resume () const;\n+ void pause (pause_flags_t flags = {}) const;\n void set_flags (torrent_flags_t flags, torrent_flags_t mask) const;\n- torrent_flags_t flags () const;\n- void set_flags (torrent_flags_t flags) const;\n void unset_flags (torrent_flags_t flags) const;\n+ void set_flags (torrent_flags_t flags) const;\n+ 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- queue_position_t queue_position () const;\n void queue_position_down () const;\n+ void queue_position_bottom () const;\n void queue_position_top () const;\n void queue_position_up () const;\n- void queue_position_bottom () const;\n+ queue_position_t queue_position () 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::vector> piece_layers () const;\n void piece_availability (std::vector& avail) const;\n std::vector get_piece_priorities () const;\n void piece_priority (piece_index_t index, download_priority_t priority)\n const;\n void prioritize_pieces (std::vector> const& pieces) const;\n- download_priority_t piece_priority (piece_index_t index) const;\n void prioritize_pieces (std::vector const& pieces)\n const;\n- void file_priority (file_index_t index, download_priority_t priority) const;\n+ download_priority_t piece_priority (piece_index_t index) 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+ std::vector get_file_priorities () const;\n+ void file_priority (file_index_t index, download_priority_t priority) const;\n void force_reannounce (int seconds = 0, int idx = -1, reannounce_flags_t =\n {}) const;\n+ void force_lsd_announce () const;\n void force_dht_announce () const;\n void scrape_tracker (int idx = -1) const;\n+ int upload_limit () const;\n void set_download_limit (int limit) const;\n int download_limit () const;\n- int upload_limit () const;\n void set_upload_limit (int 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+ 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- sha1_hash info_hash () const;\n info_hash_t info_hashes () const;\n- bool operator!= (const torrent_handle& h) 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 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@@ -5046,19 +5046,19 @@\n ***** get_download_queue() *****\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() set_piece_deadline() reset_piece_deadline() *****\n-void clear_piece_deadlines () const;\n-void reset_piece_deadline (piece_index_t index) const;\n+***** set_piece_deadline() reset_piece_deadline() clear_piece_deadlines() *****\n void set_piece_deadline (piece_index_t index, int deadline, deadline_flags_t\n flags = {}) 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@@ -5067,18 +5067,18 @@\n deadline is the number of milliseconds until this piece should be completed.\n reset_piece_deadline removes the deadline from the piece. If it hasn't already\n been downloaded, it will no longer be considered a priority.\n clear_piece_deadlines() removes deadlines on all pieces in the torrent. As if\n reset_piece_deadline() was called on all pieces.\n [report_issue]\n ***** file_progress() *****\n-void file_progress (std::vector& progress, file_progress_flags_t\n-flags = {}) const;\n std::vector file_progress (file_progress_flags_t flags = {})\n const;\n+void file_progress (std::vector& progress, file_progress_flags_t\n+flags = {}) const;\n This function fills in the supplied vector, or returns a vector, with the\n number of bytes downloaded of each file in this torrent. The progress values\n are ordered the same as the files in the torrent_info.\n This operation is not very cheap. Its complexity is O(n + mj). Where n is the\n number of files, m is the number of currently downloading pieces and j is the\n number of blocks in a piece.\n The flags parameter can be used to specify the granularity of the file\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() add_tracker() trackers() *****\n-void replace_trackers (std::vector const&) const;\n+***** add_tracker() replace_trackers() trackers() *****\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@@ -5118,29 +5118,29 @@\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 ***** remove_url_seed() add_url_seed() url_seeds() *****\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 url_seeds () 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-***** add_http_seed() http_seeds() remove_http_seed() *****\n-void remove_http_seed (std::string const& url) const;\n+***** http_seeds() add_http_seed() remove_http_seed() *****\n std::set http_seeds () const;\n void add_http_seed (std::string const& url) const;\n+void remove_http_seed (std::string const& url) 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@@ -5171,36 +5171,36 @@\n and false afterward.\n Clients should only use is_valid() to determine if the result of session::\n find_torrent() was successful.\n Unlike other member functions which return a value, is_valid() completes\n immediately, without blocking on a result from the network thread. Also unlike\n other functions, it never throws the system_error exception.\n [report_issue]\n-***** resume() pause() *****\n-void pause (pause_flags_t flags = {}) const;\n+***** pause() resume() *****\n void resume () const;\n+void pause (pause_flags_t flags = {}) const;\n pause(), and resume() will disconnect all peers and reconnect all peers\n respectively. When a torrent is paused, it will however remember all share\n ratios to all peers and remember all potential (not connected) peers. Torrents\n may be paused automatically if there is a file error (e.g. disk full) or\n something similar. See file_error_alert.\n For possible values of the flags parameter, see pause_flags_t.\n To know if a torrent is paused or not, call torrent_handle::flags() and check\n for the torrent_status::paused flag.\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() flags() set_flags() *****\n+***** set_flags() flags() unset_flags() *****\n void set_flags (torrent_flags_t flags, torrent_flags_t mask) const;\n-torrent_flags_t flags () const;\n-void set_flags (torrent_flags_t flags) const;\n void unset_flags (torrent_flags_t flags) const;\n+void set_flags (torrent_flags_t flags) const;\n+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,21 +5320,21 @@\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() queue_position_down() queue_position_top()\n-queue_position_up() queue_position_bottom() *****\n-queue_position_t queue_position () const;\n+***** queue_position_top() queue_position_bottom() queue_position_down()\n+queue_position_up() queue_position() *****\n void queue_position_down () const;\n+void queue_position_bottom () const;\n void queue_position_top () const;\n void queue_position_up () const;\n-void queue_position_bottom () const;\n+queue_position_t queue_position () 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 positions have their positions decreased to fill in the space in the sequence.\n queue_position() returns the torrent's position in the download queue. The\n@@ -5349,21 +5349,21 @@\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-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,15 +5377,15 @@\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+***** torrent_file_with_hashes() torrent_file() *****\n std::shared_ptr torrent_file_with_hashes () const;\n std::shared_ptr torrent_file () 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@@ -5422,21 +5422,21 @@\n Fills the specified std::vector with the availability for each piece in\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-***** prioritize_pieces() get_piece_priorities() piece_priority() *****\n+***** get_piece_priorities() piece_priority() prioritize_pieces() *****\n std::vector get_piece_priorities () const;\n void piece_priority (piece_index_t index, download_priority_t priority) const;\n void prioritize_pieces (std::vector> const& pieces) const;\n-download_priority_t piece_priority (piece_index_t index) const;\n void prioritize_pieces (std::vector const& pieces) const;\n+download_priority_t piece_priority (piece_index_t index) 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 piece with priority 7 will be attempted to be picked before a priority 6 piece\n@@ -5456,19 +5456,19 @@\n where the piece index or priority is out of range, are not allowed.\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-***** prioritize_files() file_priority() get_file_priorities() *****\n-void file_priority (file_index_t index, download_priority_t priority) const;\n+***** get_file_priorities() file_priority() prioritize_files() *****\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+std::vector get_file_priorities () const;\n+void file_priority (file_index_t index, download_priority_t priority) 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,18 +5487,18 @@\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-void force_lsd_announce () const;\n+***** force_reannounce() force_dht_announce() force_lsd_announce() *****\n void force_reannounce (int seconds = 0, int idx = -1, reannounce_flags_t = {})\n const;\n+void force_lsd_announce () const;\n void force_dht_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@@ -5517,19 +5517,19 @@\n A scrape request queries the tracker for statistics such as total number of\n incomplete peers, complete peers, number of downloads etc.\n This request will specifically update the num_complete and num_incomplete\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-***** download_limit() set_download_limit() set_upload_limit() upload_limit()\n+***** upload_limit() set_upload_limit() set_download_limit() download_limit()\n *****\n+int upload_limit () const;\n void set_download_limit (int limit) const;\n int download_limit () const;\n-int upload_limit () const;\n void set_upload_limit (int 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@@ -5563,16 +5563,16 @@\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 ***** set_max_connections() max_connections() *****\n-int max_connections () const;\n void set_max_connections (int max_connections) const;\n+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 connections_limit in settings_pack.\n max_connections() returns the current settings.\n@@ -5622,26 +5622,26 @@\n [report_issue]\n ***** rename_file() *****\n void rename_file (file_index_t index, std::string const& new_name) const;\n Renames the file with the given index asynchronously. The rename operation is\n complete when either a file_renamed_alert or file_rename_failed_alert is\n posted.\n [report_issue]\n-***** info_hash() info_hashes() *****\n-sha1_hash info_hash () const;\n+***** info_hashes() info_hash() *****\n info_hash_t info_hashes () const;\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+***** 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@@ -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@@ -6075,22 +6075,22 @@\n a unique, owning, reference to the storage of a torrent in a disk io subsystem\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 ();\n- storage_holder () = default;\n storage_holder (storage_index_t idx, disk_interface& disk_io);\n+ storage_holder () = default;\n+ ~storage_holder ();\n explicit operator bool () const;\n operator storage_index_t () const;\n void reset ();\n- storage_holder (storage_holder const&) = delete;\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 };\n [report_issue]\n ****** disk_observer ******\n Declared in \"libtorrent/disk_observer.hpp\"\n struct disk_observer\n@@ -6117,18 +6117,18 @@\n Declared in \"libtorrent/disk_buffer_holder.hpp\"\n The disk buffer holder acts like a unique_ptr that frees a disk buffer when\n it's destructed\n If this buffer holder is moved-from, default constructed or reset, data() will\n return nullptr.\n struct disk_buffer_holder\n {\n- disk_buffer_holder (disk_buffer_holder&&) noexcept;\n disk_buffer_holder& operator= (disk_buffer_holder&&) & noexcept;\n- disk_buffer_holder& operator= (disk_buffer_holder const&) = delete;\n+ disk_buffer_holder (disk_buffer_holder&&) noexcept;\n disk_buffer_holder (disk_buffer_holder const&) = delete;\n+ disk_buffer_holder& operator= (disk_buffer_holder const&) = delete;\n disk_buffer_holder (buffer_allocator_interface& alloc\n , char* buf, int sz) noexcept;\n disk_buffer_holder () noexcept = default;\n ~disk_buffer_holder ();\n char* data () const noexcept;\n void reset ();\n void swap (disk_buffer_holder& h) noexcept;\n@@ -6174,18 +6174,18 @@\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_str (int name, std::string 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 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@@ -7096,24 +7096,24 @@\n The storage_moved_alert is generated when all the disk IO has completed and the\n files have been moved, as an effect of a call to torrent_handle::move_storage.\n This is useful to synchronize with the actual disk. The storage_path() member\n return the new path of the storage.\n struct storage_moved_alert final : torrent_alert\n {\n std::string message () const override;\n- char const* old_path () const;\n char const* storage_path () const;\n+ char const* old_path () const;\n \n static constexpr alert_category_t static_category = alert_category::\n storage;\n };\n [report_issue]\n-***** storage_path() old_path() *****\n-char const* old_path () const;\n+***** old_path() storage_path() *****\n char const* storage_path () const;\n+char const* old_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 storage, via torrent_handle::move_storage(), fails.\n struct storage_moved_failed_alert final : torrent_alert\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-***** nodes() num_nodes() *****\n+***** num_nodes() 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@@ -8400,15 +8400,15 @@\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+***** samples() num_samples() *****\n std::vector samples () const;\n int num_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@@ -8455,17 +8455,17 @@\n Declared in \"libtorrent/alert_types.hpp\"\n this alert is posted to indicate to the client that some alerts were dropped.\n Dropped meaning that the alert failed to be delivered to the client. The most\n common cause of such failure is that the internal alert queue grew too big\n (controlled by alert_queue_size).\n struct alerts_dropped_alert final : alert\n {\n+ std::string message () const override;\n static_assert (num_alert_types <= abi_alert_count, \"need to increase bitset.\n This is an ABI break\");\n- std::string message () const override;\n \n static constexpr alert_category_t static_category = alert_category::error;\n std::bitset dropped_alerts;\n };\n [report_issue]\n dropped_alerts\n a bitmask indicating which alerts were dropped. Each bit represents the\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 const* alert_cast (alert const* a);\n template T* alert_cast (alert* a);\n+template T const* alert_cast (alert const* 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@@ -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 ();\n- ip_filter& operator= (ip_filter const&);\n ip_filter ();\n- ip_filter (ip_filter&&);\n- ip_filter& operator= (ip_filter&&);\n+ ip_filter& operator= (ip_filter const&);\n ip_filter (ip_filter const&);\n+ ip_filter& operator= (ip_filter&&);\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@@ -8850,20 +8850,20 @@\n ****** port_filter ******\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& operator= (port_filter const&);\n+ port_filter (port_filter&&);\n+ port_filter (port_filter const&);\n ~port_filter ();\n- port_filter ();\n port_filter& operator= (port_filter&&);\n- port_filter (port_filter const&);\n- port_filter (port_filter&&);\n- port_filter& operator= (port_filter const&);\n+ 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@@ -8913,38 +8913,38 @@\n entry (preformatted_type);\n entry (dictionary_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= (entry const&) &;\n- entry& operator= (dictionary_type) &;\n- entry& operator= (bdecode_node const&) &;\n- entry& operator= (list_type) &;\n- entry& operator= (preformatted_type) &;\n entry& operator= (entry&&) & noexcept;\n+ entry& operator= (bdecode_node const&) &;\n entry& operator= (integer_type) &;\n+ entry& operator= (preformatted_type) &;\n entry& operator= (span) &;\n+ entry& operator= (dictionary_type) &;\n+ entry& operator= (list_type) &;\n+ entry& operator= (entry const&) &;\n entry& operator= (U v) &;\n- dictionary_type const& dict () const;\n+ preformatted_type const& preformatted () const;\n+ list_type const& list () const;\n integer_type const& integer () const;\n- string_type& string ();\n- list_type& list ();\n preformatted_type& preformatted ();\n- string_type const& string () const;\n dictionary_type& dict ();\n+ dictionary_type const& dict () const;\n+ string_type const& string () const;\n integer_type& integer ();\n- preformatted_type const& preformatted () const;\n- list_type const& list () const;\n+ string_type& string ();\n+ list_type& list ();\n void swap (entry& e);\n entry const& operator[] (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+ entry* find_key (string_view key);\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@@ -8972,35 +8972,35 @@\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= (entry const&) &;\n-entry& operator= (dictionary_type) &;\n-entry& operator= (bdecode_node const&) &;\n-entry& operator= (list_type) &;\n-entry& operator= (preformatted_type) &;\n entry& operator= (entry&&) & noexcept;\n+entry& operator= (bdecode_node const&) &;\n entry& operator= (integer_type) &;\n+entry& operator= (preformatted_type) &;\n entry& operator= (span) &;\n+entry& operator= (dictionary_type) &;\n+entry& operator= (list_type) &;\n+entry& operator= (entry const&) &;\n copies the structure of the right hand side into this entry.\n [report_issue]\n-***** list() string() integer() dict() preformatted() *****\n-dictionary_type const& dict () const;\n+***** integer() preformatted() dict() list() string() *****\n+preformatted_type const& preformatted () const;\n+list_type const& list () const;\n integer_type const& integer () const;\n-string_type& string ();\n-list_type& list ();\n preformatted_type& preformatted ();\n-string_type const& string () const;\n dictionary_type& dict ();\n+dictionary_type const& dict () const;\n+string_type const& string () const;\n integer_type& integer ();\n-preformatted_type const& preformatted () const;\n-list_type const& list () const;\n+string_type& string ();\n+list_type& list ();\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@@ -9042,16 +9042,16 @@\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* find_key (string_view key);\n entry const* find_key (string_view key) const;\n+entry* find_key (string_view key);\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@@ -9130,43 +9130,43 @@\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- std::vector generate_buf () const;\n entry generate () const;\n+ std::vector generate_buf () 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_node (std::pair node);\n void add_tracker (string_view url, int tier = 0);\n void set_root_cert (string_view cert);\n- void set_priv (bool p);\n bool priv () const;\n- bool is_v2_only () const;\n+ void set_priv (bool p);\n bool is_v1_only () const;\n+ bool is_v2_only () const;\n int num_pieces () const;\n piece_index_t end_piece () const;\n index_range piece_range () const noexcept;\n file_index_t end_file () const;\n index_range file_range () const noexcept;\n index_range file_piece_range (file_index_t f);\n std::int64_t total_size () const;\n int piece_length () const;\n int piece_size (piece_index_t i) const;\n- void add_similar_torrent (sha1_hash ih);\n void add_collection (string_view c);\n+ void add_similar_torrent (sha1_hash ih);\n \n static constexpr create_flags_t modification_time = 2_bit;\n static constexpr create_flags_t symlinks = 3_bit;\n static constexpr create_flags_t v2_only = 5_bit;\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@@ -9192,16 +9192,16 @@\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_buf() generate() *****\n-std::vector generate_buf () const;\n entry generate () const;\n+std::vector generate_buf () 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,15 +9258,15 @@\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_http_seed() add_url_seed() *****\n+***** add_url_seed() add_http_seed() *****\n void add_http_seed (string_view url);\n void add_url_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@@ -9295,17 +9295,17 @@\n makes the torrent an SSL torrent. An SSL torrent requires that each peer has a\n valid certificate signed by this root certificate. For SSL torrents, all peers\n are connecting over SSL connections. For more information, see the section on\n ssl_torrents.\n The string is not the path to the cert, it's the actual content of the\n certificate.\n [report_issue]\n-***** priv() set_priv() *****\n-void set_priv (bool p);\n+***** set_priv() priv() *****\n bool priv () const;\n+void set_priv (bool p);\n Sets and queries the private flag of the torrent. Torrents with the private\n flag set ask the client to not use any other sources than the tracker for\n peers, and to not use DHT to advertise itself publicly, only the tracker.\n [report_issue]\n ***** num_pieces() *****\n int num_pieces () const;\n returns the number of pieces in the associated file_storage object.\n@@ -9323,24 +9323,24 @@\n for v2 and hybrid torrents only, the pieces in the specified file, specified as\n delta from the first piece in the file. i.e. the first index is 0.\n [report_issue]\n ***** total_size() *****\n std::int64_t total_size () const;\n the total number of bytes of all files and pad files\n [report_issue]\n-***** piece_size() piece_length() *****\n+***** piece_length() piece_size() *****\n int piece_length () const;\n int piece_size (piece_index_t i) const;\n piece_length() returns the piece size of all pieces but the last one.\n piece_size() returns the size of the specified piece. these functions are just\n forwarding to the associated file_storage.\n [report_issue]\n ***** add_similar_torrent() add_collection() *****\n-void add_similar_torrent (sha1_hash ih);\n void add_collection (string_view c);\n+void add_similar_torrent (sha1_hash ih);\n Add similar torrents (by info-hash) or collections of similar torrents. Similar\n torrents are expected to share some files with this torrent. Torrents sharing a\n collection name with this torrent are also expected to share files with this\n torrent. A torrent may have more than one collection and more than one similar\n torrents. For more information, see BEP_38.\n [report_issue]\n modification_time\n@@ -9390,17 +9390,17 @@\n behavior deviates from the specification but was the way libtorrent\n created torrents in version up to and including 2.0.7. This flag is here\n for backwards compatibility.\n [report_issue]\n ****** add_files() ******\n Declared in \"libtorrent/create_torrent.hpp\"\n void add_files (file_storage& fs, std::string const& file\n- , create_flags_t flags = {});\n-void add_files (file_storage& fs, std::string const& file\n , std::function p, create_flags_t flags = {});\n+void add_files (file_storage& fs, std::string const& file\n+ , create_flags_t flags = {});\n Adds the file specified by path to the file_storage object. In case path refers\n to a directory, files will be added recursively from the directory.\n If specified, the predicate p is called once for every file and directory that\n is encountered. Files for which p returns true are added, and directories for\n which p returns true are traversed. p must have the following signature:\n bool Pred(std::string const& p);\n The path that is passed in to the predicate is the full path of the file or\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- , std::function const& f);\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+inline void set_piece_hashes (create_torrent& t, std::string const& p);\n void set_piece_hashes (create_torrent& t, std::string const& p\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, disk_io_constructor_type disk_io\n- , std::function const& f, error_code& ec);\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+ , settings_interface const& settings\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 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@@ -9441,63 +9441,63 @@\n [report_issue]\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 () noexcept = default;\n bitfield (int bits, bool val);\n- bitfield (bitfield&& rhs) noexcept = default;\n- explicit bitfield (int bits);\n bitfield (char const* b, int bits);\n+ explicit bitfield (int bits);\n+ bitfield (bitfield&& rhs) noexcept = default;\n+ bitfield () noexcept = default;\n bitfield (bitfield const& rhs);\n void assign (char const* b, int const bits);\n bool operator[] (int index) const noexcept;\n bool get_bit (int index) const noexcept;\n void clear_bit (int index) noexcept;\n void set_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* data () noexcept;\n char const* data () const noexcept;\n+ char* data () noexcept;\n void swap (bitfield& rhs) noexcept;\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 () noexcept = default;\n bitfield (int bits, bool val);\n-bitfield (bitfield&& rhs) noexcept = default;\n-explicit bitfield (int bits);\n bitfield (char const* b, int bits);\n+explicit bitfield (int bits);\n+bitfield (bitfield&& rhs) noexcept = default;\n+bitfield () noexcept = default;\n bitfield (bitfield const& rhs);\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-***** get_bit() operator[]() *****\n+***** operator[]() get_bit() *****\n bool operator[] (int index) const noexcept;\n bool get_bit (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+***** set_bit() clear_bit() *****\n void clear_bit (int index) noexcept;\n void set_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@@ -9516,16 +9516,16 @@\n bitfield.\n [report_issue]\n ***** empty() *****\n bool empty () const noexcept;\n returns true if the bitfield has zero size.\n [report_issue]\n ***** data() *****\n-char* data () noexcept;\n char const* data () const noexcept;\n+char* data () noexcept;\n returns a pointer to the internal buffer of the bitfield, or nullptr if it's\n empty.\n [report_issue]\n ***** swap() *****\n void swap (bitfield& rhs) noexcept;\n swaps the bit-fields two variables refer to\n [report_issue]\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 (char const* data, int len);\n- hasher& operator= (hasher const&) &;\n hasher (hasher const&);\n- hasher& update (span data);\n+ explicit hasher (span data);\n+ hasher& operator= (hasher const&) &;\n hasher& update (char const* data, int len);\n+ hasher& update (span data);\n sha1_hash final ();\n void reset ();\n };\n [report_issue]\n-***** hasher() operator=() *****\n-explicit hasher (span data);\n+***** operator=() hasher() *****\n hasher (char const* data, int len);\n-hasher& operator= (hasher const&) &;\n hasher (hasher const&);\n+explicit hasher (span data);\n+hasher& operator= (hasher const&) &;\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 (span data);\n hasher& update (char const* data, int len);\n+hasher& update (span data);\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 (char const* data, int len);\n explicit hasher256 (span data);\n hasher256& operator= (hasher256 const&) &;\n hasher256 (hasher256 const&);\n- hasher256 (char const* data, int len);\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 ***** hasher256() operator=() *****\n+hasher256 (char const* data, int len);\n explicit hasher256 (span data);\n hasher256& operator= (hasher256 const&) &;\n hasher256 (hasher256 const&);\n-hasher256 (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-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,18 +10176,18 @@\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- explicit announce_entry (string_view u);\n announce_entry (announce_entry const&);\n ~announce_entry ();\n announce_entry ();\n+ explicit announce_entry (string_view u);\n announce_entry& operator= (announce_entry const&) &;\n \n enum tracker_source\n {\n source_torrent,\n source_client,\n source_magnet_link,\n@@ -10199,19 +10199,19 @@\n std::vector endpoints;\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-explicit announce_entry (string_view u);\n+***** ~announce_entry() operator=() announce_entry() *****\n announce_entry (announce_entry const&);\n ~announce_entry ();\n announce_entry ();\n+explicit announce_entry (string_view u);\n announce_entry& operator= (announce_entry const&) &;\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@@ -11641,18 +11641,18 @@\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, int val) override;\n- void set_int (int name, flags::bitfield_flag const val);\n void set_bool (int name, bool val) override;\n- void set_str (int name, std::string val) override;\n+ void set_int (int name, flags::bitfield_flag const val);\n bool has_val (int name) const override;\n void clear ();\n void clear (int name);\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@@ -11729,19 +11729,19 @@\n socks5_pw,\n http,\n http_pw,\n i2p_proxy,\n };\n };\n [report_issue]\n-***** set_bool() set_str() set_int() *****\n+***** set_str() set_bool() set_int() *****\n+void set_str (int name, std::string val) override;\n void set_int (int name, int val) override;\n-void set_int (int name, flags::bitfield_flag const val);\n void set_bool (int name, bool val) override;\n-void set_str (int name, std::string val) override;\n+void set_int (int name, flags::bitfield_flag const val);\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,15 +11752,15 @@\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_str() get_bool() get_int() *****\n+***** get_str() get_int() get_bool() *****\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@@ -11918,16 +11918,16 @@\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 Declared in \"libtorrent/session.hpp\"\n-settings_pack high_performance_seed ();\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 min_memory_usage returns settings that will use the minimal amount of RAM, at\n the potential expense of upload and download performance. It adjusts the socket\n buffer sizes, disables the disk cache, lowers the send buffer watermarks so\n@@ -11940,15 +11940,15 @@\n This configuration is intended to be the starting point for embedded devices.\n It will significantly reduce memory usage.\n high_performance_seed returns settings optimized for a seed box, serving many\n peers and that doesn't do any downloading. It has a 128 MB disk cache and has a\n limit of 400 files in its file pool. It support fast upload rates by allowing\n large send buffers.\n [report_issue]\n-****** name_for_setting() setting_by_name() ******\n+****** setting_by_name() name_for_setting() ******\n Declared in \"libtorrent/settings_pack.hpp\"\n int setting_by_name (string_view name);\n char const* name_for_setting (int s);\n converts a setting integer (from the enums string_types, int_types or\n bool_types) to a string, and vice versa.\n [report_issue]\n ****** default_settings() ******\n@@ -11976,31 +11976,31 @@\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 string_view list_string_value_at (int i\n , string_view default_val = string_view()) const;\n int list_size () const;\n+ int dict_size () const;\n std::pair dict_at_node (int i) const;\n- bdecode_node dict_find_string (string_view key) 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_int (string_view key) const;\n- bdecode_node dict_find (string_view key) const;\n- int dict_size () const;\n std::pair dict_at (int i) const;\n- bdecode_node dict_find_dict (string_view key) const;\n- bdecode_node dict_find_list (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 (string_view key) const;\n+ bdecode_node dict_find_list (string_view key) 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 (string_view key) const;\n+ bdecode_node dict_find_dict (string_view key) const;\n std::int64_t int_value () const;\n- char const* string_ptr () const;\n+ std::ptrdiff_t string_offset () const;\n int string_length () const;\n string_view string_value () const;\n- std::ptrdiff_t string_offset () 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 enum type_t\n@@ -12034,50 +12034,50 @@\n returns true if type() != none_t.\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+***** data_offset() data_section() *****\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_size() list_int_value_at() list_at() list_string_value_at() *****\n+***** list_size() list_string_value_at() list_at() list_int_value_at() *****\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 string_view list_string_value_at (int i\n , string_view default_val = string_view()) const;\n int list_size () 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_string_value() dict_at_node() dict_size() dict_find_int_value()\n-dict_find_string() dict_find() dict_find_int() dict_find_list() dict_find_dict\n-() dict_at() *****\n+***** dict_find_int() dict_find_string_value() dict_find_dict()\n+dict_find_int_value() dict_find_string() dict_at() dict_find_list() dict_size()\n+dict_at_node() dict_find() *****\n+int dict_size () const;\n std::pair dict_at_node (int i) const;\n-bdecode_node dict_find_string (string_view key) 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_int (string_view key) const;\n-bdecode_node dict_find (string_view key) const;\n-int dict_size () const;\n std::pair dict_at (int i) const;\n-bdecode_node dict_find_dict (string_view key) const;\n-bdecode_node dict_find_list (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 (string_view key) const;\n+bdecode_node dict_find_list (string_view key) 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 (string_view key) const;\n+bdecode_node dict_find_dict (string_view key) 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,19 +12089,19 @@\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_ptr() string_length() string_value() string_offset() *****\n-char const* string_ptr () const;\n+***** string_length() string_ptr() string_offset() string_value() *****\n+std::ptrdiff_t string_offset () const;\n int string_length () const;\n string_view string_value () const;\n-std::ptrdiff_t string_offset () 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 void clear ();\n@@ -12146,19 +12146,19 @@\n , bool single_line = false, int indent = 0);\n print the bencoded structure in a human-readable format to a string that's\n returned.\n [report_issue]\n ****** bdecode() ******\n Declared in \"libtorrent/bdecode.hpp\"\n bdecode_node bdecode (span buffer\n+ , int depth_limit = 100, int token_limit = 2000000);\n+int bdecode (char const* start, char const* end, bdecode_node& ret\n , error_code& ec, int* error_pos = nullptr, int depth_limit = 100\n , int token_limit = 2000000);\n bdecode_node bdecode (span buffer\n- , int depth_limit = 100, int token_limit = 2000000);\n-int bdecode (char const* start, char const* end, bdecode_node& ret\n , error_code& ec, int* error_pos = nullptr, int depth_limit = 100\n , int token_limit = 2000000);\n This function decodes/parses bdecoded data (for example a .torrent file). The\n data structure is returned in the ret argument. the buffer to parse is\n specified by the start of the buffer as well as the end, i.e. one byte past the\n end. If the buffer fails to parse, the function returns a non-zero value and\n fills in ec with the error code. The optional argument error_pos, if set to\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() write_torrent_file_buf() ******\n+****** write_torrent_file_buf() write_torrent_file() ******\n Declared in \"libtorrent/write_resume_data.hpp\"\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+entry write_torrent_file (add_torrent_params const& atp);\n+std::vector write_torrent_file_buf (add_torrent_params const& atp\n+ , write_torrent_flags_t 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"}]}]}]}]}]}