diff --git a/ChangeLog b/ChangeLog index 671a628a..0dcd90d7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2008-09-14 Tatsuhiro Tsujikawa + + Added convenient method RequestGroupMan::getOrCreateServerStat() + * src/RequestGroupMan.cc + * src/RequestGroupMan.h + 2008-09-14 Tatsuhiro Tsujikawa If error event is received in epoll, then abort download immediately. diff --git a/src/RequestGroupMan.cc b/src/RequestGroupMan.cc index 1b041b69..e1ea3086 100644 --- a/src/RequestGroupMan.cc +++ b/src/RequestGroupMan.cc @@ -203,13 +203,8 @@ public: continue; } SharedHandle ss = - _requestGroupMan->findServerStat((*i)->getHostname(), - (*i)->getProtocol()); - if(ss.isNull()) { - ss.reset(new ServerStat((*i)->getHostname(), - (*i)->getProtocol())); - _requestGroupMan->addServerStat(ss); - } + _requestGroupMan->getOrCreateServerStat((*i)->getHostname(), + (*i)->getProtocol()); ss->updateDownloadSpeed((*i)->getAvgDownloadSpeed()); } } @@ -475,6 +470,18 @@ RequestGroupMan::findServerStat(const std::string& hostname, return _serverStatMan->find(hostname, protocol); } +SharedHandle +RequestGroupMan::getOrCreateServerStat(const std::string& hostname, + const std::string& protocol) +{ + SharedHandle ss = findServerStat(hostname, protocol); + if(ss.isNull()) { + ss.reset(new ServerStat(hostname, protocol)); + addServerStat(ss); + } + return ss; +} + bool RequestGroupMan::addServerStat(const SharedHandle& serverStat) { return _serverStatMan->add(serverStat); diff --git a/src/RequestGroupMan.h b/src/RequestGroupMan.h index 446c4299..37cb7aaf 100644 --- a/src/RequestGroupMan.h +++ b/src/RequestGroupMan.h @@ -139,8 +139,10 @@ public: SharedHandle findServerStat(const std::string& hostname, const std::string& protocol) const; - bool addServerStat(const SharedHandle& serverStat); + SharedHandle getOrCreateServerStat(const std::string& hostname, + const std::string& protocol); + bool addServerStat(const SharedHandle& serverStat); void updateServerStat();