Procházet zdrojové kódy

2008-05-19 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>

	Returns const reference:
	DownloadContext::getPieceHash, DownloadContext::getName,
	DownloadContext::getPieceHashAlgo, DownloadContext::getDir,
	BtContext::getInfoHashAsString,
	* src/BtContext.h
	* src/DefaultBtContext.cc
	* src/DefaultBtContext.h
	* src/DownloadContext.h
	* src/SingleFileDownloadContext.h
	* test/MockBtContext.h
Tatsuhiro Tsujikawa před 17 roky
rodič
revize
ff6b5ecc9c

+ 13 - 0
ChangeLog

@@ -1,3 +1,16 @@
+2008-05-19  Tatsuhiro Tsujikawa  <tujikawa at rednoah dot com>
+
+	Returns const reference:
+	DownloadContext::getPieceHash, DownloadContext::getName,
+	DownloadContext::getPieceHashAlgo, DownloadContext::getDir,
+	BtContext::getInfoHashAsString,
+	* src/BtContext.h
+	* src/DefaultBtContext.cc
+	* src/DefaultBtContext.h
+	* src/DownloadContext.h
+	* src/SingleFileDownloadContext.h
+	* test/MockBtContext.h
+
 2008-05-19  Tatsuhiro Tsujikawa  <tujikawa at rednoah dot com>
 
 	* src/RequestGroup.h (getDir): Removed.

+ 1 - 1
src/BtContext.h

@@ -56,7 +56,7 @@ public:
 
   virtual size_t getInfoHashLength() const = 0;
 
-  virtual std::string getInfoHashAsString() const = 0;
+  virtual const std::string& getInfoHashAsString() const = 0;
 
   virtual std::deque<SharedHandle<AnnounceTier> >
   getAnnounceTiers() const = 0;

+ 8 - 3
src/DefaultBtContext.cc

@@ -84,7 +84,7 @@ size_t DefaultBtContext::getInfoHashLength() const {
   return INFO_HASH_LENGTH;
 }
 
-std::string DefaultBtContext::getInfoHashAsString() const {
+const std::string& DefaultBtContext::getInfoHashAsString() const {
   return infoHashString;
 }
 
@@ -369,7 +369,7 @@ void DefaultBtContext::processRootDictionary(const Dictionary* rootDic, const st
   }
 }
 
