adapt to Boost 1.70.0 API changes
authorMax Kellermann <max@musicpd.org>
Thu, 21 Mar 2019 09:37:54 +0000 (10:37 +0100)
committerMax Kellermann <max@musicpd.org>
Thu, 21 Mar 2019 10:04:14 +0000 (11:04 +0100)
The get_io_service() method has beenn removed from various classes
(https://github.com/boostorg/asio/commit/a72fbb0b867f), so we need to
keep references instead of asking existing asio objects for their
stored reference.

Tested with Boost 1.70.0b1

Closes https://github.com/MusicPlayerDaemon/ncmpc/issues/49

NEWS
src/aconnect.cxx
src/keyboard.cxx
src/keyboard.hxx
src/lirc.cxx
src/lirc.hxx
src/mpdclient.cxx
src/mpdclient.hxx
src/net/AsyncResolveConnect.cxx
src/net/AsyncResolveConnect.hxx

diff --git a/NEWS b/NEWS
index f953de4..fe1578e 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,6 +1,7 @@
 ncmpc 0.34 - not yet released
 * fix high CPU usage in key bindings check
 * fix background color "none"
 ncmpc 0.34 - not yet released
 * fix high CPU usage in key bindings check
 * fix background color "none"
+* adapt to Boost 1.70.0 API changes
 
 ncmpc 0.33 - (2018-10-22)
 * artist page: rename to "library"
 
 ncmpc 0.33 - (2018-10-22)
 * artist page: rename to "library"
index d574bba..7fe9f06 100644 (file)
@@ -125,7 +125,7 @@ aconnect_start(boost::asio::io_service &io_service,
 
        *acp = ac;
 
 
        *acp = ac;
 
-       ac->rconnect.Start(host, port);
+       ac->rconnect.Start(io_service, host, port);
 }
 
 void
 }
 
 void
index e99354f..0325cac 100644 (file)
@@ -43,7 +43,7 @@ void
 UserInput::OnReadable(const boost::system::error_code &error)
 {
        if (error) {
 UserInput::OnReadable(const boost::system::error_code &error)
 {
        if (error) {
-               d.get_io_service().stop();
+               get_io_context().stop();
                return;
        }
 
                return;
        }
 
@@ -81,7 +81,7 @@ UserInput::OnReadable(const boost::system::error_code &error)
 
        begin_input_event();
 
 
        begin_input_event();
 
-       if (!do_input_event(d.get_io_service(), cmd))
+       if (!do_input_event(get_io_context(), cmd))
                return;
 
        end_input_event();
                return;
 
        end_input_event();
@@ -89,7 +89,11 @@ UserInput::OnReadable(const boost::system::error_code &error)
 }
 
 UserInput::UserInput(boost::asio::io_service &io_service, WINDOW &_w)
 }
 
 UserInput::UserInput(boost::asio::io_service &io_service, WINDOW &_w)
