diff options
author | Shauren <shauren.trinity@gmail.com> | 2019-04-14 00:13:23 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2019-04-14 00:13:23 +0200 |
commit | bcda8dd7421cfa1950a3e47081f2f28d032d38ac (patch) | |
tree | d751264dc0fbce02f94b6bc3c42238f785605d91 /src/common | |
parent | 18aca970ce1042535945fca53e13fd7059aa2a50 (diff) |
Core/Dep: Boost 1.70 compatibility
Diffstat (limited to 'src/common')
-rw-r--r-- | src/common/Asio/AsioHacksFwd.h | 24 | ||||
-rw-r--r-- | src/common/Asio/DeadlineTimer.h | 45 | ||||
-rw-r--r-- | src/common/Asio/IoContext.h | 19 | ||||
-rw-r--r-- | src/common/Metric/Metric.cpp | 6 | ||||
-rw-r--r-- | src/common/Metric/Metric.h | 6 |
5 files changed, 78 insertions, 22 deletions
diff --git a/src/common/Asio/AsioHacksFwd.h b/src/common/Asio/AsioHacksFwd.h index 3e65395a3ca..2cb2282a10a 100644 --- a/src/common/Asio/AsioHacksFwd.h +++ b/src/common/Asio/AsioHacksFwd.h @@ -46,29 +46,25 @@ namespace boost typedef basic_endpoint<tcp> tcp_endpoint; } +#if BOOST_VERSION >= 107000 + class executor; -#if BOOST_VERSION >= 106600 - template <typename Time, typename TimeTraits> - class basic_deadline_timer; - - typedef basic_deadline_timer<posix_time::ptime, time_traits<posix_time::ptime>> deadline_timer; + 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 - template <typename TimeType, typename TimeTraits> - class deadline_timer_service; - - template <typename Time, typename TimeTraits, typename TimerService> - class basic_deadline_timer; - - typedef basic_deadline_timer<posix_time::ptime, time_traits<posix_time::ptime>, deadline_timer_service<posix_time::ptime, time_traits<posix_time::ptime>>> deadline_timer; - namespace ip { template <typename InternetProtocol> diff --git a/src/common/Asio/DeadlineTimer.h b/src/common/Asio/DeadlineTimer.h new file mode 100644 index 00000000000..4e0c3a10b44 --- /dev/null +++ b/src/common/Asio/DeadlineTimer.h @@ -0,0 +1,45 @@ +/* + * Copyright (C) 2008-2019 TrinityCore <https://www.trinitycore.org/> + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#ifndef DeadlineTimer_h__ +#define DeadlineTimer_h__ + +#include <boost/asio/deadline_timer.hpp> + +#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<boost::posix_time::ptime, boost::asio::time_traits<boost::posix_time::ptime>> +#endif + +#define DeadlineTimerBase boost::asio::basic_deadline_timer<boost::posix_time::ptime, boost::asio::time_traits<boost::posix_time::ptime> BasicDeadlineTimerThirdTemplateArg> + +namespace Trinity +{ + namespace Asio + { + class DeadlineTimer : public DeadlineTimerBase + { + public: + using DeadlineTimerBase::basic_deadline_timer; + }; + } +} + +#endif // DeadlineTimer_h__ diff --git a/src/common/Asio/IoContext.h b/src/common/Asio/IoContext.h index e92222e8d0a..8ac0cc0a4e1 100644 --- a/src/common/Asio/IoContext.h +++ b/src/common/Asio/IoContext.h @@ -35,9 +35,24 @@ namespace Trinity { namespace Asio { - class IoContext : public IoContextBaseNamespace::IoContextBase + class IoContext { - using IoContextBaseNamespace::IoContextBase::IoContextBase; + public: + IoContext() : _impl() { } + explicit IoContext(int concurrency_hint) : _impl(concurrency_hint) { } + + operator IoContextBaseNamespace::IoContextBase&() { return _impl; } + operator IoContextBaseNamespace::IoContextBase 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; }; template<typename T> diff --git a/src/common/Metric/Metric.cpp b/src/common/Metric/Metric.cpp index 46988b8c0dd..392e2cd142f 100644 --- a/src/common/Metric/Metric.cpp +++ b/src/common/Metric/Metric.cpp @@ -18,19 +18,19 @@ #include "Metric.h" #include "Common.h" #include "Config.h" +#include "DeadlineTimer.h" #include "Log.h" #include "Strand.h" #include "Util.h" #include <boost/algorithm/string/replace.hpp> -#include <boost/asio/deadline_timer.hpp> #include <boost/asio/ip/tcp.hpp> void Metric::Initialize(std::string const& realmName, Trinity::Asio::IoContext& ioContext, std::function<void()> overallStatusLogger) { _dataStream = Trinity::make_unique<boost::asio::ip::tcp::iostream>(); _realmName = FormatInfluxDBTagValue(realmName); - _batchTimer = Trinity::make_unique<boost::asio::deadline_timer>(ioContext); - _overallStatusTimer = Trinity::make_unique<boost::asio::deadline_timer>(ioContext); + _batchTimer = Trinity::make_unique<Trinity::Asio::DeadlineTimer>(ioContext); + _overallStatusTimer = Trinity::make_unique<Trinity::Asio::DeadlineTimer>(ioContext); _overallStatusLogger = overallStatusLogger; LoadFromConfigs(); } diff --git a/src/common/Metric/Metric.h b/src/common/Metric/Metric.h index 630d72df288..42e2117ebd8 100644 --- a/src/common/Metric/Metric.h +++ b/src/common/Metric/Metric.h @@ -19,7 +19,6 @@ #define METRIC_H__ #include "Define.h" -#include "AsioHacksFwd.h" #include "MPSCQueue.h" #include <chrono> #include <functional> @@ -32,6 +31,7 @@ namespace Trinity namespace Asio { class IoContext; + class DeadlineTimer; } } @@ -61,8 +61,8 @@ private: std::iostream& GetDataStream() { return *_dataStream; } std::unique_ptr<std::iostream> _dataStream; MPSCQueue<MetricData> _queuedData; - std::unique_ptr<boost::asio::deadline_timer> _batchTimer; - std::unique_ptr<boost::asio::deadline_timer> _overallStatusTimer; + std::unique_ptr<Trinity::Asio::DeadlineTimer> _batchTimer; + std::unique_ptr<Trinity::Asio::DeadlineTimer> _overallStatusTimer; int32 _updateInterval = 0; int32 _overallStatusTimerInterval = 0; bool _enabled = false; |