Jelajahi Sumber

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

	Changed method signature:
	MultiFileAllocationIterator::makeDiskWriterEntries
	* src/MultiFileAllocationIterator.cc
	* src/MultiFileAllocationIterator.h
Tatsuhiro Tsujikawa 17 tahun lalu
induk
melakukan
6ae07106d3
3 mengubah file dengan 40 tambahan dan 32 penghapusan
  1. 7 0
      ChangeLog
  2. 29 29
      src/MultiFileAllocationIterator.cc
  3. 4 3
      src/MultiFileAllocationIterator.h

+ 7 - 0
ChangeLog

@@ -1,3 +1,10 @@
+2008-05-12  Tatsuhiro Tsujikawa  <tujikawa at rednoah dot com>
+
+	Changed method signature:
+	MultiFileAllocationIterator::makeDiskWriterEntries
+	* src/MultiFileAllocationIterator.cc
+	* src/MultiFileAllocationIterator.h
+
 2008-05-12  Tatsuhiro Tsujikawa  <tujikawa at rednoah dot com>
 
 	Changed method sinature:

+ 29 - 29
src/MultiFileAllocationIterator.cc

@@ -42,10 +42,11 @@ namespace aria2 {
 
 MultiFileAllocationIterator::MultiFileAllocationIterator(MultiDiskAdaptor* diskAdaptor):
   _diskAdaptor(diskAdaptor),
-  _entries(makeDiskWriterEntries(diskAdaptor->diskWriterEntries,
-				 diskAdaptor->getPieceLength())),
   _offset(0)
-{}
+{
+  makeDiskWriterEntries(_entries, diskAdaptor->diskWriterEntries,
+			diskAdaptor->getPieceLength());
+}
 
 MultiFileAllocationIterator::~MultiFileAllocationIterator() {}
 
@@ -101,42 +102,41 @@ const DiskWriterEntries& MultiFileAllocationIterator::getDiskWriterEntries() con
   return _entries;
 }
 
-DiskWriterEntries MultiFileAllocationIterator::makeDiskWriterEntries(const DiskWriterEntries& srcEntries, size_t pieceLength) const
+void MultiFileAllocationIterator::makeDiskWriterEntries
+(std::deque<SharedHandle<DiskWriterEntry> >& dwEntries,
+ const DiskWriterEntries& srcEntries, size_t pieceLength) const
 {
   if(pieceLength == 0) {
-    DiskWriterEntries entries;
     for(DiskWriterEntries::const_iterator itr = srcEntries.begin(); itr != srcEntries.end(); ++itr) {
       if((*itr)->getFileEntry()->isRequested()) {
-	entries.push_back(*itr);
+	dwEntries.push_back(*itr);
       }
     }
-    return entries;
-  }
-  DiskWriterEntries temp(srcEntries);
-  {
-    SharedHandle<FileEntry> f(new FileEntry());
-    SharedHandle<DiskWriterEntry> e(new DiskWriterEntry(f));
-    temp.push_front(e);
-  }
-  DiskWriterEntries entries;
-  DiskWriterEntries::const_iterator done = temp.begin();
-  for(DiskWriterEntries::const_iterator itr = temp.begin()+1; itr != temp.end(); ++itr) {
-    const FileEntryHandle& fileEntry = (*itr)->getFileEntry();
-    if(!fileEntry->isRequested()) {
-      continue;
+  } else {
+    DiskWriterEntries temp(srcEntries);
+    {
+      SharedHandle<FileEntry> f(new FileEntry());
+      SharedHandle<DiskWriterEntry> e(new DiskWriterEntry(f));
+      temp.push_front(e);
     }
-    off_t pieceStartOffset = (fileEntry->getOffset()/pieceLength)*pieceLength;
-    for(DiskWriterEntries::const_iterator i = itr-1; i != done; --i) {
-      if((uint64_t)pieceStartOffset < (*i)->getFileEntry()->getOffset()+(*i)->getFileEntry()->getLength()) {
-	entries.push_back(*i);
-      } else {
-	break;
+    DiskWriterEntries::const_iterator done = temp.begin();
+    for(DiskWriterEntries::const_iterator itr = temp.begin()+1; itr != temp.end(); ++itr) {
+      const FileEntryHandle& fileEntry = (*itr)->getFileEntry();
+      if(!fileEntry->isRequested()) {
+	continue;
+      }
+      off_t pieceStartOffset = (fileEntry->getOffset()/pieceLength)*pieceLength;
+      for(DiskWriterEntries::const_iterator i = itr-1; i != done; --i) {
+	if((uint64_t)pieceStartOffset < (*i)->getFileEntry()->getOffset()+(*i)->getFileEntry()->getLength()) {
+	  dwEntries.push_back(*i);
+	} else {
+	  break;
+	}
       }
+      dwEntries.push_back(*itr);
+      done = itr;
     }
-    entries.push_back(*itr);
-    done = itr;
   }
-  return entries;
 }
 
 } // namespace aria2

+ 4 - 3
src/MultiFileAllocationIterator.h

@@ -52,9 +52,10 @@ private:
   SharedHandle<SingleFileAllocationIterator> _fileAllocationIterator;
   off_t _offset;
 
-  std::deque<SharedHandle<DiskWriterEntry> >
-  makeDiskWriterEntries(const std::deque<SharedHandle<DiskWriterEntry> >& srcEntries,
-			size_t pieceLength) const;
+  void makeDiskWriterEntries
+  (std::deque<SharedHandle<DiskWriterEntry> >& dwEntries,
+   const std::deque<SharedHandle<DiskWriterEntry> >& srcEntries,
+   size_t pieceLength) const;
 public:
   MultiFileAllocationIterator(MultiDiskAdaptor* diskAdaptor);