summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2025-03-17 20:27:47 +0100
committerCarl Hetherington <cth@carlh.net>2025-03-22 13:29:58 +0100
commit169c47ede14b6e86e054871a56ffa048357b4463 (patch)
treeeafb3610d6279bca8124fed133ab37dae02db2ae /src
parenta461561a21f02b7a33acba9d74db5076b37ef05e (diff)
Make the Socket connect() call a little friendlier.
This avoids some boilerplate.
Diffstat (limited to 'src')
-rw-r--r--src/lib/dcp_video.cc7
-rw-r--r--src/lib/dcpomatic_socket.cc18
-rw-r--r--src/lib/dcpomatic_socket.h4
-rw-r--r--src/lib/encode_server.cc4
-rw-r--r--src/tools/dcpomatic.cc6
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);