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

Fixed compile error without message digest support.
	* src/FileMetalinkParserState.cc
	* src/MetalinkParserController.{h, cc}
	* test/XML2SAXMetalinkProcessorTest.cc
	* test/MetalinkParserControllerTest.cc
pull/1/head
Tatsuhiro Tsujikawa 2007-12-05 14:54:53 +00:00
parent b75dbc4bbe
commit 0ec3727bf5
8 changed files with 83 additions and 18 deletions

View File

@ -1,3 +1,11 @@
2007-12-05 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
Fixed compile error without message digest support.
* src/FileMetalinkParserState.cc
* src/MetalinkParserController.{h, cc}
* test/XML2SAXMetalinkProcessorTest.cc
* test/MetalinkParserControllerTest.cc
2007-12-05 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
Enable direct I/O support in checksum checking.

View File

@ -49,8 +49,10 @@ void FileMetalinkParserState::beginElement(MetalinkParserStateMachine* stm,
stm->setLanguageState();
} else if(name == "os") {
stm->setOSState();
#ifdef ENABLE_MESSAGE_DIGEST
} else if(name == "verification") {
stm->setVerificationState();
#endif // ENABLE_MESSAGE_DIGEST
} else if(name == "resources") {
stm->setResourcesState();
int32_t maxConnections;

View File

@ -145,7 +145,8 @@ SRCS = Socket.h\
Peer.cc Peer.h\
BtRegistry.cc BtRegistry.h\
MultiFileAllocationIterator.cc MultiFileAllocationIterator.h\
PeerConnection.cc PeerConnection.h
PeerConnection.cc PeerConnection.h\
ByteArrayDiskWriter.cc ByteArrayDiskWriter.h
# debug_new.cpp
if ENABLE_MESSAGE_DIGEST
@ -174,7 +175,6 @@ SRCS += MetaEntry.h\
RequestSlot.cc RequestSlot.h\
Directory.cc Directory.h\
TrackerWatcherCommand.cc TrackerWatcherCommand.h\
ByteArrayDiskWriter.cc ByteArrayDiskWriter.h\
PeerChokeCommand.cc PeerChokeCommand.h\
SeedCriteria.h\
TimeSeedCriteria.h\

View File

@ -63,7 +63,6 @@ bin_PROGRAMS = aria2c$(EXEEXT)
@ENABLE_BITTORRENT_TRUE@ RequestSlot.cc RequestSlot.h\
@ENABLE_BITTORRENT_TRUE@ Directory.cc Directory.h\
@ENABLE_BITTORRENT_TRUE@ TrackerWatcherCommand.cc TrackerWatcherCommand.h\
@ENABLE_BITTORRENT_TRUE@ ByteArrayDiskWriter.cc ByteArrayDiskWriter.h\
@ENABLE_BITTORRENT_TRUE@ PeerChokeCommand.cc PeerChokeCommand.h\
@ENABLE_BITTORRENT_TRUE@ SeedCriteria.h\
@ENABLE_BITTORRENT_TRUE@ TimeSeedCriteria.h\
@ -291,7 +290,8 @@ am__libaria2c_a_SOURCES_DIST = Socket.h SocketCore.cc SocketCore.h \
MultiDiskAdaptor.cc MultiDiskAdaptor.h Peer.cc Peer.h \
BtRegistry.cc BtRegistry.h MultiFileAllocationIterator.cc \
MultiFileAllocationIterator.h PeerConnection.cc \
PeerConnection.h IteratableChunkChecksumValidator.cc \
PeerConnection.h ByteArrayDiskWriter.cc ByteArrayDiskWriter.h \
IteratableChunkChecksumValidator.cc \
IteratableChunkChecksumValidator.h \
IteratableChecksumValidator.cc IteratableChecksumValidator.h \
CheckIntegrityCommand.cc CheckIntegrityCommand.h \
@ -306,7 +306,6 @@ am__libaria2c_a_SOURCES_DIST = Socket.h SocketCore.cc SocketCore.h \
PeerInteractionCommand.h PeerListenCommand.cc \
PeerListenCommand.h RequestSlot.cc RequestSlot.h Directory.cc \
Directory.h TrackerWatcherCommand.cc TrackerWatcherCommand.h \
ByteArrayDiskWriter.cc ByteArrayDiskWriter.h \
PeerChokeCommand.cc PeerChokeCommand.h SeedCriteria.h \
TimeSeedCriteria.h ShareRatioSeedCriteria.h \
UnionSeedCriteria.h SeedCheckCommand.cc SeedCheckCommand.h \
@ -391,7 +390,6 @@ am__libaria2c_a_SOURCES_DIST = Socket.h SocketCore.cc SocketCore.h \
@ENABLE_BITTORRENT_TRUE@ RequestSlot.$(OBJEXT) \
@ENABLE_BITTORRENT_TRUE@ Directory.$(OBJEXT) \
@ENABLE_BITTORRENT_TRUE@ TrackerWatcherCommand.$(OBJEXT) \
@ENABLE_BITTORRENT_TRUE@ ByteArrayDiskWriter.$(OBJEXT) \
@ENABLE_BITTORRENT_TRUE@ PeerChokeCommand.$(OBJEXT) \
@ENABLE_BITTORRENT_TRUE@ SeedCheckCommand.$(OBJEXT) \
@ENABLE_BITTORRENT_TRUE@ DefaultPeerListProcessor.$(OBJEXT) \
@ -526,10 +524,11 @@ am__objects_12 = SocketCore.$(OBJEXT) Command.$(OBJEXT) \
DirectDiskAdaptor.$(OBJEXT) MultiDiskAdaptor.$(OBJEXT) \
Peer.$(OBJEXT) BtRegistry.$(OBJEXT) \
MultiFileAllocationIterator.$(OBJEXT) PeerConnection.$(OBJEXT) \
$(am__objects_1) $(am__objects_2) $(am__objects_3) \
$(am__objects_4) $(am__objects_5) $(am__objects_6) \
$(am__objects_7) $(am__objects_8) $(am__objects_9) \
$(am__objects_10) $(am__objects_11)
ByteArrayDiskWriter.$(OBJEXT) $(am__objects_1) \
$(am__objects_2) $(am__objects_3) $(am__objects_4) \
$(am__objects_5) $(am__objects_6) $(am__objects_7) \
$(am__objects_8) $(am__objects_9) $(am__objects_10) \
$(am__objects_11)
am_libaria2c_a_OBJECTS = $(am__objects_12)
libaria2c_a_OBJECTS = $(am_libaria2c_a_OBJECTS)
am__installdirs = "$(DESTDIR)$(bindir)"
@ -817,10 +816,11 @@ SRCS = Socket.h SocketCore.cc SocketCore.h Command.cc Command.h \
MultiDiskAdaptor.cc MultiDiskAdaptor.h Peer.cc Peer.h \
BtRegistry.cc BtRegistry.h MultiFileAllocationIterator.cc \
MultiFileAllocationIterator.h PeerConnection.cc \
PeerConnection.h $(am__append_1) $(am__append_2) \
$(am__append_3) $(am__append_4) $(am__append_5) \
$(am__append_6) $(am__append_7) $(am__append_8) \
$(am__append_9) $(am__append_10) $(am__append_11)
PeerConnection.h ByteArrayDiskWriter.cc ByteArrayDiskWriter.h \
$(am__append_1) $(am__append_2) $(am__append_3) \
$(am__append_4) $(am__append_5) $(am__append_6) \
$(am__append_7) $(am__append_8) $(am__append_9) \
$(am__append_10) $(am__append_11)
noinst_LIBRARIES = libaria2c.a
libaria2c_a_SOURCES = $(SRCS)
aria2c_LDADD = libaria2c.a @LIBINTL@ @ALLOCA@ @LIBGNUTLS_LIBS@\

View File

@ -36,15 +36,21 @@
#include "Metalinker.h"
#include "MetalinkEntry.h"
#include "MetalinkResource.h"
#include "Checksum.h"
#include "ChunkChecksum.h"
#ifdef ENABLE_MESSAGE_DIGEST
# include "Checksum.h"
# include "ChunkChecksum.h"
#endif // ENABLE_MESSAGE_DIGEST
MetalinkParserController::MetalinkParserController():
_metalinker(new Metalinker()),
_tEntry(0),
_tResource(0),
_tResource(0)
#ifdef ENABLE_MESSAGE_DIGEST
,
_tChecksum(0),
_tChunkChecksum(0) {}
_tChunkChecksum(0)
#endif // ENABLE_MESSAGE_DIGEST
{}
MetalinkParserController::~MetalinkParserController() {}
@ -57,8 +63,10 @@ void MetalinkParserController::newEntryTransaction()
{
_tEntry = new MetalinkEntry();
_tResource = 0;
#ifdef ENABLE_MESSAGE_DIGEST
_tChecksum = 0;
_tChunkChecksum = 0;
#endif // ENABLE_MESSAGE_DIGEST
}
void MetalinkParserController::setFileNameOfEntry(const string& filename)
@ -211,14 +219,17 @@ void MetalinkParserController::cancelResourceTransaction()
void MetalinkParserController::newChecksumTransaction()
{
#ifdef ENABLE_MESSAGE_DIGEST
if(_tEntry.isNull()) {
return;
}
_tChecksum = new Checksum();
#endif // ENABLE_MESSAGE_DIGEST
}
void MetalinkParserController::setTypeOfChecksum(const string& type)
{
#ifdef ENABLE_MESSAGE_DIGEST
if(_tChecksum.isNull()) {
return;
}
@ -227,18 +238,22 @@ void MetalinkParserController::setTypeOfChecksum(const string& type)
} else {
cancelChecksumTransaction();
}
#endif // ENABLE_MESSAGE_DIGEST
}
void MetalinkParserController::setHashOfChecksum(const string& md)
{
#ifdef ENABLE_MESSAGE_DIGEST
if(_tChecksum.isNull()) {
return;
}
_tChecksum->setMessageDigest(md);
#endif // ENABLE_MESSAGE_DIGEST
}
void MetalinkParserController::commitChecksumTransaction()
{
#ifdef ENABLE_MESSAGE_DIGEST
if(_tChecksum.isNull()) {
return;
}
@ -246,24 +261,30 @@ void MetalinkParserController::commitChecksumTransaction()
_tEntry->checksum = _tChecksum;
}
_tChecksum = 0;
#endif // ENABLE_MESSAGE_DIGEST
}
void MetalinkParserController::cancelChecksumTransaction()
{
#ifdef ENABLE_MESSAGE_DIGEST
_tChecksum = 0;
#endif // ENABLE_MESSAGE_DIGEST
}
void MetalinkParserController::newChunkChecksumTransaction()
{
#ifdef ENABLE_MESSAGE_DIGEST
if(_tEntry.isNull()) {
return;
}
_tChunkChecksum = new ChunkChecksum();
_tempChunkChecksums.clear();
#endif // ENABLE_MESSAGE_DIGEST
}
void MetalinkParserController::setTypeOfChunkChecksum(const string& type)
{
#ifdef ENABLE_MESSAGE_DIGEST
if(_tChunkChecksum.isNull()) {
return;
}
@ -272,10 +293,12 @@ void MetalinkParserController::setTypeOfChunkChecksum(const string& type)
} else {
cancelChunkChecksumTransaction();
}
#endif // ENABLE_MESSAGE_DIGEST
}
void MetalinkParserController::setLengthOfChunkChecksum(int32_t length)
{
#ifdef ENABLE_MESSAGE_DIGEST
if(_tChunkChecksum.isNull()) {
return;
}
@ -284,38 +307,47 @@ void MetalinkParserController::setLengthOfChunkChecksum(int32_t length)
} else {
cancelChunkChecksumTransaction();
}
#endif // ENABLE_MESSAGE_DIGEST
}
void MetalinkParserController::addHashOfChunkChecksum(int32_t order, const string& md)
{
#ifdef ENABLE_MESSAGE_DIGEST
if(_tChunkChecksum.isNull()) {
return;
}
_tempChunkChecksums.push_back(pair<int32_t, string>(order, md));
#endif // ENABLE_MESSAGE_DIGEST
}
void MetalinkParserController::createNewHashOfChunkChecksum(int32_t order)
{
#ifdef ENABLE_MESSAGE_DIGEST
if(_tChunkChecksum.isNull()) {
return;
}
_tempHashPair.first = order;
#endif // ENABLE_MESSAGE_DIGEST
}
void MetalinkParserController::setMessageDigestOfChunkChecksum(const string& md)
{
#ifdef ENABLE_MESSAGE_DIGEST
if(_tChunkChecksum.isNull()) {
return;
}
_tempHashPair.second = md;
#endif // ENABLE_MESSAGE_DIGEST
}
void MetalinkParserController::addHashOfChunkChecksum()
{
#ifdef ENABLE_MESSAGE_DIGEST
if(_tChunkChecksum.isNull()) {
return;
}
_tempChunkChecksums.push_back(_tempHashPair);
#endif // ENABLE_MESSAGE_DIGEST
}
bool firstAsc(const pair<int32_t, string>& p1, const pair<int32_t, string>& p2)
@ -338,6 +370,7 @@ public:
void MetalinkParserController::commitChunkChecksumTransaction()
{
#ifdef ENABLE_MESSAGE_DIGEST
if(_tChunkChecksum.isNull()) {
return;
}
@ -350,11 +383,14 @@ void MetalinkParserController::commitChunkChecksumTransaction()
_tEntry->chunkChecksum = _tChunkChecksum;
}
_tChunkChecksum = 0;
#endif // ENABLE_MESSAGE_DIGEST
}
void MetalinkParserController::cancelChunkChecksumTransaction()
{
#ifdef ENABLE_MESSAGE_DIGEST
_tChunkChecksum = 0;
#endif // ENABLE_MESSAGE_DIGEST
}

