mirror of https://github.com/aria2/aria2
				
				
				
			2010-06-26 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Removed unused getOverflow(). Added assertion in PiecedSegment::updateWrittenLength() to check updated written length does not exceed piece length. * src/GrowSegment.h * src/PiecedSegment.cc * src/PiecedSegment.h * src/Segment.h * test/SegmentTest.ccpull/1/head
							parent
							
								
									8a619ab9b9
								
							
						
					
					
						commit
						9d0eb8c08b
					
				
							
								
								
									
										11
									
								
								ChangeLog
								
								
								
								
							
							
						
						
									
										11
									
								
								ChangeLog
								
								
								
								
							| 
						 | 
				
			
			@ -1,3 +1,14 @@
 | 
			
		|||
2010-06-26  Tatsuhiro Tsujikawa  <t-tujikawa@users.sourceforge.net>
 | 
			
		||||
 | 
			
		||||
	Removed unused getOverflow(). Added assertion in
 | 
			
		||||
	PiecedSegment::updateWrittenLength() to check updated written
 | 
			
		||||
	length does not exceed piece length.
 | 
			
		||||
	* src/GrowSegment.h
 | 
			
		||||
	* src/PiecedSegment.cc
 | 
			
		||||
	* src/PiecedSegment.h
 | 
			
		||||
	* src/Segment.h
 | 
			
		||||
	* test/SegmentTest.cc
 | 
			
		||||
 | 
			
		||||
