diff options
author | Gluzskiy Alexandr <sss@sss.chaoslab.ru> | 2012-03-24 19:24:20 +0200 |
---|---|---|
committer | Gluzskiy Alexandr <sss@sss.chaoslab.ru> | 2012-03-24 19:24:20 +0200 |
commit | 3faa907f6e8597ffae5b9f7db8567fe5fab8c9f6 (patch) | |
tree | 6a78ddda5b611cbe19822fb35afbdf82a673d359 /server | |
parent | 165a86baaeaa1219ea8e2a892e1ac90596038a66 (diff) |
more accurate speed calculation
Diffstat (limited to 'server')
-rwxr-xr-x | server/server/config.cpp | 14 | ||||
-rw-r--r-- | server/server/speedtest.cpp | 22 |
2 files changed, 21 insertions, 15 deletions
diff --git a/server/server/config.cpp b/server/server/config.cpp index 3be45bd..98db729 100755 --- a/server/server/config.cpp +++ b/server/server/config.cpp @@ -35,17 +35,23 @@ void speed_test_thread_func(config *cfg, int check_interval, std::list<config::p std::list<config::static_proxy_entry>::iterator it = std::find(static_proxy_list->begin(), static_proxy_list->end(), *i); if(it != static_proxy_list->end()) *it = *i; - lists_mutex->unlock(); + else if(cfg->debug()) + { + while(!logger) + boost::this_thread::sleep(boost::posix_time::milliseconds(200)); + logger->lock(); + *logger << time_str() << ": proxy "<<i->host<<":"<<i->port<<" not found in current proxy list\n"; + logger->unlock(); + } if(cfg->log_speed()) { - char port[10]; - snprintf(port, 9, "%d", i->port); while(!logger) boost::this_thread::sleep(boost::posix_time::milliseconds(200)); logger->lock(); - *logger << time_str() << ": "<<i->host<<":"<<port<<"\t"<<sp<<"\n"; + *logger << time_str() << ": "<<i->host<<":"<<i->port<<"\t"<<sp<<"\n"; logger->unlock(); } + lists_mutex->unlock(); boost::this_thread::sleep(boost::posix_time::seconds(1)); } /* for(std::list<config::proxy_entry>::iterator i = proxy_list->begin(), end = proxy_list->end(); i != end; ++i) diff --git a/server/server/speedtest.cpp b/server/server/speedtest.cpp index d1d9876..8a2c289 100644 --- a/server/server/speedtest.cpp +++ b/server/server/speedtest.cpp @@ -88,21 +88,21 @@ size_t speedtest::test(config::proxy_entry_base *p) else speed = chunk.size; } - p->speed_list.push_back(speed); - } - while(p->speed_list.size() > 10) - p->speed_list.pop_front(); - if(!p->speed_list.empty()) - { if(speed) { - size_t speed_sum = 0; - for(std::list<size_t>::iterator i = p->speed_list.begin(), end = p->speed_list.end(); i != end; ++i) - speed_sum += *i; - speed = speed_sum/p->speed_list.size(); + p->speed_list.push_back(speed); + while(p->speed_list.size() > 10) + p->speed_list.pop_front(); + if(!p->speed_list.empty()) + { + size_t speed_sum = 0; + for(std::list<size_t>::iterator i = p->speed_list.begin(), end = p->speed_list.end(); i != end; ++i) + speed_sum += *i; + speed = speed_sum/p->speed_list.size(); + } } - p->speed = speed; } + p->speed = speed; return speed; } |