aboutsummaryrefslogtreecommitdiff
path: root/src/common/Asio
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2020-09-27 20:20:59 +0200
committerShauren <shauren.trinity@gmail.com>2020-12-12 18:50:13 +0100
commit98939d258aa013a6ab1040e08e4ac1d1ac56e909 (patch)
treee4df3b1ba94e6affc90fa49ce33ca3e460ce395f /src/common/Asio
parent9819ee1a6ad73185f2198e1c0b4e0d70bcc9e7be (diff)
Dep/Boost: Partial support for boost 1.74 - asio
Ref #25470 (cherry picked from commit 155e37831e9c581c6a8ebba34fe70d3459301d0a)
Diffstat (limited to 'src/common/Asio')
-rw-r--r--src/common/Asio/AsioHacksFwd.h33
-rw-r--r--src/common/Asio/Resolver.h44
2 files changed, 32 insertions, 45 deletions
diff --git a/src/common/Asio/AsioHacksFwd.h b/src/common/Asio/AsioHacksFwd.h
index 4f245ee9ae7..6030436d39d 100644
--- a/src/common/Asio/AsioHacksFwd.h
+++ b/src/common/Asio/AsioHacksFwd.h
@@ -46,36 +46,6 @@ namespace boost
typedef basic_endpoint<tcp> tcp_endpoint;
}
-#if BOOST_VERSION >= 107000
- class executor;
-
- namespace ip
- {
- template <typename InternetProtocol, typename Executor>
- class basic_resolver;
-
- typedef basic_resolver<tcp, executor> tcp_resolver;
- }
-#elif BOOST_VERSION >= 106600
- namespace ip
- {
- template <typename InternetProtocol>
- class basic_resolver;
-
- typedef basic_resolver<tcp> tcp_resolver;
- }
-#else
- namespace ip
- {
- template <typename InternetProtocol>
- class resolver_service;
-
- template <typename InternetProtocol, typename ResolverService>
- class basic_resolver;
-
- typedef basic_resolver<tcp, resolver_service<tcp>> tcp_resolver;
- }
-#endif
}
}
@@ -83,6 +53,9 @@ namespace Trinity
{
namespace Asio
{
+ class DeadlineTimer;
+ class IoContext;
+ class Resolver;
class Strand;
}
}
diff --git a/src/common/Asio/Resolver.h b/src/common/Asio/Resolver.h
index 3a123b47cb9..b63747b139e 100644
--- a/src/common/Asio/Resolver.h
+++ b/src/common/Asio/Resolver.h
@@ -18,34 +18,48 @@
#ifndef Resolver_h__
#define Resolver_h__
+#include "IoContext.h"
#include "Optional.h"
#include <boost/asio/ip/tcp.hpp>
#include <string>
namespace Trinity
{
- namespace Net
+ namespace Asio
{
- inline Optional<boost::asio::ip::tcp::endpoint> Resolve(boost::asio::ip::tcp::resolver& resolver, boost::asio::ip::tcp const& protocol,
- std::string const& host, std::string const& service)
+ /**
+ Hack to make it possible to forward declare resolver (one of its template arguments is a typedef to something super long and using nested classes)
+ */
+ class Resolver
{
- boost::system::error_code ec;
+ public:
+ explicit Resolver(IoContext& ioContext) : _impl(ioContext) { }
+
+ Optional<boost::asio::ip::tcp::endpoint> 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::tcp::resolver::results_type results = resolver.resolve(protocol, host, service, ec);
- if (results.empty() || ec)
- return {};
+ 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();
+ return results.begin()->endpoint();
#else
- boost::asio::ip::tcp::resolver::query query(std::move(protocol), std::move(host), std::move(service));
- boost::asio::ip::tcp::resolver::iterator itr = resolver.resolve(query, ec);
- boost::asio::ip::tcp::resolver::iterator end;
- if (itr == end || ec)
- return {};
+ 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();
+ return itr->endpoint();
#endif
- }
+ }
+
+ private:
+ boost::asio::ip::tcp::resolver _impl;
+ };
}
}