Bladeren bron

2009-05-07 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>

	Pass reference of Option object instead of pointer.
	* src/download_helper.cc
	* src/download_helper.h
	* src/main.cc
	* test/DownloadHelperTest.cc
Tatsuhiro Tsujikawa 16 jaren geleden
bovenliggende
commit
ce9c79a2f3
5 gewijzigde bestanden met toevoegingen van 64 en 55 verwijderingen
  1. 8 0
      ChangeLog
  2. 31 30
      src/download_helper.cc
  3. 4 4
      src/download_helper.h
  4. 9 9
      src/main.cc
  5. 12 12
      test/DownloadHelperTest.cc

+ 8 - 0
ChangeLog

@@ -1,3 +1,11 @@
+2009-05-07  Tatsuhiro Tsujikawa  <t-tujikawa@users.sourceforge.net>
+
+	Pass reference of Option object instead of pointer.
+	* src/download_helper.cc
+	* src/download_helper.h
+	* src/main.cc
+	* test/DownloadHelperTest.cc
+
 2009-05-07  Tatsuhiro Tsujikawa  <t-tujikawa@users.sourceforge.net>
 
 	Don't retrieve PREF_MAX_DOWNLOAD_LIMIT and PREF_MAX_UPLOAD_LIMIT

+ 31 - 30
src/download_helper.cc

@@ -92,13 +92,13 @@ static void splitURI(std::deque<std::string>& result,
 }
 
 static SharedHandle<RequestGroup> createRequestGroup
