diff options
Diffstat (limited to 'server/server/config.cpp')
-rwxr-xr-x | server/server/config.cpp | 30 |
1 files changed, 28 insertions, 2 deletions
diff --git a/server/server/config.cpp b/server/server/config.cpp index 55d8d1e..5d80cab 100755 --- a/server/server/config.cpp +++ b/server/server/config.cpp @@ -1,6 +1,6 @@ #include "headers.h" -void reload_config_thread_func(config *cfg) +void reload_config_thread_func(config *cfg, boost::mutex *m) { while(!boost::this_thread::interruption_requested()) { @@ -9,8 +9,10 @@ void reload_config_thread_func(config *cfg) return; cfg->load_vars(); cfg->load_cvars(); + m->lock(); cfg->load_proxy_list(); cfg->load_static_proxy_list(); + m->unlock(); cfg->load_firewall_list(); cfg->load_deleted_list(); cfg->load_upload_list(); @@ -18,6 +20,29 @@ void reload_config_thread_func(config *cfg) } } +void speed_test_thread_func(std::list<config::proxy_entry>* proxy_list, std::list<config::static_proxy_entry> *static_proxy_list, const std::string& test_url, boost::mutex *m) +{ + while(!boost::this_thread::interruption_requested()) + { + m->lock(); + for(std::list<config::static_proxy_entry>::iterator i = static_proxy_list->begin(), end = static_proxy_list->end(); i != end; ++i) + { + speedtest t(test_url); + t.test(&(*i)); + boost::this_thread::sleep(boost::posix_time::seconds(30)); + } +/* for(std::list<config::proxy_entry>::iterator i = proxy_list->begin(), end = proxy_list->end(); i != end; ++i) + { + speedtest t(test_url); + t.test(&(*i)); + boost::this_thread::sleep(boost::posix_time::seconds(30)); + } */ + m->unlock(); + boost::this_thread::sleep(boost::posix_time::minutes(180)); + } +} + + void config::load_vars() { std::ifstream config; @@ -84,7 +109,8 @@ config::config(const char *pth) load_deleted_list(); load_upload_list(); load_servers_list(); - cfg_reload_thr = new boost::thread(boost::bind(reload_config_thread_func, this)); + cfg_reload_thr = new boost::thread(boost::bind(reload_config_thread_func, this, &lists_mutex)); + speed_test_thr = new boost::thread(boost::bind(speed_test_thread_func, &proxy_list, &static_proxy_list, "http://sss.chaoslab.ru", &lists_mutex)); } const int config::get_int(const std::string& data, const char* var, int default_) { |