Use io_service::work in epee tcp server

pull/200/head
Lee Clagett 5 years ago
parent 31bdf7bd11
commit 4d3b61a31b

@ -330,7 +330,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.

@ -809,8 +809,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),
@ -919,9 +919,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)
{

Loading…
Cancel
Save