summaryrefslogtreecommitdiff
path: root/server/server/config.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'server/server/config.cpp')
-rwxr-xr-xserver/server/config.cpp30
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_)
{