-       :d(io_service), w(_w)
+       :d(io_service),
+#if BOOST_VERSION >= 107000
+        io_context(io_service),
+#endif
+        w(_w)
 {
        d.assign(STDIN_FILENO);
        AsyncWait();
 {
        d.assign(STDIN_FILENO);
        AsyncWait();
index 6bcf210..20b32af 100644 (file)
 
 class UserInput {
        boost::asio::posix::stream_descriptor d;
 
 class UserInput {
        boost::asio::posix::stream_descriptor d;
+
+#if BOOST_VERSION >= 107000
+       boost::asio::io_context &io_context;
+#endif
+
        WINDOW &w;
 
 public:
        UserInput(boost::asio::io_service &io_service, WINDOW &_w);
 
        WINDOW &w;
 
 public:
        UserInput(boost::asio::io_service &io_service, WINDOW &_w);
 
+       auto &get_io_context() noexcept {
+#if BOOST_VERSION >= 107000
+               return io_context;
+#else
+               return d.get_io_service();
+#endif
+       }
+
 private:
        void AsyncWait() {
                d.async_read_some(boost::asio::null_buffers(),
 private:
        void AsyncWait() {
                d.async_read_some(boost::asio::null_buffers(),
index ae5335d..4dfd897 100644 (file)
@@ -37,7 +37,7 @@ LircInput::OnReadable(const boost::system::error_code &error)
        if (lirc_nextcode(&code) == 0) {
                while (lirc_code2char(lc, code, &txt) == 0 && txt != nullptr) {
                        const auto cmd = get_key_command_from_name(txt);
        if (lirc_nextcode(&code) == 0) {
                while (lirc_code2char(lc, code, &txt) == 0 && txt != nullptr) {
                        const auto cmd = get_key_command_from_name(txt);
-                       if (!do_input_event(d.get_io_service(), cmd))
+                       if (!do_input_event(get_io_context(), cmd))
                                return;
                }
        }
                                return;
                }
        }
@@ -48,6 +48,9 @@ LircInput::OnReadable(const boost::system::error_code &error)
 
 LircInput::LircInput(boost::asio::io_service &io_service)
        :d(io_service)
 
 LircInput::LircInput(boost::asio::io_service &io_service)
        :d(io_service)
+#if BOOST_VERSION >= 107000
+       , io_context(io_service)
+#endif
 {
        int lirc_socket = 0;
 
 {
        int lirc_socket = 0;
 
index 198c30c..1c9142d 100644 (file)
 
 class LircInput {
        boost::asio::posix::stream_descriptor d;
 
 class LircInput {
        boost::asio::posix::stream_descriptor d;
+
+#if BOOST_VERSION >= 107000
+       boost::asio::io_context &io_context;
+#endif
+
        struct lirc_config *lc = nullptr;
 
 public:
        explicit LircInput(boost::asio::io_service &io_service);
        ~LircInput();
 
        struct lirc_config *lc = nullptr;
 
 public:
        explicit LircInput(boost::asio::io_service &io_service);
        ~LircInput();
 
+       auto &get_io_context() noexcept {
+#if BOOST_VERSION >= 107000
+               return io_context;
+#else
+               return d.get_io_service();
+#endif
+       }
+
 private:
        void AsyncWait() {
                d.async_read_some(boost::asio::null_buffers(),
 private:
        void AsyncWait() {
                d.async_read_some(boost::asio::null_buffers(),
index fdc3867..cee04ca 100644 (file)
@@ -156,6 +156,9 @@ mpdclient::mpdclient(boost::asio::io_service &io_service,
                     const char *_host, unsigned _port,
                     unsigned _timeout_ms, const char *_password)
        :timeout_ms(_timeout_ms), password(_password),
                     const char *_host, unsigned _port,
                     unsigned _timeout_ms, const char *_password)
        :timeout_ms(_timeout_ms), password(_password),
+#if BOOST_VERSION >= 107000
+        io_context(io_service),
+#endif
         enter_idle_timer(io_service)
 {
 #ifdef ENABLE_ASYNC_CONNECT
         enter_idle_timer(io_service)
 {
 #ifdef ENABLE_ASYNC_CONNECT
index 17fbc8a..013b517 100644 (file)
@@ -71,6 +71,10 @@ struct mpdclient final
        struct mpd_status *status = nullptr;
        const struct mpd_song *current_song = nullptr;
 
        struct mpd_status *status = nullptr;
        const struct mpd_song *current_song = nullptr;
 
+#if BOOST_VERSION >= 107000
+       boost::asio::io_context &io_context;
+#endif
+
        /**
         * A timer which re-enters MPD idle mode before the next main
         * loop iteration.
        /**
         * A timer which re-enters MPD idle mode before the next main
         * loop iteration.
@@ -130,7 +134,11 @@ struct mpdclient final
        }
 
        auto &get_io_service() noexcept {
        }
 
        auto &get_io_service() noexcept {
+#if BOOST_VERSION >= 107000
+               return io_context;
+#else
                return enter_idle_timer.get_io_service();
                return enter_idle_timer.get_io_service();
+#endif
        }
 
 #ifdef ENABLE_ASYNC_CONNECT
        }
 
 #ifdef ENABLE_ASYNC_CONNECT
index 723ca99..244f009 100644 (file)
@@ -54,7 +54,8 @@ AsyncResolveConnect::OnResolved(const boost::system::error_code &error,
 }
 
 void
 }
 
 void
-AsyncResolveConnect::Start(const char *host, unsigned port) noexcept
+AsyncResolveConnect::Start(boost::asio::io_service &io_service,
+                          const char *host, unsigned port) noexcept
 {
 #ifndef _WIN32
        if (host[0] == '/' || host[0] == '@') {
 {
 #ifndef _WIN32
        if (host[0] == '/' || host[0] == '@') {
@@ -64,7 +65,7 @@ AsyncResolveConnect::Start(const char *host, unsigned port) noexcept
                        s.front() = 0;
 
                boost::asio::local::stream_protocol::endpoint ep(std::move(s));
                        s.front() = 0;
 
                boost::asio::local::stream_protocol::endpoint ep(std::move(s));
-               boost::asio::local::stream_protocol::socket socket(resolver.get_io_service());
+               boost::asio::local::stream_protocol::socket socket(io_service);
 
                boost::system::error_code error;
                socket.connect(ep, error);
 
                boost::system::error_code error;
                socket.connect(ep, error);
@@ -76,6 +77,8 @@ AsyncResolveConnect::Start(const char *host, unsigned port) noexcept
                handler.OnConnect(std::move(socket));
                return;
        }
                handler.OnConnect(std::move(socket));
                return;
        }
+#else
+       (void)io_service;
 #endif /* _WIN32 */
 
        char service[20];
 #endif /* _WIN32 */
 
        char service[20];
index 2e9b341..e608daa 100644 (file)
@@ -47,7 +47,8 @@ public:
        /**
         * Resolve a host name and connect to it asynchronously.
         */
        /**
         * Resolve a host name and connect to it asynchronously.
         */
-       void Start(const char *host, unsigned port) noexcept;
+       void Start(boost::asio::io_service &io_service,
+                  const char *host, unsigned port) noexcept;
 
 private:
        void OnResolved(const boost::system::error_code &error,
 
 private:
        void OnResolved(const boost::system::error_code &error,