-(const Option* op, const std::deque<std::string>& uris,
+(const Option& op, const std::deque<std::string>& uris,
  const Option& requestOption,
  bool useOutOption = false)
 {
-  SharedHandle<RequestGroup> rg(new RequestGroup(op, uris));
+  SharedHandle<RequestGroup> rg(new RequestGroup(&op, uris));
   SharedHandle<SingleFileDownloadContext> dctx
-    (new SingleFileDownloadContext(op->getAsInt(PREF_SEGMENT_SIZE),
+    (new SingleFileDownloadContext(op.getAsInt(PREF_SEGMENT_SIZE),
 				   0,
 				   A2STR::NIL,
 				   useOutOption&&!requestOption.blank(PREF_OUT)?
@@ -114,16 +114,16 @@ static SharedHandle<RequestGroup> createRequestGroup
 static
 SharedHandle<RequestGroup>
 createBtRequestGroup(const std::string& torrentFilePath,
-		     Option* op,
+		     const Option& op,
 		     const std::deque<std::string>& auxUris,
 		     const Option& requestOption)
 {
-  SharedHandle<RequestGroup> rg(new RequestGroup(op, auxUris));
+  SharedHandle<RequestGroup> rg(new RequestGroup(&op, auxUris));
   SharedHandle<DefaultBtContext> btContext(new DefaultBtContext());
   btContext->setDir(requestOption.get(PREF_DIR));
   btContext->load(torrentFilePath);// may throw exception
-  if(op->defined(PREF_PEER_ID_PREFIX)) {
-    btContext->setPeerIdPrefix(op->get(PREF_PEER_ID_PREFIX));
+  if(op.defined(PREF_PEER_ID_PREFIX)) {
+    btContext->setPeerIdPrefix(op.get(PREF_PEER_ID_PREFIX));
   }
   btContext->setFileFilter
     (Util::parseIntRange(requestOption.get(PREF_SELECT_FILE)));
@@ -141,21 +141,21 @@ createBtRequestGroup(const std::string& torrentFilePath,
 }
 
 void createRequestGroupForBitTorrent
-(std::deque<SharedHandle<RequestGroup> >& result, Option* op,
+(std::deque<SharedHandle<RequestGroup> >& result, const Option& op,
  const std::deque<std::string>& uris)
 {
   std::deque<std::string> nargs;
-  if(op->get(PREF_PARAMETERIZED_URI) == V_TRUE) {
+  if(op.get(PREF_PARAMETERIZED_URI) == V_TRUE) {
     unfoldURI(nargs, uris);
   } else {
     nargs = uris;
   }
   // we ignore -Z option here
-  size_t numSplit = op->getAsInt(PREF_SPLIT);
+  size_t numSplit = op.getAsInt(PREF_SPLIT);
   std::deque<std::string> auxUris;
   splitURI(auxUris, nargs.begin(), nargs.end(), numSplit);
   SharedHandle<RequestGroup> rg =
-    createBtRequestGroup(op->get(PREF_TORRENT_FILE), op, auxUris, *op);
+    createBtRequestGroup(op.get(PREF_TORRENT_FILE), op, auxUris, op);
   rg->setNumConcurrentCommand(numSplit);
   result.push_back(rg);
 }
@@ -164,9 +164,9 @@ void createRequestGroupForBitTorrent
 
 #ifdef ENABLE_METALINK
 void createRequestGroupForMetalink
-(std::deque<SharedHandle<RequestGroup> >& result, Option* op)
+(std::deque<SharedHandle<RequestGroup> >& result, const Option& op)
 {
-  Metalink2RequestGroup(op).generate(result, op->get(PREF_METALINK_FILE), *op);
+  Metalink2RequestGroup(&op).generate(result, op.get(PREF_METALINK_FILE), op);
   if(result.empty()) {
     throw FatalException(MSG_NO_FILES_TO_DOWNLOAD);
   }
@@ -177,11 +177,11 @@ class AccRequestGroup {
 private:
   std::deque<SharedHandle<RequestGroup> >& _requestGroups;
   ProtocolDetector _detector;
-  Option* _op;
+  const Option& _op;
   const Option& _requestOption;
 public:
   AccRequestGroup(std::deque<SharedHandle<RequestGroup> >& requestGroups,
-		  Option* op,
+		  const Option& op,
 		  const Option& requestOption):
     _requestGroups(requestGroups), _op(op), _requestOption(requestOption) {}
 
@@ -190,7 +190,7 @@ public:
   {
     if(_detector.isStreamProtocol(uri)) {
       std::deque<std::string> streamURIs;
-      size_t numSplit = _op->getAsInt(PREF_SPLIT);
+      size_t numSplit = _op.getAsInt(PREF_SPLIT);
       for(size_t i = 0; i < numSplit; ++i) {
 	streamURIs.push_back(uri);
       }
@@ -215,7 +215,7 @@ public:
 #ifdef ENABLE_METALINK
     else if(_detector.guessMetalinkFile(uri)) {
       try {
-	Metalink2RequestGroup(_op).generate(_requestGroups, uri,
+	Metalink2RequestGroup(&_op).generate(_requestGroups, uri,
 					    _requestOption);
       } catch(RecoverableException& e) {
 	// error occurred while parsing metalink file.
@@ -247,16 +247,16 @@ static void copyIfndef(Option& dest, const Option& src, const std::string& name)
 }
 
 static void createRequestGroupForUri
-(std::deque<SharedHandle<RequestGroup> >& result, Option* op,
+(std::deque<SharedHandle<RequestGroup> >& result, const Option& op,
  const std::deque<std::string>& uris, const Option& requestOption)
 {
   std::deque<std::string> nargs;
-  if(op->get(PREF_PARAMETERIZED_URI) == V_TRUE) {
+  if(op.get(PREF_PARAMETERIZED_URI) == V_TRUE) {
     unfoldURI(nargs, uris);
   } else {
     nargs = uris;
   }
-  if(op->get(PREF_FORCE_SEQUENTIAL) == V_TRUE) {
+  if(op.get(PREF_FORCE_SEQUENTIAL) == V_TRUE) {
     std::for_each(nargs.begin(), nargs.end(),
 		  AccRequestGroup(result, op, requestOption));
   } else {
@@ -264,7 +264,7 @@ static void createRequestGroupForUri
       std::stable_partition(nargs.begin(), nargs.end(), StreamProtocolFilter());
     // let's process http/ftp protocols first.
     if(nargs.begin() != strmProtoEnd) {
-      size_t numSplit = op->getAsInt(PREF_SPLIT);
+      size_t numSplit = op.getAsInt(PREF_SPLIT);
       std::deque<std::string> streamURIs;
       splitURI(streamURIs, nargs.begin(), strmProtoEnd,
 	       numSplit);
@@ -280,10 +280,10 @@ static void createRequestGroupForUri
 }
 
 void createRequestGroupForUri
-(std::deque<SharedHandle<RequestGroup> >& result, Option* op,
+(std::deque<SharedHandle<RequestGroup> >& result, const Option& op,
  const std::deque<std::string>& uris)
 {
-  createRequestGroupForUri(result, op, uris, *op);
+  createRequestGroupForUri(result, op, uris, op);
 }
 
 template<typename InputIterator>
@@ -296,7 +296,8 @@ static void foreachCopyIfndef(InputIterator first, InputIterator last,
 }
 
 static void createRequestGroupForUriList
-(std::deque<SharedHandle<RequestGroup> >& result, Option* op, std::istream& in)
+(std::deque<SharedHandle<RequestGroup> >& result, const Option& op,
+ std::istream& in)
 {
   UriListParser p(in);
   while(p.hasNext()) {
@@ -316,24 +317,24 @@ static void createRequestGroupForUriList
     };
     foreachCopyIfndef(&REQUEST_OPTIONS[0],
 		      &REQUEST_OPTIONS[arrayLength(REQUEST_OPTIONS)],
-		      requestOption, *op);
+		      requestOption, op);
 
     createRequestGroupForUri(result, op, uris, requestOption);
   }
 }
 
 void createRequestGroupForUriList
-(std::deque<SharedHandle<RequestGroup> >& result, Option* op)
+(std::deque<SharedHandle<RequestGroup> >& result, const Option& op)
 {
-  if(op->get(PREF_INPUT_FILE) == "-") {
+  if(op.get(PREF_INPUT_FILE) == "-") {
     createRequestGroupForUriList(result, op, std::cin);
   } else {
-    if(!File(op->get(PREF_INPUT_FILE)).isFile()) {
+    if(!File(op.get(PREF_INPUT_FILE)).isFile()) {
       throw FatalException
-	(StringFormat(EX_FILE_OPEN, op->get(PREF_INPUT_FILE).c_str(),
+	(StringFormat(EX_FILE_OPEN, op.get(PREF_INPUT_FILE).c_str(),
 		      "No such file").str());
     }
-    std::ifstream f(op->get(PREF_INPUT_FILE).c_str(), std::ios::binary);
+    std::ifstream f(op.get(PREF_INPUT_FILE).c_str(), std::ios::binary);
     createRequestGroupForUriList(result, op, f);
   }
 }

+ 4 - 4
src/download_helper.h

@@ -51,7 +51,7 @@ class Option;
 // Create RequestGroup object using torrent file specified by torrent-file 
 // option. In this function, force-sequential is ignored.
 void createRequestGroupForBitTorrent
-(std::deque<SharedHandle<RequestGroup> >& result, Option* op,
+(std::deque<SharedHandle<RequestGroup> >& result, const Option& op,
  const std::deque<std::string>& uris);
 #endif // ENABLE_BITTORRENT
 
@@ -59,7 +59,7 @@ void createRequestGroupForBitTorrent
 // Create RequestGroup objects using Metalink file specified by metalink-file
 // option.
 void createRequestGroupForMetalink
-(std::deque<SharedHandle<RequestGroup> >& result, Option* op);
+(std::deque<SharedHandle<RequestGroup> >& result, const Option& op);
 #endif // ENABLE_METALINK
 
 // Create RequestGroup objects from reading file specified by input-file option.
@@ -68,11 +68,11 @@ void createRequestGroupForMetalink
 // The additional out and dir options can be specified after each line of URIs.
 // This optional line must start with white space(s).
 void createRequestGroupForUriList
-(std::deque<SharedHandle<RequestGroup> >& result, Option* op);
+(std::deque<SharedHandle<RequestGroup> >& result, const Option& op);
 
 // Create RequestGroup object using provided uris.
 void createRequestGroupForUri
-(std::deque<SharedHandle<RequestGroup> >& result, Option* op,
+(std::deque<SharedHandle<RequestGroup> >& result, const Option& op,
  const std::deque<std::string>& uris);
 
 } // namespace aria2

+ 9 - 9
src/main.cc

@@ -115,10 +115,10 @@ static void showTorrentFile(const std::string& uri)
 #endif // ENABLE_BITTORRENT
 
 #ifdef ENABLE_METALINK
-static void showMetalinkFile(const std::string& uri, const Option* op)
+static void showMetalinkFile(const std::string& uri, const Option& op)
 {
   std::deque<SharedHandle<MetalinkEntry> > metalinkEntries;
-  MetalinkHelper::parseAndQuery(metalinkEntries, uri, op);
+  MetalinkHelper::parseAndQuery(metalinkEntries, uri, &op);
   std::deque<SharedHandle<FileEntry> > fileEntries;
   MetalinkEntry::toFileEntry(fileEntries, metalinkEntries);
   Util::toStream(std::cout, fileEntries);
@@ -127,7 +127,7 @@ static void showMetalinkFile(const std::string& uri, const Option* op)
 #endif // ENABLE_METALINK
 
 #if defined ENABLE_BITTORRENT || defined ENABLE_METALINK
-static void showFiles(const std::deque<std::string>& uris, const Option* op)
+static void showFiles(const std::deque<std::string>& uris, const Option& op)
 {
   ProtocolDetector dt;
   for(std::deque<std::string>::const_iterator i = uris.begin();
@@ -210,7 +210,7 @@ DownloadResult::RESULT main(int argc, char* argv[])
 	showTorrentFile(op.get(PREF_TORRENT_FILE));
 	return exitStatus;
       } else {
-	createRequestGroupForBitTorrent(requestGroups, &op, args);
+	createRequestGroupForBitTorrent(requestGroups, op, args);
       }
     }
     else
@@ -218,22 +218,22 @@ DownloadResult::RESULT main(int argc, char* argv[])
 #ifdef ENABLE_METALINK
       if(!op.blank(PREF_METALINK_FILE)) {
 	if(op.get(PREF_SHOW_FILES) == V_TRUE) {
-	  showMetalinkFile(op.get(PREF_METALINK_FILE), &op);
+	  showMetalinkFile(op.get(PREF_METALINK_FILE), op);
 	  return exitStatus;
 	} else {
-	  createRequestGroupForMetalink(requestGroups, &op);
+	  createRequestGroupForMetalink(requestGroups, op);
 	}
       }
       else
 #endif // ENABLE_METALINK
 	if(!op.blank(PREF_INPUT_FILE)) {
-	  createRequestGroupForUriList(requestGroups, &op);
+	  createRequestGroupForUriList(requestGroups, op);
 #if defined ENABLE_BITTORRENT || defined ENABLE_METALINK
 	} else if(op.get(PREF_SHOW_FILES) == V_TRUE) {
-	  showFiles(args, &op);
+	  showFiles(args, op);
 #endif // ENABLE_METALINK || ENABLE_METALINK
 	} else {
-	  createRequestGroupForUri(requestGroups, &op, args);
+	  createRequestGroupForUri(requestGroups, op, args);
 	}
 
     if(requestGroups.empty()) {

+ 12 - 12
test/DownloadHelperTest.cc

@@ -73,7 +73,7 @@ void DownloadHelperTest::testCreateRequestGroupForUri()
   {
     std::deque<SharedHandle<RequestGroup> > result;
     
-    createRequestGroupForUri(result, &op, uris);
+    createRequestGroupForUri(result, op, uris);
     
     CPPUNIT_ASSERT_EQUAL((size_t)1, result.size());
     SharedHandle<RequestGroup> group = result[0];
@@ -93,7 +93,7 @@ void DownloadHelperTest::testCreateRequestGroupForUri()
   {
     std::deque<SharedHandle<RequestGroup> > result;
     
-    createRequestGroupForUri(result, &op, uris);
+    createRequestGroupForUri(result, op, uris);
     
     CPPUNIT_ASSERT_EQUAL((size_t)1, result.size());
     SharedHandle<RequestGroup> group = result[0];
@@ -112,7 +112,7 @@ void DownloadHelperTest::testCreateRequestGroupForUri()
   {
     std::deque<SharedHandle<RequestGroup> > result;
     
-    createRequestGroupForUri(result, &op, uris);
+    createRequestGroupForUri(result, op, uris);
     
     CPPUNIT_ASSERT_EQUAL((size_t)1, result.size());
     SharedHandle<RequestGroup> group = result[0];
@@ -128,7 +128,7 @@ void DownloadHelperTest::testCreateRequestGroupForUri()
   {
     std::deque<SharedHandle<RequestGroup> > result;
     
-    createRequestGroupForUri(result, &op, uris);
+    createRequestGroupForUri(result, op, uris);
     
     CPPUNIT_ASSERT_EQUAL((size_t)3, result.size());
 
@@ -164,7 +164,7 @@ void DownloadHelperTest::testCreateRequestGroupForUri_parameterized()
   {
     std::deque<SharedHandle<RequestGroup> > result;
     
-    createRequestGroupForUri(result, &op, uris);
+    createRequestGroupForUri(result, op, uris);
     
     CPPUNIT_ASSERT_EQUAL((size_t)1, result.size());
     SharedHandle<RequestGroup> group = result[0];
@@ -201,7 +201,7 @@ void DownloadHelperTest::testCreateRequestGroupForUri_BitTorrent()
   {
     std::deque<SharedHandle<RequestGroup> > result;
     
-    createRequestGroupForUri(result, &op, uris);
+    createRequestGroupForUri(result, op, uris);
     
     CPPUNIT_ASSERT_EQUAL((size_t)2, result.size());
     SharedHandle<RequestGroup> group = result[0];
@@ -251,7 +251,7 @@ void DownloadHelperTest::testCreateRequestGroupForUri_Metalink()
   {
     std::deque<SharedHandle<RequestGroup> > result;
     
-    createRequestGroupForUri(result, &op, uris);
+    createRequestGroupForUri(result, op, uris);
     
     // group1: http://alpha/file, ...
     // group2-7: 6 file entry in Metalink and 1 torrent file download
@@ -300,7 +300,7 @@ void DownloadHelperTest::testCreateRequestGroupForUriList()
 
   std::deque<SharedHandle<RequestGroup> > result;
   
-  createRequestGroupForUriList(result, &op);
+  createRequestGroupForUriList(result, op);
 
   CPPUNIT_ASSERT_EQUAL((size_t)2, result.size());
 
@@ -341,7 +341,7 @@ void DownloadHelperTest::testCreateRequestGroupForBitTorrent()
   {
     std::deque<SharedHandle<RequestGroup> > result;
   
-    createRequestGroupForBitTorrent(result, &op, auxURIs);
+    createRequestGroupForBitTorrent(result, op, auxURIs);
 
     CPPUNIT_ASSERT_EQUAL((size_t)1, result.size());
 
@@ -361,7 +361,7 @@ void DownloadHelperTest::testCreateRequestGroupForBitTorrent()
     // no URIs are given
     std::deque<SharedHandle<RequestGroup> > result;
     std::deque<std::string> emptyURIs;
-    createRequestGroupForBitTorrent(result, &op, emptyURIs);
+    createRequestGroupForBitTorrent(result, op, emptyURIs);
 
     CPPUNIT_ASSERT_EQUAL((size_t)1, result.size());
     SharedHandle<RequestGroup> group = result[0];
@@ -373,7 +373,7 @@ void DownloadHelperTest::testCreateRequestGroupForBitTorrent()
   {
     std::deque<SharedHandle<RequestGroup> > result;
   
-    createRequestGroupForBitTorrent(result, &op, auxURIs);
+    createRequestGroupForBitTorrent(result, op, auxURIs);
 
     // See --force-requencial is ignored
     CPPUNIT_ASSERT_EQUAL((size_t)1, result.size());
@@ -393,7 +393,7 @@ void DownloadHelperTest::testCreateRequestGroupForMetalink()
   {
     std::deque<SharedHandle<RequestGroup> > result;
   
-    createRequestGroupForMetalink(result, &op);
+    createRequestGroupForMetalink(result, op);
 
 #ifdef ENABLE_BITTORRENT
     CPPUNIT_ASSERT_EQUAL((size_t)6, result.size());