diff options
| author | Carl Hetherington <cth@carlh.net> | 2025-03-17 20:27:47 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2025-03-22 13:29:58 +0100 |
| commit | 169c47ede14b6e86e054871a56ffa048357b4463 (patch) | |
| tree | eafb3610d6279bca8124fed133ab37dae02db2ae /src | |
| parent | a461561a21f02b7a33acba9d74db5076b37ef05e (diff) | |
Make the Socket connect() call a little friendlier.
This avoids some boilerplate.
Diffstat (limited to 'src')
| -rw-r--r-- | src/lib/dcp_video.cc | 7 | ||||
| -rw-r--r-- | src/lib/dcpomatic_socket.cc | 18 | ||||
| -rw-r--r-- | src/lib/dcpomatic_socket.h | 4 | ||||
| -rw-r--r-- | src/lib/encode_server.cc | 4 | ||||
| -rw-r--r-- | src/tools/dcpomatic.cc | 6 |
5 files changed, 25 insertions, 14 deletions
diff --git a/src/lib/dcp_video.cc b/src/lib/dcp_video.cc index f250d4505..e6bbfdf56 100644 --- a/src/lib/dcp_video.cc +++ b/src/lib/dcp_video.cc @@ -225,15 +225,10 @@ DCPVideo::encode_locally () const ArrayData DCPVideo::encode_remotely (EncodeServerDescription serv, int timeout) const { - boost::asio::io_service io_service; - boost::asio::ip::tcp::resolver resolver (io_service); - boost::asio::ip::tcp::resolver::query query(serv.host_name(), fmt::to_string(ENCODE_FRAME_PORT)); - boost::asio::ip::tcp::resolver::iterator endpoint_iterator = resolver.resolve (query); - auto socket = make_shared<Socket>(timeout); socket->set_send_buffer_size (512 * 1024); - socket->connect (*endpoint_iterator); + socket->connect(serv.host_name(), ENCODE_FRAME_PORT); /* Collect all XML metadata */ xmlpp::Document doc; diff --git a/src/lib/dcpomatic_socket.cc b/src/lib/dcpomatic_socket.cc index 83ab072d2..f03536cb7 100644 --- a/src/lib/dcpomatic_socket.cc +++ b/src/lib/dcpomatic_socket.cc @@ -24,6 +24,7 @@ #include "dcpomatic_log.h" #include "dcpomatic_socket.h" #include "exceptions.h" +#include <fmt/format.h> #include <boost/bind/bind.hpp> #include <boost/lambda/lambda.hpp> #include <iostream> @@ -32,6 +33,7 @@ using std::shared_ptr; +using std::string; using std::weak_ptr; @@ -88,6 +90,22 @@ Socket::connect (boost::asio::ip::tcp::endpoint endpoint) } +void +Socket::connect(string host_name, int port) +{ + boost::asio::ip::tcp::resolver resolver(_io_service); + boost::asio::ip::tcp::resolver::query query(host_name, fmt::to_string(port)); + connect(*resolver.resolve(query)); +} + + +void +Socket::connect(boost::asio::ip::address address, int port) +{ + connect(boost::asio::ip::tcp::endpoint(address, port)); +} + + /** Blocking write. * @param data Buffer to write. * @param size Number of bytes to write. diff --git a/src/lib/dcpomatic_socket.h b/src/lib/dcpomatic_socket.h index 86e5f1266..ed2d8b728 100644 --- a/src/lib/dcpomatic_socket.h +++ b/src/lib/dcpomatic_socket.h @@ -43,7 +43,8 @@ public: } void set_send_buffer_size (int size); - void connect (boost::asio::ip::tcp::endpoint); + void connect(std::string host_name, int port); + void connect(boost::asio::ip::address address, int port); void write (uint32_t n); void write (uint8_t const * data, int size); @@ -90,6 +91,7 @@ private: bool check_read_digest (); void start_write_digest (); void finish_write_digest (); + void connect(boost::asio::ip::tcp::endpoint); boost::asio::io_service _io_service; boost::asio::deadline_timer _deadline; diff --git a/src/lib/encode_server.cc b/src/lib/encode_server.cc index 08e661eac..9fd330a12 100644 --- a/src/lib/encode_server.cc +++ b/src/lib/encode_server.cc @@ -309,7 +309,7 @@ EncodeServer::broadcast_received () try { auto socket = make_shared<Socket>(); - socket->connect (boost::asio::ip::tcp::endpoint (_broadcast.send_endpoint.address(), MAIN_SERVER_PRESENCE_PORT)); + socket->connect(_broadcast.send_endpoint.address(), MAIN_SERVER_PRESENCE_PORT); socket->write (xml.bytes() + 1); socket->write ((uint8_t *) xml.c_str(), xml.bytes() + 1); } catch (...) { @@ -318,7 +318,7 @@ EncodeServer::broadcast_received () try { auto socket = make_shared<Socket>(); - socket->connect (boost::asio::ip::tcp::endpoint (_broadcast.send_endpoint.address(), BATCH_SERVER_PRESENCE_PORT)); + socket->connect(_broadcast.send_endpoint.address(), BATCH_SERVER_PRESENCE_PORT); socket->write (xml.bytes() + 1); socket->write ((uint8_t *) xml.c_str(), xml.bytes() + 1); } catch (...) { diff --git a/src/tools/dcpomatic.cc b/src/tools/dcpomatic.cc index d859e0937..3c0f84339 100644 --- a/src/tools/dcpomatic.cc +++ b/src/tools/dcpomatic.cc @@ -900,12 +900,8 @@ private: */ for (int i = 0; i < 8; ++i) { try { - boost::asio::io_service io_service; - boost::asio::ip::tcp::resolver resolver (io_service); - boost::asio::ip::tcp::resolver::query query("127.0.0.1", fmt::to_string(port)); - boost::asio::ip::tcp::resolver::iterator endpoint_iterator = resolver.resolve (query); Socket socket (5); - socket.connect (*endpoint_iterator); + socket.connect("127.0.0.1", port); DCPOMATIC_ASSERT (_film->directory ()); socket.write (message.length() + 1); socket.write ((uint8_t *) message.c_str(), message.length() + 1); |
