Browse Source

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

	Changed method signature:
	SegmentMan::getInFlightSegment
	* src/AbstractCommand.cc
	* src/SegmentMan.cc
	* src/SegmentMan.h
	* test/SegmentManTest.cc
Tatsuhiro Tsujikawa 17 years ago
parent
commit
82e0092b19
5 changed files with 20 additions and 10 deletions
  1. 9 0
      ChangeLog
  2. 2 1
      src/AbstractCommand.cc
  3. 3 4
      src/SegmentMan.cc
  4. 4 4
      src/SegmentMan.h
  5. 2 1
      test/SegmentManTest.cc

+ 9 - 0
ChangeLog

@@ -1,3 +1,12 @@
+2008-05-11  Tatsuhiro Tsujikawa  <tujikawa at rednoah dot com>
+
+	Changed method signature:
+	SegmentMan::getInFlightSegment
+	* src/AbstractCommand.cc
+	* src/SegmentMan.cc
+	* src/SegmentMan.h
+	* test/SegmentManTest.cc
+
 2008-05-11  Tatsuhiro Tsujikawa  <tujikawa at rednoah dot com>
 
 	Changed method signature:

+ 2 - 1
src/AbstractCommand.cc

@@ -125,7 +125,8 @@ bool AbstractCommand::execute() {
        (!checkSocketIsReadable && !checkSocketIsWritable && !nameResolverCheck)) {
       checkPoint.reset();
       if(!_requestGroup->getPieceStorage().isNull()) {
-	_segments = _requestGroup->getSegmentMan()->getInFlightSegment(cuid);
+	_segments.clear();
+	_requestGroup->getSegmentMan()->getInFlightSegment(_segments, cuid);
 	size_t maxSegments;
 	if(req->isPipeliningEnabled()) {
 	  maxSegments = e->option->getAsInt(PREF_MAX_HTTP_PIPELINING);

+ 3 - 4
src/SegmentMan.cc

@@ -147,17 +147,16 @@ SegmentEntryHandle SegmentMan::findSlowerSegmentEntry(const PeerStatHandle& peer
   return slowSegmentEntry;
 }
 
-Segments SegmentMan::getInFlightSegment(int32_t cuid)
+void SegmentMan::getInFlightSegment(std::deque<SharedHandle<Segment> >& segments,
+				    int32_t cuid)
 {
-  Segments temp;
   for(SegmentEntries::iterator itr = usedSegmentEntries.begin();
       itr != usedSegmentEntries.end(); ++itr) {
     const SegmentEntryHandle& segmentEntry = *itr;
     if(segmentEntry->cuid == cuid) {
-      temp.push_back(segmentEntry->segment);
+      segments.push_back(segmentEntry->segment);
     }
   }
-  return temp;
 }
 
 SegmentHandle SegmentMan::getSegment(int32_t cuid) {

+ 4 - 4
src/SegmentMan.h

@@ -110,11 +110,11 @@ public:
   bool downloadFinished() const;
 
   /**
-   * Returns a vacant segment.
-   * If there is no vacant segment, then returns a segment instance whose
-   * isNull call is true.
+   * Fill segments which are assigned to the command whose CUID is cuid.
+   * This function doesn't clear passed segments.
    */
-  std::deque<SharedHandle<Segment> > getInFlightSegment(int32_t cuid);
+  void getInFlightSegment(std::deque<SharedHandle<Segment> >& segments,
+			  int32_t cuid);
 
   SharedHandle<Segment> getSegment(int32_t cuid);
 

+ 2 - 1
test/SegmentManTest.cc

@@ -78,7 +78,8 @@ void SegmentManTest::testCompleteSegment()
   seg->updateWrittenLength(pieceLength);
   segmentMan.completeSegment(1, seg);
   
-  std::deque<SharedHandle<Segment> > segments = segmentMan.getInFlightSegment(1);
+  std::deque<SharedHandle<Segment> > segments;
+  segmentMan.getInFlightSegment(segments, 1);
   CPPUNIT_ASSERT_EQUAL((size_t)2, segments.size());
   CPPUNIT_ASSERT_EQUAL((size_t)0, segments[0]->getIndex());
   CPPUNIT_ASSERT_EQUAL((size_t)2, segments[1]->getIndex());