Add Socket::set_send_buffer_size().
authorCarl Hetherington <cth@carlh.net>
Fri, 11 Mar 2022 18:44:13 +0000 (19:44 +0100)
committerCarl Hetherington <cth@carlh.net>
Mon, 15 Aug 2022 16:22:58 +0000 (18:22 +0200)
src/lib/dcpomatic_socket.cc
src/lib/dcpomatic_socket.h

index f4292e842d5375e3944953954ebc7803305bc697..014e498e636e1578d7121c85405cfca7871229cf 100644 (file)
@@ -21,6 +21,7 @@
 
 #include "compose.hpp"
 #include "dcpomatic_assert.h"
+#include "dcpomatic_log.h"
 #include "dcpomatic_socket.h"
 #include "exceptions.h"
 #include <boost/bind/bind.hpp>
@@ -76,6 +77,16 @@ Socket::connect (boost::asio::ip::tcp::endpoint endpoint)
        if (!_socket.is_open ()) {
                throw NetworkError (_("connect timed out"));
        }
+
+       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);
+
+               LOG_GENERAL("Changed socket send buffer size from %1 to %2", old_size.value(), *_send_buffer_size);
+       }
 }
 
 
@@ -243,3 +254,10 @@ Socket::finish_write_digest ()
        write (buffer, size);
 }
 
+
+void
+Socket::set_send_buffer_size (int size)
+{
+       _send_buffer_size = size;
+}
+
index f4520e5cf7c070d3407c2196b1baf8ff98939476..7dff979e0d36b07e29bc211057a54b9cae16ef16 100644 (file)
@@ -42,6 +42,7 @@ public:
                return _socket;
        }
 
+       void set_send_buffer_size (int size);
        void connect (boost::asio::ip::tcp::endpoint);
 
        void write (uint32_t n);
@@ -87,4 +88,5 @@ private:
        int _timeout;
        boost::scoped_ptr<Digester> _read_digester;
        boost::scoped_ptr<Digester> _write_digester;
+       boost::optional<int> _send_buffer_size;
 };