2010-06-26  Tatsuhiro Tsujikawa  <t-tujikawa@users.sourceforge.net>
 | 
			
		||||
 | 
			
		||||
	Return null if written length > 0 even if SegmentEntry->cuid
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -83,11 +83,6 @@ public:
 | 
			
		|||
    return writtenLength_;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  virtual size_t getOverflowLength() const
 | 
			
		||||
  {
 | 
			
		||||
    return 0;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  virtual void updateWrittenLength(size_t bytes);
 | 
			
		||||
 | 
			
		||||
#ifdef ENABLE_MESSAGE_DIGEST
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -40,7 +40,7 @@ namespace aria2 {
 | 
			
		|||
 | 
			
		||||
PiecedSegment::PiecedSegment
 | 
			
		||||
(size_t pieceLength, const SharedHandle<Piece>& piece):
 | 
			
		||||
  pieceLength_(pieceLength), overflowLength_(0), piece_(piece)
 | 
			
		||||
  pieceLength_(pieceLength), piece_(piece)
 | 
			
		||||
{
 | 
			
		||||
  size_t index;
 | 
			
		||||
  bool t = piece_->getFirstMissingBlockIndexWithoutLock(index);
 | 
			
		||||
| 
						 | 
				
			
			@ -78,10 +78,7 @@ size_t PiecedSegment::getLength() const
 | 
			
		|||
void PiecedSegment::updateWrittenLength(size_t bytes)
 | 
			
		||||
{
 | 
			
		||||
  size_t newWrittenLength = writtenLength_+bytes;
 | 
			
		||||
  if(newWrittenLength > piece_->getLength()) {
 | 
			
		||||
    overflowLength_ = newWrittenLength-piece_->getLength();
 | 
			
		||||
    newWrittenLength = piece_->getLength();
 | 
			
		||||
  }
 | 
			
		||||
  assert(newWrittenLength <= piece_->getLength());
 | 
			
		||||
  for(size_t i = writtenLength_/piece_->getBlockLength(),
 | 
			
		||||
        end = newWrittenLength/piece_->getBlockLength(); i < end; ++i) {
 | 
			
		||||
    piece_->completeBlock(i);
 | 
			
		||||
| 
						 | 
				
			
			@ -115,7 +112,6 @@ std::string PiecedSegment::getHashString()
 | 
			
		|||
void PiecedSegment::clear()
 | 
			
		||||
{
 | 
			
		||||
  writtenLength_ = 0;
 | 
			
		||||
  overflowLength_ = 0;
 | 
			
		||||
  piece_->clearAllBlock();
 | 
			
		||||
 | 
			
		||||
#ifdef ENABLE_MESSAGE_DIGEST
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -46,7 +46,6 @@ private:
 | 
			
		|||
   * The last piece likely have shorter length than the other length.
 | 
			
		||||
   */
 | 
			
		||||
  size_t pieceLength_;
 | 
			
		||||
  size_t overflowLength_;
 | 
			
		||||
  SharedHandle<Piece> piece_;
 | 
			
		||||
  size_t writtenLength_;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -75,11 +74,6 @@ public:
 | 
			
		|||
    return writtenLength_;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  virtual size_t getOverflowLength() const
 | 
			
		||||
  {
 | 
			
		||||
    return overflowLength_;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  virtual void updateWrittenLength(size_t bytes);
 | 
			
		||||
 | 
			
		||||
#ifdef ENABLE_MESSAGE_DIGEST
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -65,8 +65,6 @@ public:
 | 
			
		|||
 | 
			
		||||
  virtual size_t getWrittenLength() const = 0;
 | 
			
		||||
 | 
			
		||||
  virtual size_t getOverflowLength() const = 0;
 | 
			
		||||
 | 
			
		||||
  virtual void updateWrittenLength(size_t bytes) = 0;
 | 
			
		||||
 | 
			
		||||
#ifdef ENABLE_MESSAGE_DIGEST
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,14 +1,15 @@
 | 
			
		|||
#include "PiecedSegment.h"
 | 
			
		||||
#include "Piece.h"
 | 
			
		||||
 | 
			
		||||
#include <cppunit/extensions/HelperMacros.h>
 | 
			
		||||
 | 
			
		||||
#include "Piece.h"
 | 
			
		||||
 | 
			
		||||
namespace aria2 {
 | 
			
		||||
 | 
			
		||||
class SegmentTest : public CppUnit::TestFixture {
 | 
			
		||||
 | 
			
		||||
  CPPUNIT_TEST_SUITE(SegmentTest);
 | 
			
		||||
  CPPUNIT_TEST(testUpdateWrittenLength);
 | 
			
		||||
  CPPUNIT_TEST(testUpdateWrittenLength_overflow);
 | 
			
		||||
  CPPUNIT_TEST(testUpdateWrittenLength_lastPiece);
 | 
			
		||||
  CPPUNIT_TEST(testUpdateWrittenLength_incompleteLastPiece);
 | 
			
		||||
  CPPUNIT_TEST(testClear);
 | 
			
		||||
| 
						 | 
				
			
			@ -19,7 +20,6 @@ public:
 | 
			
		|||
  void setUp() {}
 | 
			
		||||
 | 
			
		||||
  void testUpdateWrittenLength();
 | 
			
		||||
  void testUpdateWrittenLength_overflow();
 | 
			
		||||
  void testUpdateWrittenLength_lastPiece();
 | 
			
		||||
  void testUpdateWrittenLength_incompleteLastPiece();
 | 
			
		||||
  void testClear();
 | 
			
		||||
| 
						 | 
				
			
			@ -42,22 +42,12 @@ void SegmentTest::testUpdateWrittenLength()
 | 
			
		|||
  CPPUNIT_ASSERT(p->pieceComplete());
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void SegmentTest::testUpdateWrittenLength_overflow()
 | 
			
		||||
{
 | 
			
		||||
  SharedHandle<Piece> p(new Piece(0, 16*1024*10));
 | 
			
		||||
  PiecedSegment s(16*1024*10, p);
 | 
			
		||||
 | 
			
		||||
  s.updateWrittenLength(16*1024*11);
 | 
			
		||||
  CPPUNIT_ASSERT(p->pieceComplete());
 | 
			
		||||
  CPPUNIT_ASSERT_EQUAL((size_t)16*1024, s.getOverflowLength());
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void SegmentTest::testUpdateWrittenLength_lastPiece()
 | 
			
		||||
{
 | 
			
		||||
  SharedHandle<Piece> p(new Piece(0, 16*1024*9+1));
 | 
			
		||||
  PiecedSegment s(16*1024*10, p);
 | 
			
		||||
 | 
			
		||||
  s.updateWrittenLength(16*1024*10);
 | 
			
		||||
  s.updateWrittenLength(p->getLength());
 | 
			
		||||
  CPPUNIT_ASSERT(p->pieceComplete());
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -76,12 +66,10 @@ void SegmentTest::testClear()
 | 
			
		|||
{
 | 
			
		||||
  SharedHandle<Piece> p(new Piece(0, 16*1024*10));
 | 
			
		||||
  PiecedSegment s(16*1024*10, p);
 | 
			
		||||
  s.updateWrittenLength(16*1024*11);
 | 
			
		||||
  s.updateWrittenLength(16*1024*10);
 | 
			
		||||
  CPPUNIT_ASSERT_EQUAL((size_t)16*1024*10, s.getWrittenLength());
 | 
			
		||||
  CPPUNIT_ASSERT_EQUAL((size_t)16*1024, s.getOverflowLength());
 | 
			
		||||
  s.clear();
 | 
			
		||||
  CPPUNIT_ASSERT_EQUAL((size_t)0, s.getWrittenLength());
 | 
			
		||||
  CPPUNIT_ASSERT_EQUAL((size_t)0, s.getOverflowLength());
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
} // namespace aria2
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue