diff options
| author | Carl Hetherington <cth@carlh.net> | 2025-03-17 14:38:17 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2025-03-22 13:29:58 +0100 |
| commit | 7bd3e8150a0e321ec61cf4953baeb6f45d4611a9 (patch) | |
| tree | 4553f01167d7a39c8f3ae8cdd1914f9f6e6a9af4 /src | |
| parent | 9dd72fc481349f0b5ce985164441eecfa6485c19 (diff) | |
Remove deprecated/removed use of resolver::query.
Diffstat (limited to 'src')
| -rw-r--r-- | src/lib/dcpomatic_socket.cc | 41 | ||||
| -rw-r--r-- | src/lib/dcpomatic_socket.h | 6 | ||||
| -rw-r--r-- | src/lib/encode_server_finder.cc | 9 |
3 files changed, 49 insertions, 7 deletions
diff --git a/src/lib/dcpomatic_socket.cc b/src/lib/dcpomatic_socket.cc index f34d6fb53..9ccbd0af8 100644 --- a/src/lib/dcpomatic_socket.cc +++ b/src/lib/dcpomatic_socket.cc @@ -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 } diff --git a/src/lib/dcpomatic_socket.h b/src/lib/dcpomatic_socket.h index 37b7ba830..1bc3aead9 100644 --- a/src/lib/dcpomatic_socket.h +++ b/src/lib/dcpomatic_socket.h @@ -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; diff --git a/src/lib/encode_server_finder.cc b/src/lib/encode_server_finder.cc index e9636620c..1a0329dd7 100644 --- a/src/lib/encode_server_finder.cc +++ b/src/lib/encode_server_finder.cc @@ -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 (...) { } |
