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
pull/1/head
Tatsuhiro Tsujikawa 2010-06-26 13:01:52 +00:00
parent 8a619ab9b9
commit 9d0eb8c08b
6 changed files with 18 additions and 36 deletions

View File

@ -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

View File

@ -83,11 +83,6 @@ public:
return writtenLength_;
}
virtual size_t getOverflowLength() const
{
return 0;
}
virtual void updateWrittenLength(size_t bytes);
#ifdef ENABLE_MESSAGE_DIGEST

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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