mirror of
https://github.com/rakshasa/rtorrent.git
synced 2026-10-04 21:29:21 +00:00
Added a new callback mechanism and use it for trackers.
This commit is contained in:
+1
-1
@@ -16,7 +16,7 @@ AC_DEFINE([API_VERSION], [20], [api version])
|
|||||||
# Filter out unwanted flags added by autoconf on some systems, e.g. MacOS.
|
# Filter out unwanted flags added by autoconf on some systems, e.g. MacOS.
|
||||||
TORRENT_REMOVE_UNWANTED(CXX, $CXX, -std=c++11 -std=gnu++11)
|
TORRENT_REMOVE_UNWANTED(CXX, $CXX, -std=c++11 -std=gnu++11)
|
||||||
|
|
||||||
AX_CXX_COMPILE_STDCXX([17], [noext], [mandatory])
|
AX_CXX_COMPILE_STDCXX(20, noext, mandatory)
|
||||||
|
|
||||||
AC_SYS_LARGEFILE
|
AC_SYS_LARGEFILE
|
||||||
|
|
||||||
|
|||||||
@@ -10,8 +10,8 @@
|
|||||||
#
|
#
|
||||||
# Check for baseline language coverage in the compiler for the specified
|
# Check for baseline language coverage in the compiler for the specified
|
||||||
# version of the C++ standard. If necessary, add switches to CXX and
|
# version of the C++ standard. If necessary, add switches to CXX and
|
||||||
# CXXCPP to enable support. VERSION may be '11' (for the C++11 standard)
|
# CXXCPP to enable support. VERSION may be '11', '14', '17', '20', or
|
||||||
# or '14' (for the C++14 standard).
|
# '23' for the respective C++ standard version.
|
||||||
#
|
#
|
||||||
# The second argument, if specified, indicates whether you insist on an
|
# The second argument, if specified, indicates whether you insist on an
|
||||||
# extended mode (e.g. -std=gnu++11) or a strict conformance mode (e.g.
|
# extended mode (e.g. -std=gnu++11) or a strict conformance mode (e.g.
|
||||||
@@ -36,13 +36,15 @@
|
|||||||
# Copyright (c) 2016, 2018 Krzesimir Nowak <qdlacz@gmail.com>
|
# Copyright (c) 2016, 2018 Krzesimir Nowak <qdlacz@gmail.com>
|
||||||
# Copyright (c) 2019 Enji Cooper <yaneurabeya@gmail.com>
|
# Copyright (c) 2019 Enji Cooper <yaneurabeya@gmail.com>
|
||||||
# Copyright (c) 2020 Jason Merrill <jason@redhat.com>
|
# Copyright (c) 2020 Jason Merrill <jason@redhat.com>
|
||||||
|
# Copyright (c) 2021, 2024 Jörn Heusipp <osmanx@problemloesungsmaschine.de>
|
||||||
|
# Copyright (c) 2015, 2022, 2023, 2024 Olly Betts
|
||||||
#
|
#
|
||||||
# Copying and distribution of this file, with or without modification, are
|
# Copying and distribution of this file, with or without modification, are
|
||||||
# permitted in any medium without royalty provided the copyright notice
|
# permitted in any medium without royalty provided the copyright notice
|
||||||
# and this notice are preserved. This file is offered as-is, without any
|
# and this notice are preserved. This file is offered as-is, without any
|
||||||
# warranty.
|
# warranty.
|
||||||
|
|
||||||
#serial 12
|
#serial 25
|
||||||
|
|
||||||
dnl This macro is based on the code from the AX_CXX_COMPILE_STDCXX_11 macro
|
dnl This macro is based on the code from the AX_CXX_COMPILE_STDCXX_11 macro
|
||||||
dnl (serial version number 13).
|
dnl (serial version number 13).
|
||||||
@@ -51,6 +53,8 @@ AC_DEFUN([AX_CXX_COMPILE_STDCXX], [dnl
|
|||||||
m4_if([$1], [11], [ax_cxx_compile_alternatives="11 0x"],
|
m4_if([$1], [11], [ax_cxx_compile_alternatives="11 0x"],
|
||||||
[$1], [14], [ax_cxx_compile_alternatives="14 1y"],
|
[$1], [14], [ax_cxx_compile_alternatives="14 1y"],
|
||||||
[$1], [17], [ax_cxx_compile_alternatives="17 1z"],
|
[$1], [17], [ax_cxx_compile_alternatives="17 1z"],
|
||||||
|
[$1], [20], [ax_cxx_compile_alternatives="20"],
|
||||||
|
[$1], [23], [ax_cxx_compile_alternatives="23"],
|
||||||
[m4_fatal([invalid first argument `$1' to AX_CXX_COMPILE_STDCXX])])dnl
|
[m4_fatal([invalid first argument `$1' to AX_CXX_COMPILE_STDCXX])])dnl
|
||||||
m4_if([$2], [], [],
|
m4_if([$2], [], [],
|
||||||
[$2], [ext], [],
|
[$2], [ext], [],
|
||||||
@@ -102,9 +106,18 @@ AC_DEFUN([AX_CXX_COMPILE_STDCXX], [dnl
|
|||||||
dnl HP's aCC needs +std=c++11 according to:
|
dnl HP's aCC needs +std=c++11 according to:
|
||||||
dnl http://h21007.www2.hp.com/portal/download/files/unprot/aCxx/PDF_Release_Notes/769149-001.pdf
|
dnl http://h21007.www2.hp.com/portal/download/files/unprot/aCxx/PDF_Release_Notes/769149-001.pdf
|
||||||
dnl Cray's crayCC needs "-h std=c++11"
|
dnl Cray's crayCC needs "-h std=c++11"
|
||||||
|
dnl MSVC needs -std:c++NN for C++17 and later (default is C++14)
|
||||||
for alternative in ${ax_cxx_compile_alternatives}; do
|
for alternative in ${ax_cxx_compile_alternatives}; do
|
||||||
for switch in -std=c++${alternative} +std=c++${alternative} "-h std=c++${alternative}"; do
|
for switch in -std=c++${alternative} +std=c++${alternative} "-h std=c++${alternative}" MSVC; do
|
||||||
cachevar=AS_TR_SH([ax_cv_cxx_compile_cxx$1_$switch])
|
if test x"$switch" = xMSVC; then
|
||||||
|
dnl AS_TR_SH maps both `:` and `=` to `_` so -std:c++17 would collide
|
||||||
|
dnl with -std=c++17. We suffix the cache variable name with _MSVC to
|
||||||
|
dnl avoid this.
|
||||||
|
switch=-std:c++${alternative}
|
||||||
|
cachevar=AS_TR_SH([ax_cv_cxx_compile_cxx$1_${switch}_MSVC])
|
||||||
|
else
|
||||||
|
cachevar=AS_TR_SH([ax_cv_cxx_compile_cxx$1_$switch])
|
||||||
|
fi
|
||||||
AC_CACHE_CHECK(whether $CXX supports C++$1 features with $switch,
|
AC_CACHE_CHECK(whether $CXX supports C++$1 features with $switch,
|
||||||
$cachevar,
|
$cachevar,
|
||||||
[ac_save_CXX="$CXX"
|
[ac_save_CXX="$CXX"
|
||||||
@@ -148,23 +161,44 @@ AC_DEFUN([AX_CXX_COMPILE_STDCXX], [dnl
|
|||||||
dnl Test body for checking C++11 support
|
dnl Test body for checking C++11 support
|
||||||
|
|
||||||
m4_define([_AX_CXX_COMPILE_STDCXX_testbody_11],
|
m4_define([_AX_CXX_COMPILE_STDCXX_testbody_11],
|
||||||
_AX_CXX_COMPILE_STDCXX_testbody_new_in_11
|
[_AX_CXX_COMPILE_STDCXX_testbody_new_in_11]
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
dnl Test body for checking C++14 support
|
dnl Test body for checking C++14 support
|
||||||
|
|
||||||
m4_define([_AX_CXX_COMPILE_STDCXX_testbody_14],
|
m4_define([_AX_CXX_COMPILE_STDCXX_testbody_14],
|
||||||
_AX_CXX_COMPILE_STDCXX_testbody_new_in_11
|
[_AX_CXX_COMPILE_STDCXX_testbody_new_in_11
|
||||||
_AX_CXX_COMPILE_STDCXX_testbody_new_in_14
|
_AX_CXX_COMPILE_STDCXX_testbody_new_in_14]
|
||||||
)
|
)
|
||||||
|
|
||||||
|
dnl Test body for checking C++17 support
|
||||||
|
|
||||||
m4_define([_AX_CXX_COMPILE_STDCXX_testbody_17],
|
m4_define([_AX_CXX_COMPILE_STDCXX_testbody_17],
|
||||||
_AX_CXX_COMPILE_STDCXX_testbody_new_in_11
|
[_AX_CXX_COMPILE_STDCXX_testbody_new_in_11
|
||||||
_AX_CXX_COMPILE_STDCXX_testbody_new_in_14
|
_AX_CXX_COMPILE_STDCXX_testbody_new_in_14
|
||||||
_AX_CXX_COMPILE_STDCXX_testbody_new_in_17
|
_AX_CXX_COMPILE_STDCXX_testbody_new_in_17]
|
||||||
)
|
)
|
||||||
|
|
||||||
|
dnl Test body for checking C++20 support
|
||||||
|
|
||||||
|
m4_define([_AX_CXX_COMPILE_STDCXX_testbody_20],
|
||||||
|
[_AX_CXX_COMPILE_STDCXX_testbody_new_in_11
|
||||||
|
_AX_CXX_COMPILE_STDCXX_testbody_new_in_14
|
||||||
|
_AX_CXX_COMPILE_STDCXX_testbody_new_in_17
|
||||||
|
_AX_CXX_COMPILE_STDCXX_testbody_new_in_20]
|
||||||
|
)
|
||||||
|
|
||||||
|
dnl Test body for checking C++23 support
|
||||||
|
|
||||||
|
m4_define([_AX_CXX_COMPILE_STDCXX_testbody_23],
|
||||||
|
[_AX_CXX_COMPILE_STDCXX_testbody_new_in_11
|
||||||
|
_AX_CXX_COMPILE_STDCXX_testbody_new_in_14
|
||||||
|
_AX_CXX_COMPILE_STDCXX_testbody_new_in_17
|
||||||
|
_AX_CXX_COMPILE_STDCXX_testbody_new_in_20
|
||||||
|
_AX_CXX_COMPILE_STDCXX_testbody_new_in_23]
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
dnl Tests for new features in C++11
|
dnl Tests for new features in C++11
|
||||||
|
|
||||||
m4_define([_AX_CXX_COMPILE_STDCXX_testbody_new_in_11], [[
|
m4_define([_AX_CXX_COMPILE_STDCXX_testbody_new_in_11], [[
|
||||||
@@ -176,7 +210,21 @@ m4_define([_AX_CXX_COMPILE_STDCXX_testbody_new_in_11], [[
|
|||||||
|
|
||||||
#error "This is not a C++ compiler"
|
#error "This is not a C++ compiler"
|
||||||
|
|
||||||
#elif __cplusplus < 201103L
|
// MSVC always sets __cplusplus to 199711L in older versions; newer versions
|
||||||
|
// only set it correctly if /Zc:__cplusplus is specified as well as a
|
||||||
|
// /std:c++NN switch:
|
||||||
|
//
|
||||||
|
// https://devblogs.microsoft.com/cppblog/msvc-now-correctly-reports-__cplusplus/
|
||||||
|
//
|
||||||
|
// The value __cplusplus ought to have is available in _MSVC_LANG since
|
||||||
|
// Visual Studio 2015 Update 3:
|
||||||
|
//
|
||||||
|
// https://learn.microsoft.com/en-us/cpp/preprocessor/predefined-macros
|
||||||
|
//
|
||||||
|
// This was also the first MSVC version to support C++14 so we can't use the
|
||||||
|
// value of either __cplusplus or _MSVC_LANG to quickly rule out MSVC having
|
||||||
|
// C++11 or C++14 support, but we can check _MSVC_LANG for C++17 and later.
|
||||||
|
#elif __cplusplus < 201103L && !defined _MSC_VER
|
||||||
|
|
||||||
#error "This is not a C++11 compiler"
|
#error "This is not a C++11 compiler"
|
||||||
|
|
||||||
@@ -467,7 +515,7 @@ m4_define([_AX_CXX_COMPILE_STDCXX_testbody_new_in_14], [[
|
|||||||
|
|
||||||
#error "This is not a C++ compiler"
|
#error "This is not a C++ compiler"
|
||||||
|
|
||||||
#elif __cplusplus < 201402L
|
#elif __cplusplus < 201402L && !defined _MSC_VER
|
||||||
|
|
||||||
#error "This is not a C++14 compiler"
|
#error "This is not a C++14 compiler"
|
||||||
|
|
||||||
@@ -591,7 +639,7 @@ m4_define([_AX_CXX_COMPILE_STDCXX_testbody_new_in_17], [[
|
|||||||
|
|
||||||
#error "This is not a C++ compiler"
|
#error "This is not a C++ compiler"
|
||||||
|
|
||||||
#elif __cplusplus < 201703L
|
#elif (defined _MSVC_LANG ? _MSVC_LANG : __cplusplus) < 201703L
|
||||||
|
|
||||||
#error "This is not a C++17 compiler"
|
#error "This is not a C++17 compiler"
|
||||||
|
|
||||||
@@ -957,6 +1005,66 @@ namespace cxx17
|
|||||||
|
|
||||||
} // namespace cxx17
|
} // namespace cxx17
|
||||||
|
|
||||||
#endif // __cplusplus < 201703L
|
#endif // (defined _MSVC_LANG ? _MSVC_LANG : __cplusplus) < 201703L
|
||||||
|
|
||||||
|
]])
|
||||||
|
|
||||||
|
|
||||||
|
dnl Tests for new features in C++20
|
||||||
|
|
||||||
|
m4_define([_AX_CXX_COMPILE_STDCXX_testbody_new_in_20], [[
|
||||||
|
|
||||||
|
#ifndef __cplusplus
|
||||||
|
|
||||||
|
#error "This is not a C++ compiler"
|
||||||
|
|
||||||
|
#elif (defined _MSVC_LANG ? _MSVC_LANG : __cplusplus) < 202002L
|
||||||
|
|
||||||
|
#error "This is not a C++20 compiler"
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
#include <version>
|
||||||
|
|
||||||
|
namespace cxx20
|
||||||
|
{
|
||||||
|
|
||||||
|
// As C++20 supports feature test macros in the standard, there is no
|
||||||
|
// immediate need to actually test for feature availability on the
|
||||||
|
// Autoconf side.
|
||||||
|
|
||||||
|
} // namespace cxx20
|
||||||
|
|
||||||
|
#endif // (defined _MSVC_LANG ? _MSVC_LANG : __cplusplus) < 202002L
|
||||||
|
|
||||||
|
]])
|
||||||
|
|
||||||
|
|
||||||
|
dnl Tests for new features in C++23
|
||||||
|
|
||||||
|
m4_define([_AX_CXX_COMPILE_STDCXX_testbody_new_in_23], [[
|
||||||
|
|
||||||
|
#ifndef __cplusplus
|
||||||
|
|
||||||
|
#error "This is not a C++ compiler"
|
||||||
|
|
||||||
|
#elif (defined _MSVC_LANG ? _MSVC_LANG : __cplusplus) < 202302L
|
||||||
|
|
||||||
|
#error "This is not a C++23 compiler"
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
#include <version>
|
||||||
|
|
||||||
|
namespace cxx23
|
||||||
|
{
|
||||||
|
|
||||||
|
// As C++23 supports feature test macros in the standard, there is no
|
||||||
|
// immediate need to actually test for feature availability on the
|
||||||
|
// Autoconf side.
|
||||||
|
|
||||||
|
} // namespace cxx23
|
||||||
|
|
||||||
|
#endif // (defined _MSVC_LANG ? _MSVC_LANG : __cplusplus) < 202302L
|
||||||
|
|
||||||
]])
|
]])
|
||||||
|
|||||||
@@ -109,8 +109,8 @@ DownloadFactory::receive_load() {
|
|||||||
|
|
||||||
HttpQueue::iterator itr = m_manager->http_queue()->insert(m_uri, m_stream);
|
HttpQueue::iterator itr = m_manager->http_queue()->insert(m_uri, m_stream);
|
||||||
|
|
||||||
itr->add_done_slot([this]() { receive_loaded(); });
|
itr->add_done_slot(torrent::this_thread::thread(), [this]() { receive_loaded(); });
|
||||||
itr->add_failed_slot([this](const std::string& error) { receive_failed(error); });
|
itr->add_failed_slot(torrent::this_thread::thread(), [this](const std::string& error) { receive_failed(error); });
|
||||||
|
|
||||||
m_variables["tied_to_file"] = (int64_t)false;
|
m_variables["tied_to_file"] = (int64_t)false;
|
||||||
|
|
||||||
|
|||||||
@@ -15,8 +15,8 @@ HttpQueue::insert(const std::string& url, std::shared_ptr<std::ostream> stream)
|
|||||||
for (auto& slot : m_signal_insert)
|
for (auto& slot : m_signal_insert)
|
||||||
slot(*itr);
|
slot(*itr);
|
||||||
|
|
||||||
itr->add_done_slot([this, itr]() { erase(itr); });
|
itr->add_done_slot(torrent::this_thread::thread(), [this, itr]() { erase(itr); });
|
||||||
itr->add_failed_slot([this, itr](auto) { erase(itr); });
|
itr->add_failed_slot(torrent::this_thread::thread(), [this, itr](auto) { erase(itr); });
|
||||||
|
|
||||||
// TODO: Downloading http torrents doesn't seem to work.
|
// TODO: Downloading http torrents doesn't seem to work.
|
||||||
// TODO: Quitting no longer works.
|
// TODO: Quitting no longer works.
|
||||||
|
|||||||
Reference in New Issue
Block a user