diff options
author | Riccardo Spagni <ric@spagni.net> | 2019-03-04 21:33:48 +0200 |
---|---|---|
committer | Riccardo Spagni <ric@spagni.net> | 2019-03-04 21:33:48 +0200 |
commit | c83e80c2634f2c14fbd9fe4dbfb6a0abc2eb20ea (patch) | |
tree | 358b5bebfb8dd92a107d2d952772525274ca3244 | |
parent | Merge pull request #5160 (diff) | |
parent | Use io_service::work in epee tcp server (diff) | |
download | monero-c83e80c2634f2c14fbd9fe4dbfb6a0abc2eb20ea.tar.xz |
Merge pull request #5162
4d3b61a3 Use io_service::work in epee tcp server (Lee Clagett)
-rw-r--r-- | contrib/epee/include/net/abstract_tcp_server2.h | 11 | ||||
-rw-r--r-- | contrib/epee/include/net/abstract_tcp_server2.inl | 9 |
2 files changed, 14 insertions, 6 deletions
diff --git a/contrib/epee/include/net/abstract_tcp_server2.h b/contrib/epee/include/net/abstract_tcp_server2.h index 643b93b87..76773192e 100644 --- a/contrib/epee/include/net/abstract_tcp_server2.h +++ b/contrib/epee/include/net/abstract_tcp_server2.h @@ -347,7 +347,16 @@ namespace net_utils const boost::shared_ptr<typename connection<t_protocol_handler>::shared_state> m_state; /// The io_service used to perform asynchronous operations. - std::unique_ptr<boost::asio::io_service> m_io_service_local_instance; + struct worker + { + worker() + : io_service(), work(io_service) + {} + + boost::asio::io_service io_service; + boost::asio::io_service::work work; + }; + std::unique_ptr<worker> m_io_service_local_instance; boost::asio::io_service& io_service_; /// Acceptor used to listen for incoming connections. diff --git a/contrib/epee/include/net/abstract_tcp_server2.inl b/contrib/epee/include/net/abstract_tcp_server2.inl index 7a3abe9e9..39d6911e3 100644 --- a/contrib/epee/include/net/abstract_tcp_server2.inl +++ b/contrib/epee/include/net/abstract_tcp_server2.inl @@ -891,8 +891,8 @@ PRAGMA_WARNING_DISABLE_VS(4355) template<class t_protocol_handler> boosted_tcp_server<t_protocol_handler>::boosted_tcp_server( t_connection_type connection_type ) : m_state(boost::make_shared<typename connection<t_protocol_handler>::shared_state>()), - m_io_service_local_instance(new boost::asio::io_service()), - io_service_(*m_io_service_local_instance.get()), + m_io_service_local_instance(new worker()), + io_service_(m_io_service_local_instance->io_service), acceptor_(io_service_), default_remote(), m_stop_signal_sent(false), m_port(0), @@ -1005,9 +1005,8 @@ POP_WARNINGS { try { - size_t cnt = io_service_.run(); - if (cnt == 0) - misc_utils::sleep_no_w(1); + io_service_.run(); + return true; } catch(const std::exception& ex) { |