View File

@ -43,10 +43,13 @@ class MetalinkEntry;
typedef SharedHandle<MetalinkEntry> MetalinkEntryHandle;
class MetalinkResource;
typedef SharedHandle<MetalinkResource> MetalinkResourceHandle;
#ifdef ENABLE_MESSAGE_DIGEST
class Checksum;
typedef SharedHandle<Checksum> ChecksumHandle;
class ChunkChecksum;
typedef SharedHandle<ChunkChecksum> ChunkChecksumHandle;
#endif // ENABLE_MESSAGE_DIGEST
class MetalinkParserController {
private:
@ -56,6 +59,7 @@ private:
MetalinkResourceHandle _tResource;
#ifdef ENABLE_MESSAGE_DIGEST
ChecksumHandle _tChecksum;
ChunkChecksumHandle _tChunkChecksum;
@ -63,6 +67,7 @@ private:
deque<pair<int32_t, string> > _tempChunkChecksums;
pair<int32_t, string> _tempHashPair;
#endif // ENABLE_MESSAGE_DIGEST
public:
MetalinkParserController();

View File

@ -2,8 +2,10 @@
#include "Metalinker.h"
#include "MetalinkEntry.h"
#include "MetalinkResource.h"
#ifdef ENABLE_MESSAGE_DIGEST
#include "Checksum.h"
#include "ChunkChecksum.h"
#endif // ENABLE_MESSAGE_DIGEST
#include <cppunit/extensions/HelperMacros.h>
class MetalinkParserControllerTest:public CppUnit::TestFixture {
@ -11,8 +13,10 @@ class MetalinkParserControllerTest:public CppUnit::TestFixture {
CPPUNIT_TEST_SUITE(MetalinkParserControllerTest);
CPPUNIT_TEST(testEntryTransaction);
CPPUNIT_TEST(testResourceTransaction);
#ifdef ENABLE_MESSAGE_DIGEST
CPPUNIT_TEST(testChecksumTransaction);
CPPUNIT_TEST(testChunkChecksumTransaction);
#endif // ENABLE_MESSAGE_DIGEST
CPPUNIT_TEST_SUITE_END();
private:
@ -24,8 +28,10 @@ public:
void testEntryTransaction();
void testResourceTransaction();
#ifdef ENABLE_MESSAGE_DIGEST
void testChecksumTransaction();
void testChunkChecksumTransaction();
#endif // ENABLE_MESSAGE_DIGEST
};
@ -86,6 +92,7 @@ void MetalinkParserControllerTest::testResourceTransaction()
CPPUNIT_ASSERT_EQUAL((size_t)1, ctrl.getResult()->entries.front()->resources.size());
}
#ifdef ENABLE_MESSAGE_DIGEST
void MetalinkParserControllerTest::testChecksumTransaction()
{
MetalinkParserController ctrl;
@ -138,3 +145,4 @@ void MetalinkParserControllerTest::testChunkChecksumTransaction()
ctrl.commitEntryTransaction();
CPPUNIT_ASSERT(ctrl.getResult()->entries[1]->chunkChecksum.isNull());
}
#endif // ENABLE_MESSAGE_DIGEST

View File

@ -17,11 +17,13 @@ class XML2SAXMetalinkProcessorTest:public CppUnit::TestFixture {
CPPUNIT_TEST(testNoName);
CPPUNIT_TEST(testBadURLPrefs);
CPPUNIT_TEST(testBadURLMaxConn);
#ifdef ENABLE_MESSAGE_DIGEST
CPPUNIT_TEST(testUnsupportedType);
CPPUNIT_TEST(testMultiplePieces);
CPPUNIT_TEST(testBadPieceNo);
CPPUNIT_TEST(testBadPieceLength);
CPPUNIT_TEST(testUnsupportedType_piece);
#endif // ENABLE_MESSAGE_DIGEST
CPPUNIT_TEST_SUITE_END();
private:
@ -42,11 +44,13 @@ public:
void testNoName();
void testBadURLPrefs();
void testBadURLMaxConn();
#ifdef ENABLE_MESSAGE_DIGEST
void testUnsupportedType();
void testMultiplePieces();
void testBadPieceNo();
void testBadPieceLength();
void testUnsupportedType_piece();
#endif // ENABLE_MESSAGE_DIGEST
};
@ -347,6 +351,7 @@ void XML2SAXMetalinkProcessorTest::testBadURLMaxConn()
}
}
#ifdef ENABLE_MESSAGE_DIGEST
void XML2SAXMetalinkProcessorTest::testUnsupportedType()
{
XML2SAXMetalinkProcessor proc;
@ -509,3 +514,4 @@ void XML2SAXMetalinkProcessorTest::testUnsupportedType_piece()
delete e;
}
}
#endif // ENABLE_MESSAGE_DIGEST