diff options
| author | Carl Hetherington <cth@carlh.net> | 2015-07-06 14:06:25 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2015-07-06 14:06:25 +0100 |
| commit | 96a2b6f7ce0be67248cbc612e2ef03ea7d586039 (patch) | |
| tree | 09ef052f6d21eb139e2490f3680895509aaa6205 | |
| parent | a6e7017b36ea2cee9f95c45fc0a4f85294dbc16f (diff) | |
Search for servers immediately when configuration changes.
| -rw-r--r-- | src/lib/server_finder.cc | 16 | ||||
| -rw-r--r-- | src/lib/server_finder.h | 4 |
2 files changed, 14 insertions, 6 deletions
diff --git a/src/lib/server_finder.cc b/src/lib/server_finder.cc index ecda385eb..3eec6597b 100644 --- a/src/lib/server_finder.cc +++ b/src/lib/server_finder.cc @@ -54,7 +54,7 @@ ServerFinder::~ServerFinder () { _stop = true; - _search_thread->interrupt (); + _search_condition.notify_all (); _search_thread->join (); _listen_io_service.stop (); @@ -106,11 +106,8 @@ try } } - try { - boost::thread::sleep (boost::get_system_time() + boost::posix_time::seconds (10)); - } catch (boost::thread_interrupted& e) { - return; - } + boost::mutex::scoped_lock lm (_search_condition_mutex); + _search_condition.timed_wait (lm, boost::get_system_time() + boost::posix_time::seconds (10)); } } catch (...) @@ -224,5 +221,12 @@ ServerFinder::config_changed (Config::Property what) _servers.clear (); } ServersListChanged (); + search_now (); } } + +void +ServerFinder::search_now () +{ + _search_condition.notify_all (); +} diff --git a/src/lib/server_finder.h b/src/lib/server_finder.h index 22f44eeb8..3bb0e03f9 100644 --- a/src/lib/server_finder.h +++ b/src/lib/server_finder.h @@ -53,6 +53,7 @@ private: void handle_accept (boost::system::error_code ec, boost::shared_ptr<Socket> socket); void config_changed (Config::Property what); + void search_now (); bool _disabled; @@ -68,5 +69,8 @@ private: boost::shared_ptr<boost::asio::ip::tcp::acceptor> _listen_acceptor; bool _stop; + boost::condition _search_condition; + boost::mutex _search_condition_mutex; + static ServerFinder* _instance; }; |
