diff options
Diffstat (limited to 'src/lib/dcpomatic_socket.cc')
| -rw-r--r-- | src/lib/dcpomatic_socket.cc | 32 |
1 files changed, 29 insertions, 3 deletions
diff --git a/src/lib/dcpomatic_socket.cc b/src/lib/dcpomatic_socket.cc index 8f8f639cc..83ab072d2 100644 --- a/src/lib/dcpomatic_socket.cc +++ b/src/lib/dcpomatic_socket.cc @@ -63,7 +63,7 @@ Socket::check () void Socket::connect (boost::asio::ip::tcp::endpoint endpoint) { - _deadline.expires_from_now (boost::posix_time::seconds (_timeout)); + 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 { @@ -95,7 +95,7 @@ Socket::connect (boost::asio::ip::tcp::endpoint endpoint) void Socket::write (uint8_t const * data, int size) { - _deadline.expires_from_now (boost::posix_time::seconds (_timeout)); + set_deadline_from_now(_timeout); boost::system::error_code ec = boost::asio::error::would_block; boost::asio::async_write (_socket, boost::asio::buffer (data, size), boost::lambda::var(ec) = boost::lambda::_1); @@ -115,6 +115,13 @@ Socket::write (uint8_t const * data, int size) void +Socket::write(std::string const& str) +{ + write(reinterpret_cast<uint8_t const*>(str.c_str()), str.size()); +} + + +void Socket::write (uint32_t v) { v = htonl (v); @@ -129,7 +136,7 @@ Socket::write (uint32_t v) void Socket::read (uint8_t* data, int size) { - _deadline.expires_from_now (boost::posix_time::seconds (_timeout)); + set_deadline_from_now(_timeout); boost::system::error_code ec = boost::asio::error::would_block; boost::asio::async_read (_socket, boost::asio::buffer (data, size), boost::lambda::var(ec) = boost::lambda::_1); @@ -259,3 +266,22 @@ Socket::set_send_buffer_size (int size) _send_buffer_size = size; } + +void +Socket::set_deadline_from_now(int seconds) +{ + _deadline.expires_from_now(boost::posix_time::seconds(seconds)); +} + +void +Socket::run() +{ + _io_service.run_one(); +} + +void +Socket::close() +{ + _socket.close(); +} + |
