diff options
| author | Carl Hetherington <cth@carlh.net> | 2012-09-23 17:50:31 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2012-09-23 17:50:31 +0100 |
| commit | e89fb9d81358b51ed0e231725f7fb6eb63f96c5b (patch) | |
| tree | 7388764fb11b97f33c2ab9ffe8cea0679ce20d2e /src/lib/util.cc | |
| parent | 6726393a4b186333b8e1080f3f1c5c4b77d4c2e6 (diff) | |
Use io_service per thread.
Diffstat (limited to 'src/lib/util.cc')
| -rw-r--r-- | src/lib/util.cc | 30 |
1 files changed, 8 insertions, 22 deletions
diff --git a/src/lib/util.cc b/src/lib/util.cc index 3f48d696b..8713c5922 100644 --- a/src/lib/util.cc +++ b/src/lib/util.cc @@ -438,9 +438,9 @@ colour_lut_index_to_name (int index) return ""; } -DeadlineWrapper::DeadlineWrapper (asio::io_service& io_service) - : _io_service (io_service) - , _deadline (io_service) +DeadlineWrapper::DeadlineWrapper () + : _deadline (_io_service) + , _socket (_io_service) , _buffer_data (0) { _deadline.expires_at (posix_time::pos_infin); @@ -448,18 +448,10 @@ DeadlineWrapper::DeadlineWrapper (asio::io_service& io_service) } void -DeadlineWrapper::set_socket (shared_ptr<asio::ip::tcp::socket> socket) -{ - _socket = socket; -} - -void DeadlineWrapper::check () { if (_deadline.expires_at() <= asio::deadline_timer::traits_type::now ()) { - if (_socket) { - _socket->close (); - } + _socket.close (); _deadline.expires_at (posix_time::pos_infin); } @@ -469,15 +461,13 @@ DeadlineWrapper::check () void DeadlineWrapper::connect (asio::ip::basic_resolver_entry<asio::ip::tcp> const & endpoint, int timeout) { - assert (_socket); - system::error_code ec = asio::error::would_block; - _socket->async_connect (endpoint, lambda::var(ec) = lambda::_1); + _socket.async_connect (endpoint, lambda::var(ec) = lambda::_1); do { _io_service.run_one(); } while (ec == asio::error::would_block); - if (ec || !_socket->is_open ()) { + if (ec || !_socket.is_open ()) { throw NetworkError ("connect timed out"); } } @@ -485,12 +475,10 @@ DeadlineWrapper::connect (asio::ip::basic_resolver_entry<asio::ip::tcp> const & void DeadlineWrapper::write (uint8_t const * data, int size, int timeout) { - assert (_socket); - _deadline.expires_from_now (posix_time::seconds (timeout)); system::error_code ec = asio::error::would_block; - asio::async_write (*_socket, asio::buffer (data, size), lambda::var(ec) = lambda::_1); + asio::async_write (_socket, asio::buffer (data, size), lambda::var(ec) = lambda::_1); do { _io_service.run_one (); } while (ec == asio::error::would_block); @@ -503,14 +491,12 @@ DeadlineWrapper::write (uint8_t const * data, int size, int timeout) int DeadlineWrapper::read (uint8_t* data, int size, int timeout) { - assert (_socket); - _deadline.expires_from_now (posix_time::seconds (timeout)); system::error_code ec = asio::error::would_block; int amount_read = 0; - _socket->async_read_some ( + _socket.async_read_some ( asio::buffer (data, size), (lambda::var(ec) = lambda::_1, lambda::var(amount_read) = lambda::_2) ); |