-std::string DefaultBtContext::getPieceHash(size_t index) const {
+const std::string& DefaultBtContext::getPieceHash(size_t index) const {
   if(index < numPieces) {
     return pieceHashes[index];
   } else {
@@ -389,11 +389,16 @@ FileEntries DefaultBtContext::getFileEntries() const {
   return fileEntries;
 }
 
+const std::string& DefaultBtContext::getPieceHashAlgo() const
+{
+  return MessageDigestContext::SHA1;
+}
+
 AnnounceTiers DefaultBtContext::getAnnounceTiers() const {
   return announceTiers;
 }
 
-std::string DefaultBtContext::getName() const {
+const std::string& DefaultBtContext::getName() const {
   return name;
 }
 

+ 4 - 7
src/DefaultBtContext.h

@@ -96,9 +96,9 @@ private:
 
   virtual size_t getInfoHashLength() const;
 
-  virtual std::string getInfoHashAsString() const;
+  virtual const std::string& getInfoHashAsString() const;
 
-  virtual std::string getPieceHash(size_t index) const;
+  virtual const std::string& getPieceHash(size_t index) const;
 
   virtual const std::deque<std::string>& getPieceHashes() const
   {
@@ -111,10 +111,7 @@ private:
 
   virtual std::deque<SharedHandle<FileEntry> > getFileEntries() const;
 
-  virtual std::string getPieceHashAlgo() const
-  {
-    return "sha1";
-  }
+  virtual const std::string& getPieceHashAlgo() const;
 
   virtual std::deque<SharedHandle<AnnounceTier> > getAnnounceTiers() const;
 
@@ -129,7 +126,7 @@ private:
 		   context.size(), defaultName);
   }
 
-  virtual std::string getName() const;
+  virtual const std::string& getName() const;
 
   virtual size_t getPieceLength() const;
   

+ 4 - 4
src/DownloadContext.h

@@ -60,7 +60,7 @@ public:
     MULTI
   };
 
-  virtual std::string getPieceHash(size_t index) const = 0;
+  virtual const std::string& getPieceHash(size_t index) const = 0;
   
   virtual const std::deque<std::string>& getPieceHashes() const = 0;
 
@@ -70,13 +70,13 @@ public:
 
   virtual std::deque<SharedHandle<FileEntry> > getFileEntries() const = 0;
 
-  virtual std::string getName() const = 0;
+  virtual const std::string& getName() const = 0;
   
   virtual size_t getPieceLength() const = 0;
 
   virtual size_t getNumPieces() const = 0;
 
-  virtual std::string getPieceHashAlgo() const = 0;
+  virtual const std::string& getPieceHashAlgo() const = 0;
 
   /**
    * Returns an actual file path.
@@ -88,7 +88,7 @@ public:
    */
   virtual std::string getActualBasePath() const = 0;
 
-  std::string getDir() const
+  const std::string& getDir() const
   {
     return _dir;
   }

+ 3 - 3
src/SingleFileDownloadContext.h

@@ -75,7 +75,7 @@ public:
 
   virtual ~SingleFileDownloadContext() {}
 
-  virtual std::string getPieceHash(size_t index) const
+  virtual const std::string& getPieceHash(size_t index) const
   {
     if(index < _pieceHashes.size()) {
       return _pieceHashes[index];
@@ -95,7 +95,7 @@ public:
 
   virtual std::deque<SharedHandle<FileEntry> > getFileEntries() const;
 
-  virtual std::string getName() const
+  virtual const std::string& getName() const
   {
     return _filename;
   }
@@ -109,7 +109,7 @@ public:
 
   virtual std::string getActualBasePath() const;
 
-  virtual std::string getPieceHashAlgo() const
+  virtual const std::string& getPieceHashAlgo() const
   {
     return _pieceHashAlgo;
   }

+ 9 - 6
test/MockBtContext.h

@@ -4,6 +4,7 @@
 #include "BtContext.h"
 #include "Util.h"
 #include "AnnounceTier.h"
+#include "messageDigest.h"
 #include <cstring>
 
 namespace aria2 {
@@ -11,6 +12,7 @@ namespace aria2 {
 class MockBtContext : public BtContext  {
 private:
   unsigned char infoHash[20];
+  std::string _infoHashString;
   std::deque<std::string> pieceHashes;
   uint64_t totalLength;
   FILE_MODE fileMode;
@@ -35,17 +37,18 @@ public:
 
   void setInfoHash(const unsigned char* infoHash) {
     memcpy(this->infoHash, infoHash, sizeof(this->infoHash));
+    _infoHashString = Util::toHex(this->infoHash, sizeof(this->infoHash));
   }
 
   virtual size_t getInfoHashLength() const {
     return sizeof(infoHash);
   }
 
-  virtual std::string getInfoHashAsString() const {
-    return Util::toHex(infoHash, sizeof(infoHash));
+  virtual const std::string& getInfoHashAsString() const {
+    return _infoHashString;
   }
 
-  virtual std::string getPieceHash(size_t index) const {
+  virtual const std::string& getPieceHash(size_t index) const {
     return pieceHashes.at(index);
   }
   
@@ -91,7 +94,7 @@ public:
 
   virtual void load(const std::string& torrentFile) {}
 
-  virtual std::string getName() const {
+  virtual const std::string& getName() const {
     return name;
   }
 
@@ -134,9 +137,9 @@ public:
     this->fastSet = fastSet;
   }
 
-  virtual std::string getPieceHashAlgo() const
+  virtual const std::string& getPieceHashAlgo() const
   {
-    return "sha1";
+    return MessageDigestContext::SHA1;
   }
 
   virtual std::string getActualBasePath() const