From d64c8e75f6c3b6895f51036e5d16ad696dfe0f66 Mon Sep 17 00:00:00 2001 From: Tatsuhiro Tsujikawa Date: Mon, 4 Aug 2008 17:06:47 +0000 Subject: 2008-08-05 Tatsuhiro Tsujikawa Implemented download speed based URI selection algorithm. Introduced new option --uri-selector. If --uri-selector=feedback is given, aria2 uses download speed observed in the previous downloads and chooses fastest server in the URI list. Currently at most 10 URIs are considered to introduce randomeness for finding better servers. The speed is average download speed in the downloads. On the other hand, if --uri-selector=inorder is given, which is default, URI is tried in order in URI list. The usage text for the new option has not been written yet. * src/AbstractCommand.cc * src/DownloadCommand.cc * src/DownloadEngine.cc * src/DownloadEngineFactory.cc * src/InOrderURISelector.cc * src/InOrderURISelector.h * src/OptionHandlerFactory.cc * src/PeerStat.h * src/RequestGroup.cc * src/RequestGroup.h * src/RequestGroupMan.cc * src/RequestGroupMan.h * src/SegmentMan.cc * src/SegmentMan.h * src/ServerStat.cc * src/ServerStat.h * src/ServerStatMan.cc * src/ServerStatMan.h * src/ServerStatURISelector.cc * src/ServerStatURISelector.h * src/URISelector.h * src/option_processing.cc * src/prefs.cc * src/prefs.h * test/InOrderURISelectorTest.cc * test/RequestGroupManTest.cc * test/ServerStatManTest.cc * test/ServerStatURISelectorTest.cc --- src/ServerStatMan.h | 69 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 src/ServerStatMan.h (limited to 'src/ServerStatMan.h') diff --git a/src/ServerStatMan.h b/src/ServerStatMan.h new file mode 100644 index 00000000..b2301ccc --- /dev/null +++ b/src/ServerStatMan.h @@ -0,0 +1,69 @@ +/* */ +#ifndef _D_SERVER_STAT_MAN_H_ +#define _D_SERVER_STAT_MAN_H_ +#include "common.h" +#include "SharedHandle.h" +#include +#include +#include + +namespace aria2 { + +class ServerStat; + +class ServerStatMan { +public: + ServerStatMan(); + + ~ServerStatMan(); + + SharedHandle find(const std::string& hostname, + const std::string& protocol) const; + + bool add(const SharedHandle& serverStat); + + void load(std::istream& in); + + void save(std::ostream& out) const; + + void print(std::ostream& o) const; +private: + std::deque > _serverStats; +}; + +} // namespace aria2 + +#endif // _D_SERVER_STAT_MAN_H_ -- cgit