Remove deprecated/removed use of resolver::query.
authorCarl Hetherington <cth@carlh.net>
Mon, 17 Mar 2025 13:38:17 +0000 (14:38 +0100)
committerCarl Hetherington <cth@carlh.net>
Sat, 22 Mar 2025 12:29:58 +0000 (13:29 +0100)
src/lib/dcpomatic_socket.cc
src/lib/dcpomatic_socket.h
src/lib/encode_server_finder.cc
wscript

index f34d6fb53e627aed6cae6a0623fafb1bb42ca4ef..9ccbd0af8418f6426853bb8eb881e0e2ca3a023c 100644 (file)
@@ -59,15 +59,17 @@ Socket::check ()
 }
 
 
+#ifdef DCPOMATIC_HAVE_BOOST_ASIO_IP_BASIC_RESOLVER_RESULTS
+
 /** Blocking connect.
  *  @param endpoint End-point to connect to.
  */
 void
-Socket::connect (boost::asio::ip::tcp::endpoint endpoint)
+Socket::connect(boost::asio::ip::basic_resolver_results<boost::asio::ip::tcp> endpoints)
 {
        set_deadline_from_now(_timeout);
        boost::system::error_code ec = boost::asio::error::would_block;
-       _socket.async_connect (endpoint, boost::lambda::var(ec) = boost::lambda::_1);
+       boost::asio::async_connect(_socket, endpoints, boost::lambda::var(ec) = boost::lambda::_1);
        do {
                _io_context.run_one();
        } while (ec == boost::asio::error::would_block);
@@ -81,9 +83,36 @@ Socket::connect (boost::asio::ip::tcp::endpoint endpoint)
        }
 
        if (_send_buffer_size) {
-               boost::asio::socket_base::send_buffer_size old_size;
-               _socket.get_option(old_size);
+               boost::asio::socket_base::send_buffer_size new_size(*_send_buffer_size);
+               _socket.set_option(new_size);
+       }
+}
+
+#endif
+
 
+/** Blocking connect.
+ *  @param endpoint End-point to connect to.
+ */
+void
+Socket::connect(boost::asio::ip::tcp::endpoint endpoint)
+{
+       set_deadline_from_now(_timeout);
+       boost::system::error_code ec = boost::asio::error::would_block;
+       _socket.async_connect (endpoint, boost::lambda::var(ec) = boost::lambda::_1);
+       do {
+               _io_context.run_one();
+       } while (ec == boost::asio::error::would_block);
+
+       if (ec) {
+               throw NetworkError (String::compose (_("error during async_connect (%1)"), ec.value ()));
+       }
+
+       if (!_socket.is_open ()) {
+               throw NetworkError (_("connect timed out"));
+       }
+
+       if (_send_buffer_size) {
                boost::asio::socket_base::send_buffer_size new_size(*_send_buffer_size);
                _socket.set_option(new_size);
        }
@@ -94,8 +123,12 @@ void
 Socket::connect(string host_name, int port)
 {
        boost::asio::ip::tcp::resolver resolver(_io_context);
+#ifdef DCPOMATIC_HAVE_BOOST_ASIO_IP_BASIC_RESOLVER_RESULTS
+       connect(resolver.resolve(host_name, fmt::to_string(port)));
+#else
        boost::asio::ip::tcp::resolver::query query(host_name, fmt::to_string(port));
        connect(*resolver.resolve(query));
+#endif
 }
 
 
index 37b7ba830103ead17d2d3df97f013fc33304ca34..1bc3aead99e89de95ae28bdc85cc795a0e7b94cc 100644 (file)
@@ -46,6 +46,7 @@ public:
        }
 
        void set_send_buffer_size (int size);
+
        void connect(std::string host_name, int port);
        void connect(boost::asio::ip::address address, int port);
 
@@ -94,7 +95,10 @@ private:
        bool check_read_digest ();
        void start_write_digest ();
        void finish_write_digest ();
-       void connect(boost::asio::ip::tcp::endpoint);
+       void connect(boost::asio::ip::tcp::endpoint endpoint);
+#ifdef DCPOMATIC_HAVE_BOOST_ASIO_IP_BASIC_RESOLVER_RESULTS
+       void connect(boost::asio::ip::basic_resolver_results<boost::asio::ip::tcp> endpoints);
+#endif
 
        dcpomatic::io_context _io_context;
        boost::asio::deadline_timer _deadline;
index e9636620c40a4aa471f5ebaa970930e02dae6d69..1a0329dd731f948c5387a251b0e5da872019db9e 100644 (file)
@@ -136,9 +136,14 @@ try
                for (auto const& i: Config::instance()->servers()) {
                        try {
                                boost::asio::ip::udp::resolver resolver(io_context);
+#ifdef DCPOMATIC_HAVE_BOOST_ASIO_IP_BASIC_RESOLVER_RESULTS
+                               boost::asio::connect(socket, resolver.resolve(i, fmt::to_string(HELLO_PORT)));
+                               socket.send(boost::asio::buffer(data.c_str(), data.size() + 1));
+#else
                                boost::asio::ip::udp::resolver::query query(i, fmt::to_string(HELLO_PORT));
-                               boost::asio::ip::udp::endpoint end_point (*resolver.resolve(query));
-                               socket.send_to (boost::asio::buffer(data.c_str(), data.size() + 1), end_point);
+                               boost::asio::ip::udp::endpoint end_point(*resolver.resolve(query));
+                               socket.send_to(boost::asio::buffer(data.c_str(), data.size() + 1), end_point);
+#endif
                        } catch (...) {
 
                        }
diff --git a/wscript b/wscript
index b4e165bd21858a5a7522322c539da4999443da8f..18b4ef6f6fac9089ce92c6a0b8058dc93231cac5 100644 (file)
--- a/wscript
+++ b/wscript
@@ -646,6 +646,15 @@ def configure(conf):
                        define_name='DCPOMATIC_HAVE_BOOST_ASIO_IO_CONTEXT',
                        mandatory=False)
 
+        conf.check_cxx(fragment="""
+                           #include <boost/asio.hpp>
+                           int main() { boost::asio::ip::basic_resolver_results<boost::asio::ip::tcp> x; }
+                           """,
+                       msg='Checking for boost::asio::ip::basic_resolver_results',
+                       define_name='DCPOMATIC_HAVE_BOOST_ASIO_IP_BASIC_RESOLVER_RESULTS',
+                       mandatory=False)
+                    
+
     # sqlite3
     conf.check_cfg(package="sqlite3", args='--cflags --libs', uselib_store='SQLITE3', mandatory=True)
     conf.check_cxx(fragment="""