From 85bdeed51e09bd34a796a39e192c6454567c4514 Mon Sep 17 00:00:00 2001 From: Shauren Date: Mon, 14 Feb 2022 12:43:57 +0100 Subject: [PATCH] Dep: Raise required boost versions to 1.73 on windows and 1.71 on linux and remove compatibility code for unsupported versions (cherry picked from commit f6e72494f185d096f2cce70e646f0761e67e1bc7) --- dep/boost/CMakeLists.txt | 4 +-- src/common/Asio/DeadlineTimer.h | 14 ++-------- src/common/Asio/IoContext.h | 28 +++----------------- src/common/Asio/IpAddress.h | 12 --------- src/common/Asio/IpNetwork.h | 14 ---------- src/common/Asio/Resolver.h | 11 -------- src/common/Asio/Strand.h | 17 +++--------- src/server/shared/Networking/AsyncAcceptor.h | 6 +---- 8 files changed, 12 insertions(+), 94 deletions(-) diff --git a/dep/boost/CMakeLists.txt b/dep/boost/CMakeLists.txt index 7af1e7be31f..65d5c9355e4 100644 --- a/dep/boost/CMakeLists.txt +++ b/dep/boost/CMakeLists.txt @@ -30,9 +30,9 @@ include (CheckCXXSourceCompiles) if (WIN32) # On windows the requirements are higher according to the wiki. - set(BOOST_REQUIRED_VERSION 1.70) + set(BOOST_REQUIRED_VERSION 1.73) else() - set(BOOST_REQUIRED_VERSION 1.67) + set(BOOST_REQUIRED_VERSION 1.71) endif() find_package(Boost ${BOOST_REQUIRED_VERSION} REQUIRED system filesystem program_options iostreams regex) diff --git a/src/common/Asio/DeadlineTimer.h b/src/common/Asio/DeadlineTimer.h index 7a0e5522fa8..94531a28511 100644 --- a/src/common/Asio/DeadlineTimer.h +++ b/src/common/Asio/DeadlineTimer.h @@ -20,24 +20,14 @@ #include -#if BOOST_VERSION >= 107000 -#define BasicDeadlineTimerThirdTemplateArg , boost::asio::io_context::executor_type -#elif BOOST_VERSION >= 106600 -#define BasicDeadlineTimerThirdTemplateArg -#else -#define BasicDeadlineTimerThirdTemplateArg , boost::asio::deadline_timer_service> -#endif - -#define DeadlineTimerBase boost::asio::basic_deadline_timer BasicDeadlineTimerThirdTemplateArg> - namespace Trinity { namespace Asio { - class DeadlineTimer : public DeadlineTimerBase + class DeadlineTimer : public boost::asio::basic_deadline_timer, boost::asio::io_context::executor_type> { public: - using DeadlineTimerBase::basic_deadline_timer; + using basic_deadline_timer::basic_deadline_timer; }; } } diff --git a/src/common/Asio/IoContext.h b/src/common/Asio/IoContext.h index ee69fa93b9b..b26de194b5c 100644 --- a/src/common/Asio/IoContext.h +++ b/src/common/Asio/IoContext.h @@ -18,18 +18,8 @@ #ifndef IoContext_h__ #define IoContext_h__ -#include - -#if BOOST_VERSION >= 106600 #include #include -#define IoContextBaseNamespace boost::asio -#define IoContextBase io_context -#else -#include -#define IoContextBaseNamespace boost::asio -#define IoContextBase io_service -#endif namespace Trinity { @@ -41,38 +31,28 @@ namespace Trinity IoContext() : _impl() { } explicit IoContext(int concurrency_hint) : _impl(concurrency_hint) { } - operator IoContextBaseNamespace::IoContextBase&() { return _impl; } - operator IoContextBaseNamespace::IoContextBase const&() const { return _impl; } + operator boost::asio::io_context&() { return _impl; } + operator boost::asio::io_context const&() const { return _impl; } std::size_t run() { return _impl.run(); } void stop() { _impl.stop(); } -#if BOOST_VERSION >= 106600 boost::asio::io_context::executor_type get_executor() noexcept { return _impl.get_executor(); } -#endif private: - IoContextBaseNamespace::IoContextBase _impl; + boost::asio::io_context _impl; }; template - inline decltype(auto) post(IoContextBaseNamespace::IoContextBase& ioContext, T&& t) + inline decltype(auto) post(boost::asio::io_context& ioContext, T&& t) { -#if BOOST_VERSION >= 106600 return boost::asio::post(ioContext, std::forward(t)); -#else - return ioContext.post(std::forward(t)); -#endif } template inline decltype(auto) get_io_context(T&& ioObject) { -#if BOOST_VERSION >= 106600 return ioObject.get_executor().context(); -#else - return ioObject.get_io_service(); -#endif } } } diff --git a/src/common/Asio/IpAddress.h b/src/common/Asio/IpAddress.h index aa1cf0d4c6a..30500d662c6 100644 --- a/src/common/Asio/IpAddress.h +++ b/src/common/Asio/IpAddress.h @@ -25,21 +25,9 @@ namespace Trinity { namespace Net { -#if BOOST_VERSION >= 106600 using boost::asio::ip::make_address; using boost::asio::ip::make_address_v4; inline uint32 address_to_uint(boost::asio::ip::address_v4 const& address) { return address.to_uint(); } -#else - inline boost::asio::ip::address make_address(char const* str) { return boost::asio::ip::address::from_string(str); } - inline boost::asio::ip::address make_address(char const* str, boost::system::error_code& ec) { return boost::asio::ip::address::from_string(str, ec); } - inline boost::asio::ip::address make_address(std::string const& str) { return boost::asio::ip::address::from_string(str); } - inline boost::asio::ip::address make_address(std::string const& str, boost::system::error_code& ec) { return boost::asio::ip::address::from_string(str, ec); } - inline boost::asio::ip::address_v4 make_address_v4(char const* str) { return boost::asio::ip::address_v4::from_string(str); } - inline boost::asio::ip::address_v4 make_address_v4(char const* str, boost::system::error_code& ec) { return boost::asio::ip::address_v4::from_string(str, ec); } - inline boost::asio::ip::address_v4 make_address_v4(std::string const& str) { return boost::asio::ip::address_v4::from_string(str); } - inline boost::asio::ip::address_v4 make_address_v4(std::string const& str, boost::system::error_code& ec) { return boost::asio::ip::address_v4::from_string(str, ec); } - inline uint32 address_to_uint(boost::asio::ip::address_v4 const& address) { return address.to_ulong(); } -#endif } } diff --git a/src/common/Asio/IpNetwork.h b/src/common/Asio/IpNetwork.h index 8ac84bfc30b..294532c5c78 100644 --- a/src/common/Asio/IpNetwork.h +++ b/src/common/Asio/IpNetwork.h @@ -20,11 +20,8 @@ #include "Define.h" #include "IpAddress.h" -#include -#if BOOST_VERSION >= 106600 #include #include -#endif namespace Trinity { @@ -32,13 +29,9 @@ namespace Trinity { inline bool IsInNetwork(boost::asio::ip::address_v4 const& networkAddress, boost::asio::ip::address_v4 const& mask, boost::asio::ip::address_v4 const& clientAddress) { -#if BOOST_VERSION >= 106600 boost::asio::ip::network_v4 network = boost::asio::ip::make_network_v4(networkAddress, mask); boost::asio::ip::address_v4_range hosts = network.hosts(); return hosts.find(clientAddress) != hosts.end(); -#else - return (clientAddress.to_ulong() & mask.to_ulong()) == (networkAddress.to_ulong() & mask.to_ulong()); -#endif } inline boost::asio::ip::address_v4 GetDefaultNetmaskV4(boost::asio::ip::address_v4 const& networkAddress) @@ -54,16 +47,9 @@ namespace Trinity inline bool IsInNetwork(boost::asio::ip::address_v6 const& networkAddress, uint16 prefixLength, boost::asio::ip::address_v6 const& clientAddress) { -#if BOOST_VERSION >= 106600 boost::asio::ip::network_v6 network = boost::asio::ip::make_network_v6(networkAddress, prefixLength); boost::asio::ip::address_v6_range hosts = network.hosts(); return hosts.find(clientAddress) != hosts.end(); -#else - (void)networkAddress; - (void)prefixLength; - (void)clientAddress; - return false; -#endif } } } diff --git a/src/common/Asio/Resolver.h b/src/common/Asio/Resolver.h index b63747b139e..01399e435e5 100644 --- a/src/common/Asio/Resolver.h +++ b/src/common/Asio/Resolver.h @@ -38,23 +38,12 @@ namespace Trinity Optional Resolve(boost::asio::ip::tcp const& protocol, std::string const& host, std::string const& service) { boost::system::error_code ec; -#if BOOST_VERSION >= 106600 boost::asio::ip::resolver_base::flags flagsResolver = boost::asio::ip::resolver_base::all_matching; boost::asio::ip::tcp::resolver::results_type results = _impl.resolve(protocol, host, service, flagsResolver, ec); if (results.begin() == results.end() || ec) return {}; return results.begin()->endpoint(); -#else - boost::asio::ip::resolver_query_base::flags flagsQuery = boost::asio::ip::tcp::resolver::query::all_matching; - boost::asio::ip::tcp::resolver::query query(std::move(protocol), std::move(host), std::move(service), flagsQuery); - boost::asio::ip::tcp::resolver::iterator itr = _impl.resolve(query, ec); - boost::asio::ip::tcp::resolver::iterator end; - if (itr == end || ec) - return {}; - - return itr->endpoint(); -#endif } private: diff --git a/src/common/Asio/Strand.h b/src/common/Asio/Strand.h index c27407d1a3c..5beef144c60 100644 --- a/src/common/Asio/Strand.h +++ b/src/common/Asio/Strand.h @@ -19,11 +19,8 @@ #define Strand_h__ #include "IoContext.h" -#include - -#if BOOST_VERSION >= 106600 #include -#endif +#include namespace Trinity { @@ -32,21 +29,13 @@ namespace Trinity /** Hack to make it possible to forward declare strand (which is a inner class) */ - class Strand : public IoContextBaseNamespace::IoContextBase::strand + class Strand : public boost::asio::io_context::strand { public: - Strand(IoContext& ioContext) : IoContextBaseNamespace::IoContextBase::strand(ioContext) { } + Strand(IoContext& ioContext) : boost::asio::io_context::strand(ioContext) { } }; -#if BOOST_VERSION >= 106600 using boost::asio::bind_executor; -#else - template - inline decltype(auto) bind_executor(Strand& strand, T&& t) - { - return strand.wrap(std::forward(t)); - } -#endif } } diff --git a/src/server/shared/Networking/AsyncAcceptor.h b/src/server/shared/Networking/AsyncAcceptor.h index 6540db66474..ffc694340fc 100644 --- a/src/server/shared/Networking/AsyncAcceptor.h +++ b/src/server/shared/Networking/AsyncAcceptor.h @@ -22,16 +22,12 @@ #include "IpAddress.h" #include "Log.h" #include -#include #include +#include using boost::asio::ip::tcp; -#if BOOST_VERSION >= 106600 #define TRINITY_MAX_LISTEN_CONNECTIONS boost::asio::socket_base::max_listen_connections -#else -#define TRINITY_MAX_LISTEN_CONNECTIONS boost::asio::socket_base::max_connections -#endif class AsyncAcceptor {