2006-04-06 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>

To print ETA:

	* src/TorrentDownloadEngine.cc (afterEachIteration): Added 
download
	completion handling when dealing with
	TorrentMan::isPartialDownloadingMode() == true.
	* src/TorrentDownloadEngine.h (onPartialDownloadingCompletes):
	New function.
	* src/TorrentConsoleDownloadEngine.h (startup): New variable.
	(sessionDownloadLength): New variable.
	(avgSpeed): New variable.
	(eta): New variable.
	* src/TorrentConsoleDownloadEngine.cc (initStatistics): 
Initialized
	new variables: eta, avgSpeed, startup.
	(calculateSpeed): Calculate average speed and ETA.
	(printStatistics): Added ETA.

	* src/Util.h (secfmt): New function.
	* src/Util.cc (secfmt): New function.
	
2006-04-05  Tatsuhiro Tsujikawa  <tujikawa at rednoah dot com>

	To detect "keep alive" flooding:

	* src/PeerInteractionCommand.h (keepAliveCount): New variable
	* src/PeerInteractionCommand.cc (Constructor): Initialized new
	variable: keepAliveCount.
	(detectMessageFlooding): Added "keep alive" flooding detection.
	(receiveMessage): Increase keepAliveCount when "keep alive" 
message
	received.
	
	To add the ability to download only specified files in 
multi-file
	torrent:

	* src/BitfieldMan.h (filterBitfield): New variable.
	(filterEnabled): New variable.
	(setFilterBit): New function.
	(enableFilter): New function.
	(disableFilter): New function.
	(isFilterEnabled): New function.
	(getFilteredTotalLength): New function.
	(getCompletedLength): New function.
	* src/BitfieldMan.cc (Constructor): Initialized new variable:
	filterBitfield, filterEnabled.
	(CopyConstructor): Added filterBitfield and filterEnabled.
	(operator==): Added filterBitfield and filterEnabled.
	(Destructor): Added filterBitfield.
	(getMissingIndex): Use filterBitfield.
	(getMissingUnusedIndex): Use filterBitfield.
	(getFirstMissingUnusedIndex): Use filterBitfield.
	(getFirstMissingUnusedIndex): Use filterBitfield.
	(getAllMissingIndexes): Use filterBitfield.
	(countMissingBlock): Use filterBitfield.
	(countBlock): Use filterBitfield.
	(setBitInternal): Added new argument on.
	(setUseBit): Use setBitInternal.
	(unsetUseBit): Use setBitInternal.
	(setBit): Use setBitInternal.
	(unsetBit): Use setBitInternal.
	(isAllBitSet): Use filterBitfield.
	(setFilterBit): New function.
	(addFilter): New function.
	(enableFilter): New function.
	(disableFilter): New function.
	(clearFilter): New function.
	(isFilterEnabled): New function.
	(getFilteredTotalLength): New function.
	(getCompletedLength): New function.

	* src/TorrentMan.h [FileEntry](Constructor): Updated signature.
	Initalized newly added variables.
	[FileEntry](offset): New variable.
	[FileEntry](extracted): New variable.
	[FileEntry](requested): New variable.
	(readFileEntry): New function.
	(option): New variable.
	(splitMultiFile): Removed const qualifier.
	(fixFilename): Removed const qualifier.
	(readFileEntryFromMetaInfoFile): New function.
	(finishPartialDownloadingMode): New function.
	(isPartialDownloadingMode): New function.
	(setFileEntriesToDownload): New function.
	(getCompletedLength): New function.
	(getPartialTotalLength): New function.
	* src/TorrentMan.cc (readFileEntry): New function.
	(setup): Use readFileEntry. If no-preallocation option is 
specified,
	use DefaultDiskWriter.
	(readFileEntryFromMetaInfoFile): New function.
	(fixFilename): Removed const qualifier.
	(splitMultiFile): Removed const qualifier.
	(setFileEntriesToDownload): New function.
	(isPartialDownloadingMode): New function.
	(finishPartialDownloadingMode): New function.
	(getCompletedLength): New function.
	(getPartialTotalLength): New function.
	
	* src/TorrentConsoleDownloadEngine.h 
(partialDownloadLengthDiff):
	New variable.
	(partialTotalLength): New variable.
	(downloadLength): New variable.
	(totalLength): New variable.
	* src/TorrentConsoleDownloadEngine.cc 
(onPartialDownloadingCompletes):
	Added log.
	(initStatistics): Initialized new variables: 
partialDownloadLengthDiff,
	partialTotalLength, downloadLength, totalLength.
	(calculate): Calculate downloadLength and totalLength.
	
	* src/prefs.h :New definition PREF_NO_PREALLOCATION

	* src/main.cc (addCommand): Changed argument signature.
	(main): Added new variable: args. Added new option 
"torrent-show-files"
	"no-preallocation". Usage is not updated yet.
	
2006-04-02  Tatsuhiro Tsujikawa  <tujikawa at rednoah dot com>

	* src/PeerMessage.cc (setBitfield): Fixed invalid memory 
de-allocation.
pull/1/head
Tatsuhiro Tsujikawa 2006-04-06 12:52:16 +00:00
parent 7228402dad
commit 9a52be6a29
25 changed files with 772 additions and 436 deletions

118
ChangeLog
View File

@ -1,3 +1,121 @@
2006-04-06 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
To print ETA:
* src/TorrentDownloadEngine.cc (afterEachIteration): Added download
completion handling when dealing with
TorrentMan::isPartialDownloadingMode() == true.
* src/TorrentDownloadEngine.h (onPartialDownloadingCompletes):
New function.
* src/TorrentConsoleDownloadEngine.h (startup): New variable.
(sessionDownloadLength): New variable.
(avgSpeed): New variable.
(eta): New variable.
* src/TorrentConsoleDownloadEngine.cc (initStatistics): Initialized
new variables: eta, avgSpeed, startup.
(calculateSpeed): Calculate average speed and ETA.
(printStatistics): Added ETA.
* src/Util.h (secfmt): New function.
* src/Util.cc (secfmt): New function.
2006-04-05 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
To detect "keep alive" flooding:
* src/PeerInteractionCommand.h (keepAliveCount): New variable
* src/PeerInteractionCommand.cc (Constructor): Initialized new
variable: keepAliveCount.
(detectMessageFlooding): Added "keep alive" flooding detection.
(receiveMessage): Increase keepAliveCount when "keep alive" message
received.
To add the ability to download only specified files in multi-file
torrent:
* src/BitfieldMan.h (filterBitfield): New variable.
(filterEnabled): New variable.
(setFilterBit): New function.
(enableFilter): New function.
(disableFilter): New function.
(isFilterEnabled): New function.
(getFilteredTotalLength): New function.
(getCompletedLength): New function.
* src/BitfieldMan.cc (Constructor): Initialized new variable:
filterBitfield, filterEnabled.
(CopyConstructor): Added filterBitfield and filterEnabled.
(operator==): Added filterBitfield and filterEnabled.
(Destructor): Added filterBitfield.
(getMissingIndex): Use filterBitfield.
(getMissingUnusedIndex): Use filterBitfield.
(getFirstMissingUnusedIndex): Use filterBitfield.
(getFirstMissingUnusedIndex): Use filterBitfield.
(getAllMissingIndexes): Use filterBitfield.
(countMissingBlock): Use filterBitfield.
(countBlock): Use filterBitfield.
(setBitInternal): Added new argument on.
(setUseBit): Use setBitInternal.
(unsetUseBit): Use setBitInternal.
(setBit): Use setBitInternal.
(unsetBit): Use setBitInternal.
(isAllBitSet): Use filterBitfield.
(setFilterBit): New function.
(addFilter): New function.
(enableFilter): New function.
(disableFilter): New function.
(clearFilter): New function.
(isFilterEnabled): New function.
(getFilteredTotalLength): New function.
(getCompletedLength): New function.
* src/TorrentMan.h [FileEntry](Constructor): Updated signature.
Initalized newly added variables.
[FileEntry](offset): New variable.
[FileEntry](extracted): New variable.
[FileEntry](requested): New variable.
(readFileEntry): New function.
(option): New variable.
(splitMultiFile): Removed const qualifier.
(fixFilename): Removed const qualifier.
(readFileEntryFromMetaInfoFile): New function.
(finishPartialDownloadingMode): New function.
(isPartialDownloadingMode): New function.
(setFileEntriesToDownload): New function.
(getCompletedLength): New function.
(getPartialTotalLength): New function.
* src/TorrentMan.cc (readFileEntry): New function.
(setup): Use readFileEntry. If no-preallocation option is specified,
use DefaultDiskWriter.
(readFileEntryFromMetaInfoFile): New function.
(fixFilename): Removed const qualifier.
(splitMultiFile): Removed const qualifier.
(setFileEntriesToDownload): New function.
(isPartialDownloadingMode): New function.
(finishPartialDownloadingMode): New function.
(getCompletedLength): New function.
(getPartialTotalLength): New function.
* src/TorrentConsoleDownloadEngine.h (partialDownloadLengthDiff):
New variable.
(partialTotalLength): New variable.
(downloadLength): New variable.
(totalLength): New variable.
* src/TorrentConsoleDownloadEngine.cc (onPartialDownloadingCompletes):
Added log.
(initStatistics): Initialized new variables: partialDownloadLengthDiff,
partialTotalLength, downloadLength, totalLength.
(calculate): Calculate downloadLength and totalLength.
* src/prefs.h :New definition PREF_NO_PREALLOCATION
* src/main.cc (addCommand): Changed argument signature.
(main): Added new variable: args. Added new option "torrent-show-files"
"no-preallocation". Usage is not updated yet.
2006-04-02 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
* src/PeerMessage.cc (setBitfield): Fixed invalid memory de-allocation.
2006-04-01 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
Attempt to add the ability to listing file entries in a .torrent file.

2
README
View File

@ -32,7 +32,7 @@ The executable is aria2c in src directory.
4. Dependency
-------------
In order to enable HTTPS support, you need GNU TLS or OpenSSL.
In order to enable BitTorrent support, you need GNUTLS+GCRYPT or OpenSSL.
In order to enable BitTorrent support, you need GNU TLS+libgcrypt or OpenSSL.
GNU TLS has precedence over OpenSSL if both libraries are installed.
If you prefer OpenSSL, run configure with "--without-gnutls".

View File

@ -23,7 +23,8 @@
#include <string.h>
BitfieldMan::BitfieldMan(int blockLength, long long int totalLength)
:blockLength(blockLength), totalLength(totalLength) {
:blockLength(blockLength), totalLength(totalLength), filterBitfield(0),
filterEnabled(false) {
if(blockLength > 0 && totalLength > 0) {
blocks = totalLength/blockLength+(totalLength%blockLength ? 1 : 0);
bitfieldLength = blocks/8+(blocks%8 ? 1 : 0);
@ -43,11 +44,21 @@ BitfieldMan::BitfieldMan(const BitfieldMan& bitfieldMan) {
useBitfield = new unsigned char[bitfieldLength];
memcpy(bitfield, bitfieldMan.bitfield, bitfieldLength);
memcpy(useBitfield, bitfieldMan.useBitfield, bitfieldLength);
filterEnabled = bitfieldMan.filterEnabled;
if(bitfieldMan.filterBitfield) {
filterBitfield = new unsigned char[bitfieldLength];
memcpy(filterBitfield, bitfieldMan.filterBitfield, bitfieldLength);
} else {
filterBitfield = 0;
}
}
BitfieldMan::~BitfieldMan() {
delete [] bitfield;
delete [] useBitfield;
if(filterBitfield) {
delete [] filterBitfield;
}
}
BitfieldMan& BitfieldMan::operator=(const BitfieldMan& bitfieldMan) {
@ -64,6 +75,17 @@ BitfieldMan& BitfieldMan::operator=(const BitfieldMan& bitfieldMan) {
bitfieldLength = bitfieldMan.bitfieldLength;
memcpy(bitfield, bitfieldMan.bitfield, bitfieldLength);
memcpy(useBitfield, bitfieldMan.useBitfield, bitfieldLength);
filterEnabled = bitfieldMan.filterEnabled;
if(bitfieldLength != bitfieldMan.bitfieldLength) {
delete [] filterBitfield;
filterBitfield = 0;
}
if(bitfieldMan.filterBitfield) {
if(!filterBitfield) {
filterBitfield = new unsigned char[bitfieldLength];
}
memcpy(filterBitfield, bitfieldMan.filterBitfield, bitfieldLength);
}
}
return *this;
}
@ -108,6 +130,9 @@ int BitfieldMan::getMissingIndex(const unsigned char* peerBitfield, int length)
unsigned char* tempBitfield = new unsigned char[bitfieldLength];
for(int i = 0; i < bitfieldLength; i++) {
tempBitfield[i] = peerBitfield[i] & ~bitfield[i];
if(filterEnabled) {
tempBitfield[i] &= filterBitfield[i];
}
}
int max = countSetBit(tempBitfield, bitfieldLength);
int index = getMissingIndexRandomly(tempBitfield, bitfieldLength, max);
@ -122,6 +147,9 @@ int BitfieldMan::getMissingUnusedIndex(const unsigned char* peerBitfield, int le
unsigned char* tempBitfield = new unsigned char[bitfieldLength];
for(int i = 0; i < bitfieldLength; i++) {
tempBitfield[i] = peerBitfield[i] & ~bitfield[i] & ~useBitfield[i];
if(filterEnabled) {
tempBitfield[i] &= filterBitfield[i];
}
}
int max = countSetBit(tempBitfield, bitfieldLength);
int index = getMissingIndexRandomly(tempBitfield, bitfieldLength, max);
@ -135,6 +163,9 @@ int BitfieldMan::getFirstMissingUnusedIndex(const unsigned char* peerBitfield, i
}
for(int i = 0; i < bitfieldLength; i++) {
unsigned char bit = peerBitfield[i] & ~bitfield[i] & ~useBitfield[i];
if(filterEnabled) {
bit &= filterBitfield[i];
}
for(int bs = 7; bs >= 0 && i*8+7-bs < blocks; bs--) {
unsigned char mask = 1 << bs;
if(bit & mask) {
@ -148,6 +179,9 @@ int BitfieldMan::getFirstMissingUnusedIndex(const unsigned char* peerBitfield, i
int BitfieldMan::getFirstMissingUnusedIndex() const {
for(int i = 0; i < bitfieldLength; i++) {
unsigned char bit = ~bitfield[i] & ~useBitfield[i];
if(filterEnabled) {
bit &= filterBitfield[i];
}
for(int bs = 7; bs >= 0 && i*8+7-bs < blocks; bs--) {
unsigned char mask = 1 << bs;
if(bit & mask) {
@ -162,6 +196,9 @@ BlockIndexes BitfieldMan::getAllMissingIndexes() const {
BlockIndexes missingIndexes;
for(int i = 0; i < bitfieldLength; i++) {
unsigned char bit = ~bitfield[i];
if(filterEnabled) {
bit &= filterBitfield[i];
}
for(int bs = 7; bs >= 0 && i*8+7-bs < blocks; bs--) {
unsigned char mask = 1 << bs;
if(bit & mask) {
@ -173,37 +210,64 @@ BlockIndexes BitfieldMan::getAllMissingIndexes() const {
}
int BitfieldMan::countMissingBlock() const {
if(filterEnabled) {
unsigned char* temp = new unsigned char[bitfieldLength];
for(int i = 0; i < bitfieldLength; i++) {
temp[i] = bitfield[i]&filterBitfield[i];
}
int count = countSetBit(filterBitfield, bitfieldLength)-
countSetBit(temp, bitfieldLength);
delete [] temp;
return count;
} else {
return blocks-countSetBit(bitfield, bitfieldLength);
}
}
int BitfieldMan::countBlock() const {
if(filterEnabled) {
return countSetBit(filterBitfield, bitfieldLength);
} else {
return blocks;
}
}
bool BitfieldMan::setBitInternal(unsigned char* bitfield, int index, bool on) {
if(blocks <= index) { return false; }
unsigned char mask = 128 >> index%8;
if(on) {
bitfield[index/8] |= mask;
} else {
bitfield[index/8] &= ~mask;
}
return true;
}
bool BitfieldMan::setUseBit(int index) {
if(blocks <= index) { return false; }
unsigned char mask = 128 >> index%8;
useBitfield[index/8] |= mask;
return true;
return setBitInternal(useBitfield, index, true);
}
bool BitfieldMan::unsetUseBit(int index) {
if(blocks <= index) { return false; }
unsigned char mask = 128 >> index%8;
useBitfield[index/8] &= ~mask;
return true;
return setBitInternal(useBitfield, index, false);
}
bool BitfieldMan::setBit(int index) {
if(blocks <= index) { return false; }
unsigned char mask = 128 >> index%8;
bitfield[index/8] |= mask;
return true;
return setBitInternal(bitfield, index, true);
}
bool BitfieldMan::unsetBit(int index) {
if(blocks <= index) { return false; }
unsigned char mask = 128 >> index%8;
bitfield[index/8] &= ~mask;
return true;
return setBitInternal(bitfield, index, false);
}
bool BitfieldMan::isAllBitSet() const {
if(filterEnabled) {
for(int i = 0; i < bitfieldLength-1; i++) {
if((bitfield[i]&filterBitfield[i]) != filterBitfield[i]) {
return false;
}
}
return true;
} else {
for(int i = 0; i < bitfieldLength-1; i++) {
if(bitfield[i] != 0xff) {
return false;
@ -215,6 +279,7 @@ bool BitfieldMan::isAllBitSet() const {
}
return true;
}
}
bool BitfieldMan::isBitSetInternal(const unsigned char* bitfield, int index) const {
if(blocks <= index) { return false; }
@ -248,3 +313,77 @@ void BitfieldMan::setAllBit() {
setBit(i);
}
}
bool BitfieldMan::setFilterBit(int index) {
return setBitInternal(filterBitfield, index, true);
}
void BitfieldMan::addFilter(long long int offset, long long int length) {
if(!filterBitfield) {
filterBitfield = new unsigned char[bitfieldLength];
memset(filterBitfield, 0, bitfieldLength);
}
int startBlock = offset/blockLength;
int endBlock = (offset+length-1)/blockLength;
for(int i = startBlock; i <= endBlock && i < blocks; i++) {
setFilterBit(i);
}
}
void BitfieldMan::enableFilter() {
filterEnabled = true;
}
void BitfieldMan::disableFilter() {
filterEnabled = false;
}
void BitfieldMan::clearFilter() {
if(filterBitfield) {
delete [] filterBitfield;
filterBitfield = 0;
}
filterEnabled = false;
}
bool BitfieldMan::isFilterEnabled() const {
return filterEnabled;
}
long long int BitfieldMan::getFilteredTotalLength() const {
if(!filterBitfield) {
return 0;
}
int filteredBlocks = countSetBit(filterBitfield, bitfieldLength);
if(filteredBlocks == 0) {
return 0;
}
if(isBitSetInternal(filterBitfield, blocks-1)) {
return ((long long int)filteredBlocks-1)*blockLength+getLastBlockLength();
} else {
return ((long long int)filteredBlocks)*blockLength;
}
}
long long int BitfieldMan::getCompletedLength() const {
unsigned char* temp = new unsigned char[bitfieldLength];
for(int i = 0; i < bitfieldLength; i++) {
temp[i] = bitfield[i];
if(filterEnabled) {
temp[i] &= filterBitfield[i];
}
}
int completedBlocks = countSetBit(temp, bitfieldLength);
long long int completedLength = 0;
if(completedBlocks == 0) {
completedLength = 0;
} else {
if(isBitSetInternal(temp, blocks-1)) {
completedLength = ((long long int)completedBlocks-1)*blockLength+getLastBlockLength();
} else {
completedLength = ((long long int)completedBlocks)*blockLength;
}
}
delete [] temp;
return completedLength;
}

View File

@ -33,12 +33,15 @@ private:
long long int totalLength;
unsigned char* bitfield;
unsigned char* useBitfield;
unsigned char* filterBitfield;
int bitfieldLength;
int blocks;
bool filterEnabled;
int countSetBit(const unsigned char* bitfield, int len) const;
int getMissingIndexRandomly(const unsigned char* bitfield, int len, int randMax) const;
bool isBitSetInternal(const unsigned char* bitfield, int index) const;
bool setBitInternal(unsigned char* bitfield, int index, bool on);
bool setFilterBit(int index);
public:
BitfieldMan(int blockLength, long long int totalLength);
BitfieldMan(const BitfieldMan& bitfieldMan);
@ -61,11 +64,29 @@ public:
}
long long int getTotalLength() const { return totalLength; }
/**
* affected by filter
*/
int getMissingIndex(const unsigned char* bitfield, int len) const;
/**
* affected by filter
*/
int getFirstMissingUnusedIndex(const unsigned char* bitfield, int len) const;
/**
* affected by filter
*/
int getFirstMissingUnusedIndex() const;
/**
* affected by filter
*/
int getMissingUnusedIndex(const unsigned char* bitfield, int len) const;
/**
* affected by filter
*/
BlockIndexes getAllMissingIndexes() const;
/**
* affected by filter
*/
int countMissingBlock() const;
bool setUseBit(int index);
bool unsetUseBit(int index);
@ -76,12 +97,18 @@ public:
bool isBitSet(int index) const;
bool isUseBitSet(int index) const;
/**
* affected by filter
*/
bool isAllBitSet() const;
const unsigned char* getBitfield() const { return bitfield; }
int getBitfieldLength() const { return bitfieldLength; }
int countBlock() const { return blocks; }
/**
* affected by filter
*/
int countBlock() const;
void setBitfield(const unsigned char* bitfield, int bitfieldLength);
@ -90,6 +117,15 @@ public:
void addFilter(long long int offset, long long int length);
void clearFilter();
void enableFilter();
void disableFilter();
bool isFilterEnabled() const;
long long int getFilteredTotalLength() const;
/**
* affected by filter
*/
long long int getCompletedLength() const;
};
#endif // _D_BITFIELD_MAN_H_

View File

@ -50,6 +50,7 @@ PeerInteractionCommand::PeerInteractionCommand(int cuid, Peer* peer,
freqCheckPoint.tv_usec = 0;
chokeUnchokeCount = 0;
haveCount = 0;
keepAliveCount = 0;
}
PeerInteractionCommand::~PeerInteractionCommand() {
@ -147,11 +148,13 @@ void PeerInteractionCommand::detectMessageFlooding() {
} else {
if(Util::difftv(now, freqCheckPoint) >= 5*1000000) {
if(chokeUnchokeCount*1.0/(Util::difftv(now, freqCheckPoint)/1000000) >= 0.4
|| haveCount*1.0/(Util::difftv(now, freqCheckPoint)/1000000) >= 20.0) {
|| haveCount*1.0/(Util::difftv(now, freqCheckPoint)/1000000) >= 20.0
|| keepAliveCount*1.0/(Util::difftv(now, freqCheckPoint)/1000000) >= 1.0) {
throw new DlAbortEx("flooding detected.");
} else {
chokeUnchokeCount = 0;
haveCount = 0;
keepAliveCount = 0;
freqCheckPoint = now;
}
}
@ -220,6 +223,7 @@ void PeerInteractionCommand::receiveMessage() {
try {
switch(message->getId()) {
case PeerMessage::KEEP_ALIVE:
keepAliveCount++;
break;
case PeerMessage::CHOKE:
if(!peer->peerChoking) {

View File

@ -41,6 +41,7 @@ private:
struct timeval freqCheckPoint;
int chokeUnchokeCount;
int haveCount;
int keepAliveCount;
void receiveMessage();
void detectMessageFlooding();
void checkLongTimePeerChoking();

View File

@ -24,7 +24,7 @@
void PeerMessage::setBitfield(const unsigned char* bitfield, int bitfieldLength) {
if(this->bitfield != NULL) {
delete [] bitfield;
delete [] this->bitfield;
}
this->bitfieldLength = bitfieldLength;
this->bitfield = new unsigned char[this->bitfieldLength];
@ -33,7 +33,7 @@ void PeerMessage::setBitfield(const unsigned char* bitfield, int bitfieldLength)
void PeerMessage::setBlock(const char* block, int blockLength) {
if(this->block != NULL) {
delete [] block;
delete [] this->block;
}
this->blockLength = blockLength;
this->block = new char[this->blockLength];

View File

@ -26,21 +26,26 @@ TorrentConsoleDownloadEngine::TorrentConsoleDownloadEngine() {}
TorrentConsoleDownloadEngine::~TorrentConsoleDownloadEngine() {}
void TorrentConsoleDownloadEngine::onPartialDownloadingCompletes() {
printf("Download of specified files has completed. Continue normal download operation.\n");
}
void TorrentConsoleDownloadEngine::printStatistics() {
printf("\r ");
printf("\r");
if(torrentMan->downloadComplete()) {
printf("Download Completed ");
} else {
printf("%s/%sB %d%% DW:%.2f",
Util::llitos(torrentMan->getDownloadLength(), true).c_str(),
Util::llitos(torrentMan->getTotalLength(), true).c_str(),
(torrentMan->getTotalLength() == 0 ?
0 : (int)((torrentMan->getDownloadLength()*100)/torrentMan->getTotalLength())),
downloadSpeed/1000.0);
printf("%s/%sB %d%% %s D:%.2f",
Util::llitos(downloadLength, true).c_str(),
Util::llitos(totalLength, true).c_str(),
(totalLength == 0 ?
0 : (int)((downloadLength*100)/totalLength)),
avgSpeed == 0 ? "-" : Util::secfmt(eta).c_str(),
downloadSpeed/1024.0);
}
printf(" UP:%.2f(%s) %dpeers",
uploadSpeed/1000.0,
printf(" U:%.2f(%s) %dpeers",
uploadSpeed/1024.0,
Util::llitos(torrentMan->getUploadLength(), true).c_str(),
torrentMan->connections);
fflush(stdout);
@ -52,11 +57,21 @@ void TorrentConsoleDownloadEngine::initStatistics() {
lastElapsed = 0;
gettimeofday(&cp[0], NULL);
gettimeofday(&cp[1], NULL);
gettimeofday(&startup, NULL);
sessionDownloadLengthArray[0] = 0;
sessionDownloadLengthArray[1] = 0;
sessionUploadLengthArray[0] = 0;
sessionUploadLengthArray[1] = 0;
currentCp = 0;
eta = 0;
avgSpeed = 0;
sessionDownloadLength = 0;
downloadLength = 0;
totalLength = 0;
if(torrentMan->isPartialDownloadingMode()) {
partialDownloadLengthDiff = torrentMan->getDownloadLength()-torrentMan->getCompletedLength();
partialTotalLength = torrentMan->getPartialTotalLength();
}
}
int TorrentConsoleDownloadEngine::calculateSpeed(long long int sessionLength, long long int elapsed) {
@ -74,12 +89,28 @@ void TorrentConsoleDownloadEngine::calculateStatistics() {
sessionDownloadLengthArray[1] += torrentMan->getDeltaDownloadLength();
sessionUploadLengthArray[1] += torrentMan->getDeltaUploadLength();
sessionDownloadLength += torrentMan->getDeltaDownloadLength();
downloadSpeed = calculateSpeed(sessionDownloadLengthArray[currentCp], elapsed);
uploadSpeed = calculateSpeed(sessionUploadLengthArray[currentCp], elapsed);
torrentMan->resetDeltaDownloadLength();
torrentMan->resetDeltaUploadLength();
if(torrentMan->isPartialDownloadingMode()) {
downloadLength = torrentMan->getDownloadLength()-partialDownloadLengthDiff;
totalLength = partialTotalLength;
} else {
downloadLength = torrentMan->getDownloadLength();
totalLength = torrentMan->getTotalLength();
}
avgSpeed = calculateSpeed(sessionDownloadLength,
Util::difftv(now, startup));
if(avgSpeed != 0) {
eta = (totalLength-downloadLength)/avgSpeed;
}
if(elapsed-lastElapsed >= 1000000) {
printStatistics();
lastElapsed = elapsed;

View File

@ -39,11 +39,21 @@ private:
int downloadSpeed;
int uploadSpeed;
long long int lastElapsed;
long long int partialDownloadLengthDiff;
long long int partialTotalLength;
struct timeval startup;
long long int sessionDownloadLength;
int avgSpeed;
int eta;
long long int downloadLength;
long long int totalLength;
void printStatistics();
int calculateSpeed(long long int sessionLength, long long int elapsed);
protected:
void initStatistics();
void calculateStatistics();
void onPartialDownloadingCompletes();
public:
TorrentConsoleDownloadEngine();
~TorrentConsoleDownloadEngine();

View File

@ -35,7 +35,15 @@ void TorrentDownloadEngine::afterEachIteration() {
torrentMan->diskWriter->closeFile();
torrentMan->save();
torrentMan->fixFilename();
if(torrentMan->isPartialDownloadingMode()) {
torrentMan->finishPartialDownloadingMode();
onPartialDownloadingCompletes();
if(torrentMan->downloadComplete()) {
filenameFixed = true;
}
} else {
filenameFixed = true;
}
torrentMan->diskWriter->openExistingFile(torrentMan->getTempFilePath());
}
}

View File

@ -31,6 +31,7 @@ private:
protected:
void onEndOfRun();
void afterEachIteration();
virtual void onPartialDownloadingCompletes() = 0;
public:
TorrentDownloadEngine():filenameFixed(false) {}
virtual ~TorrentDownloadEngine() {}

View File

@ -29,6 +29,8 @@
#include "File.h"
#include "message.h"
#include "PreAllocationDiskWriter.h"
#include "DefaultDiskWriter.h"
#include "prefs.h"
#include <errno.h>
#include <libgen.h>
#include <string.h>
@ -295,28 +297,12 @@ bool TorrentMan::downloadComplete() const {
return bitfield->isAllBitSet();
}
void TorrentMan::setup(string metaInfoFile) {
peerId = "-A2****-";
for(int i = 0; i < 12; i++) {
peerId += Util::itos((int)(((double)10)*random()/(RAND_MAX+1.0)));
}
uploadLength = 0;
downloadLength = 0;
Dictionary* topDic = (Dictionary*)MetaFileUtil::parseMetaFile(metaInfoFile);
const Dictionary* infoDic = (const Dictionary*)topDic->get("info");
ShaVisitor v;
infoDic->accept(&v);
unsigned char md[20];
int len;
v.getHash(md, len);
setInfoHash(md);
void TorrentMan::readFileEntry(const Dictionary* infoDic, const string& defaultName) {
Data* topName = (Data*)infoDic->get("name");
if(topName != NULL) {
name = topName->toString();
} else {
char* basec = strdup(metaInfoFile.c_str());
char* basec = strdup(defaultName.c_str());
name = string(basename(basec))+".file";
free(basec);
}
@ -328,6 +314,7 @@ void TorrentMan::setup(string metaInfoFile) {
totalLength = length->toLLInt();
} else {
long long int length = 0;
long long int offset = 0;
// multi-file mode
setFileMode(MULTI);
multiFileTopDir = new Directory(name);
@ -350,11 +337,33 @@ void TorrentMan::setup(string metaInfoFile) {
}
Data* lastpath = (Data*)paths.back();
filePath.append("/").append(lastpath->toString());
FileEntry fileEntry(filePath, lengthData->toLLInt());
FileEntry fileEntry(filePath, lengthData->toLLInt(), offset);
multiFileEntries.push_back(fileEntry);
offset += fileEntry.length;
}
totalLength = length;
}
}
void TorrentMan::setup(string metaInfoFile) {
peerId = "-A2****-";
for(int i = 0; i < 12; i++) {
peerId += Util::itos((int)(((double)10)*random()/(RAND_MAX+1.0)));
}
uploadLength = 0;
downloadLength = 0;
Dictionary* topDic = (Dictionary*)MetaFileUtil::parseMetaFile(metaInfoFile);
const Dictionary* infoDic = (const Dictionary*)topDic->get("info");
ShaVisitor v;
infoDic->accept(&v);
unsigned char md[20];
int len;
v.getHash(md, len);
setInfoHash(md);
readFileEntry(infoDic, metaInfoFile);
announce = ((Data*)topDic->get("announce"))->toString();
pieceLength = ((Data*)infoDic->get("piece length"))->toInt();
pieces = totalLength/pieceLength+(totalLength%pieceLength ? 1 : 0);
@ -371,7 +380,11 @@ void TorrentMan::setup(string metaInfoFile) {
initBitfield();
delete topDic;
if(option->get(PREF_NO_PREALLOCATION) == V_TRUE) {
diskWriter = new DefaultDiskWriter();
} else {
diskWriter = new PreAllocationDiskWriter(totalLength);
}
if(segmentFileExists()) {
load();
diskWriter->openExistingFile(getTempFilePath());
@ -385,6 +398,12 @@ const MultiFileEntries& TorrentMan::getMultiFileEntries() const {
return multiFileEntries;
}
void TorrentMan::readFileEntryFromMetaInfoFile(const string& metaInfoFile) {
Dictionary* topDic = (Dictionary*)MetaFileUtil::parseMetaFile(metaInfoFile);
const Dictionary* infoDic = (const Dictionary*)topDic->get("info");
readFileEntry(infoDic, metaInfoFile);
}
string TorrentMan::getName() const {
return name;
}
@ -498,7 +517,7 @@ void TorrentMan::remove() const {
}
}
void TorrentMan::fixFilename() const {
void TorrentMan::fixFilename() {
if(fileMode == SINGLE) {
copySingleFile();
} else {
@ -511,15 +530,18 @@ void TorrentMan::copySingleFile() const {
Util::fileCopy(getFilePath(), getTempFilePath());
}
void TorrentMan::splitMultiFile() const {
void TorrentMan::splitMultiFile() {
logger->info("creating directories");
multiFileTopDir->createDir(storeDir, true);
long long int offset = 0;
for(MultiFileEntries::const_iterator itr = multiFileEntries.begin();
for(MultiFileEntries::iterator itr = multiFileEntries.begin();
itr != multiFileEntries.end(); itr++) {
if(!itr->extracted && itr->requested) {
string dest = storeDir+"/"+itr->path;
logger->info("writing file %s", dest.c_str());
Util::rangedFileCopy(dest, getTempFilePath(), offset, itr->length);
itr->extracted = true;
}
offset += itr->length;
}
}
@ -527,3 +549,59 @@ void TorrentMan::splitMultiFile() const {
void TorrentMan::deleteTempFile() const {
unlink(getTempFilePath().c_str());
}
// bool TorrentMan::unextractedFileEntryExists() const {
// if(fileMode == SINGLE) {
// return false;
// }
// for(MultiFileEntries::const_iterator itr = multiFileEntries.begin();
// itr != multiFileEntries.end(); itr++) {
// if(!itr->extracted) {
// return true;
// }
// }
// }
void TorrentMan::setFileEntriesToDownload(const Strings& filePaths) {
if(fileMode != MULTI) {
throw new DlAbortEx("only multi-mode supports partial downloading mode.");
}
// clear all requested flags in multiFileEntries.
for(MultiFileEntries::iterator itr = multiFileEntries.begin();
itr != multiFileEntries.end(); itr++) {
itr->requested = false;
}
for(Strings::const_iterator pitr = filePaths.begin();
pitr != filePaths.end(); pitr++) {
bool found = false;
for(MultiFileEntries::iterator itr = multiFileEntries.begin();
itr != multiFileEntries.end(); itr++) {
if(*pitr == itr->path) {
itr->requested = true;
found = true;
bitfield->addFilter(itr->offset, itr->length);
break;
}
}
if(!found) {
throw new DlAbortEx("no such file entry <%s>", (*pitr).c_str());
}
}
bitfield->enableFilter();
}
bool TorrentMan::isPartialDownloadingMode() const {
return bitfield->isFilterEnabled();
}
void TorrentMan::finishPartialDownloadingMode() {
bitfield->clearFilter();
}
long long int TorrentMan::getCompletedLength() const {
return bitfield->getCompletedLength();
}
long long int TorrentMan::getPartialTotalLength() const {
return bitfield->getFilteredTotalLength();
}

View File

@ -29,6 +29,8 @@
#include "DiskWriter.h"
#include "Piece.h"
#include "Directory.h"
#include "Dictionary.h"
#include "Option.h"
#include <deque>
#include <map>
#include <string>
@ -48,7 +50,12 @@ class FileEntry {
public:
string path;
long long int length;
FileEntry(string path, long long int length):path(path), length(length) {}
long long int offset;
bool extracted;
bool requested;
FileEntry(string path, long long int length, long long int offset):
path(path), length(length), offset(offset),
extracted(false), requested(true) {}
~FileEntry() {}
};
@ -90,6 +97,7 @@ private:
void deleteUsedPiece(const Piece& piece);
int deleteUsedPiecesByFillRate(int fillRate, int toDelete);
void reduceUsedPieces(int max);
void readFileEntry(const Dictionary* infoDic, const string& defaultName);
public:
int pieceLength;
int pieces;
@ -108,6 +116,7 @@ public:
const Logger* logger;
DiskWriter* diskWriter;
const Option* option;
int getNewCuid() { return ++cuidCounter; }
@ -213,8 +222,8 @@ public:
void remove() const;
void copySingleFile() const;
void splitMultiFile() const;
void fixFilename() const;
void splitMultiFile();
void fixFilename();
void deleteTempFile() const;
void setPort(int port) { this->port = port; }
@ -223,9 +232,20 @@ public:
int countUsedPiece() const { return usedPieces.size(); }
int countAdvertisedPiece() const { return haves.size(); }
void readFileEntryFromMetaInfoFile(const string& metaInfoFile);
const MultiFileEntries& getMultiFileEntries() const;
string getName() const;
//bool unextractedFileEntryExists() const;
void finishPartialDownloadingMode();
bool isPartialDownloadingMode() const;
void setFileEntriesToDownload(const Strings& filePaths);
long long int getCompletedLength() const;
long long int getPartialTotalLength() const;
enum FILE_MODE {
SINGLE,
MULTI

View File

@ -258,3 +258,24 @@ bool Util::isPowerOf(int num, int base) {
}
return false;
}
string Util::secfmt(int sec) {
string str;
if(sec >= 3600) {
str = itos(sec/3600)+"h";
sec %= 3600;
}
if(sec >= 60) {
int min = sec/60;
if(min < 10) {
str += "0";
}
str += itos(min)+"m";
sec %= 60;
}
if(sec < 10) {
str += "0";
}
str += itos(sec)+"s";
return str;
}

View File

@ -68,6 +68,8 @@ public:
static void rangedFileCopy(const string& destFile, const string& src, long long int srcOffset, long long int length);
static bool isPowerOf(int num, int base);
static string secfmt(int sec);
};
#endif // _D_UTIL_H_

View File

@ -99,7 +99,7 @@ void torrentHandler(int signal) {
exit(0);
}
void addCommand(int cuid, const char* url, string referer, Requests& requests) {
void addCommand(int cuid, const string& url, string referer, Requests& requests) {
Request* req = new Request();
req->setReferer(referer);
if(req->setUrl(url)) {
@ -232,6 +232,7 @@ int main(int argc, char* argv[]) {
bool daemonMode = false;
string referer;
string torrentFile;
Strings args;
#ifdef ENABLE_BITTORRENT
bool followTorrent = true;
#else
@ -281,6 +282,8 @@ int main(int argc, char* argv[]) {
#ifdef ENABLE_BITTORRENT
{ "torrent-file", required_argument, &lopt, 15 },
{ "follow-torrent", required_argument, &lopt, 16 },
{ "torrent-show-files", no_argument, &lopt, 17 },
{ "no-preallocation", no_argument, &lopt, 18 },
#endif // ENABLE_BITTORRENT
{ "version", no_argument, NULL, 'v' },
{ "help", no_argument, NULL, 'h' },
@ -407,6 +410,13 @@ int main(int argc, char* argv[]) {
showUsage();
exit(1);
}
break;
case 17:
op->put(PREF_TORRENT_SHOW_FILES, V_TRUE);
break;
case 18:
op->put(PREF_NO_PREALLOCATION, V_TRUE);
break;
}
break;
}
@ -482,6 +492,11 @@ int main(int argc, char* argv[]) {
exit(1);
}
}
for(int i = 1; optind+i-1 < argc; i++) {
args.push_back(argv[optind+i-1]);
}
#ifdef HAVE_LIBSSL
// for SSL initialization
SSL_load_error_strings();
@ -530,11 +545,14 @@ int main(int argc, char* argv[]) {
e->segmentMan->splitter = splitter;
Requests requests;
for(int i = 1; optind+i-1 < argc; i++) {
int cuidCounter = 1;
for(Strings::const_iterator itr = args.begin(); itr != args.end(); itr++) {
for(int s = 1; s <= split; s++) {
addCommand(split*(i-1)+s, argv[optind+i-1], referer, requests);
addCommand(cuidCounter, *itr, referer, requests);
cuidCounter++;
}
}
e->run();
if(e->segmentMan->finished()) {
@ -575,26 +593,34 @@ int main(int argc, char* argv[]) {
te->torrentMan = new TorrentMan();
te->torrentMan->setStoreDir(dir);
te->torrentMan->logger = logger;
te->torrentMan->setup(torrentFile.empty() ?
downloadedTorrentFile : torrentFile);
te->torrentMan->option = op;
string targetTorrentFile = torrentFile.empty() ?
downloadedTorrentFile : torrentFile;
if(op->get(PREF_TORRENT_SHOW_FILES) == V_TRUE) {
cout << "File listing:" << endl;
te->torrentMan->readFileEntryFromMetaInfoFile(targetTorrentFile);
cout << "Files:" << endl;
switch(te->torrentMan->getFileMode()) {
case TorrentMan::SINGLE:
printf("%s %s\nBytes", te->torrentMan->getName().c_str(),
printf("%s %s Bytes\n", te->torrentMan->getName().c_str(),
Util::llitos(te->torrentMan->getTotalLength(), true).c_str());
break;
case TorrentMan::MULTI: {
const MultiFileEntries& entries = te->torrentMan->getMultiFileEntries();
for(MultiFileEntries::const_iterator itr = entries.begin();
itr != entries.end(); itr++) {
printf("%s %s\nBytes", itr->path.c_str(),
printf("%s %s Bytes\n", itr->path.c_str(),
Util::llitos(itr->length, true).c_str());
}
break;
}
}
}
exit(0);
} else {
te->torrentMan->setup(targetTorrentFile);
if(!torrentFile.empty() && !args.empty() &&
te->torrentMan->getFileMode() == TorrentMan::MULTI) {
te->torrentMan->setFileEntriesToDownload(args);
}
}
PeerListenCommand* listenCommand =
new PeerListenCommand(te->torrentMan->getNewCuid(), te);

View File

@ -90,5 +90,6 @@
#define PREF_PEER_CONNECTION_TIMEOUT "peer_connection_timeout"
// values: true | false
#define PREF_TORRENT_SHOW_FILES "torrent_show_files"
// values: true | false
#define PREF_NO_PREALLOCATION "no_preallocation"
#endif // _D_PREFS_H_

View File

@ -10,6 +10,7 @@ class BitfieldManTest:public CppUnit::TestFixture {
CPPUNIT_TEST(testGetBlockSize);
CPPUNIT_TEST(testGetFirstMissingUnusedIndex);
CPPUNIT_TEST(testIsAllBitSet);
CPPUNIT_TEST(testFilter);
CPPUNIT_TEST_SUITE_END();
private:
@ -20,6 +21,7 @@ public:
void testGetBlockSize();
void testGetFirstMissingUnusedIndex();
void testIsAllBitSet();
void testFilter();
};
@ -27,12 +29,12 @@ CPPUNIT_TEST_SUITE_REGISTRATION( BitfieldManTest );
void BitfieldManTest::testGetBlockSize() {
BitfieldMan bt1(1024, 1024*10);
CPPUNIT_ASSERT_EQUAL(1024, bt1.getBlockSize(9));
CPPUNIT_ASSERT_EQUAL(1024, bt1.getBlockLength(9));
BitfieldMan bt2(1024, 1024*10+1);
CPPUNIT_ASSERT_EQUAL(1024, bt2.getBlockSize(9));
CPPUNIT_ASSERT_EQUAL(1, bt2.getBlockSize(10));
CPPUNIT_ASSERT_EQUAL(0, bt2.getBlockSize(11));
CPPUNIT_ASSERT_EQUAL(1024, bt2.getBlockLength(9));
CPPUNIT_ASSERT_EQUAL(1, bt2.getBlockLength(10));
CPPUNIT_ASSERT_EQUAL(0, bt2.getBlockLength(11));
}
void BitfieldManTest::testGetFirstMissingUnusedIndex() {
@ -69,8 +71,68 @@ void BitfieldManTest::testIsAllBitSet() {
}
CPPUNIT_ASSERT(!bt1.isAllBitSet());
for(int i = 0; i < bt1.getBlocks(); i++) {
for(int i = 0; i < bt1.countBlock(); i++) {
CPPUNIT_ASSERT(bt1.setBit(i));
}
CPPUNIT_ASSERT(bt1.isAllBitSet());
}
void BitfieldManTest::testFilter() {
// set random seed here in order to get same random numbers.
srandom(100);
BitfieldMan btman(2, 32);
// test offset=4, length=12
btman.addFilter(4, 12);
btman.enableFilter();
unsigned char peerBt[2];
memset(peerBt, 0xff, sizeof(peerBt));
int index;
index = btman.getMissingUnusedIndex(peerBt, sizeof(peerBt));
btman.setUseBit(index);
CPPUNIT_ASSERT_EQUAL(3, index);
index = btman.getMissingUnusedIndex(peerBt, sizeof(peerBt));
btman.setUseBit(index);
CPPUNIT_ASSERT_EQUAL(4, index);
index = btman.getMissingUnusedIndex(peerBt, sizeof(peerBt));
btman.setUseBit(index);
CPPUNIT_ASSERT_EQUAL(2, index);
index = btman.getMissingUnusedIndex(peerBt, sizeof(peerBt));
btman.setUseBit(index);
CPPUNIT_ASSERT_EQUAL(6, index);
index = btman.getMissingUnusedIndex(peerBt, sizeof(peerBt));
btman.setUseBit(index);
CPPUNIT_ASSERT_EQUAL(5, index);
index = btman.getMissingUnusedIndex(peerBt, sizeof(peerBt));
btman.setUseBit(index);
CPPUNIT_ASSERT_EQUAL(7, index);
index = btman.getMissingUnusedIndex(peerBt, sizeof(peerBt));
btman.setUseBit(index);
CPPUNIT_ASSERT_EQUAL(-1, index);
CPPUNIT_ASSERT_EQUAL((long long int)12, btman.getFilteredTotalLength());
// test offset=5, length=2
btman.clearAllBit();
btman.clearFilter();
btman.addFilter(5, 2);
btman.enableFilter();
index = btman.getMissingUnusedIndex(peerBt, sizeof(peerBt));
btman.setUseBit(index);
btman.setBit(index);
CPPUNIT_ASSERT_EQUAL(3, index);
index = btman.getMissingUnusedIndex(peerBt, sizeof(peerBt));
btman.setUseBit(index);
btman.setBit(index);
CPPUNIT_ASSERT_EQUAL(2, index);
index = btman.getMissingUnusedIndex(peerBt, sizeof(peerBt));
btman.setUseBit(index);
CPPUNIT_ASSERT_EQUAL(-1, index);
CPPUNIT_ASSERT_EQUAL((long long int)4, btman.getFilteredTotalLength());
CPPUNIT_ASSERT(btman.isAllBitSet());
BitfieldMan btman2(2, 31);
btman2.addFilter(0, 31);
btman2.enableFilter();
CPPUNIT_ASSERT_EQUAL((long long int)31, btman2.getFilteredTotalLength());
}

View File

@ -61,9 +61,9 @@ void CookieBoxTest::testCriteriaFind() {
box.add(c3);
box.add(c4);
vector<Cookie> result1 = box.criteriaFind("rednoah.com", "/downloads", false);
Cookies result1 = box.criteriaFind("rednoah.com", "/downloads", false);
CPPUNIT_ASSERT_EQUAL(2, (int)result1.size());
vector<Cookie>::iterator itr = result1.begin();
Cookies::iterator itr = result1.begin();
CPPUNIT_ASSERT_EQUAL(string("SESSIONID1=1"), (*itr).toString());
itr++;
CPPUNIT_ASSERT_EQUAL(string("SESSIONID2=2"), (*itr).toString());

View File

@ -17,6 +17,15 @@ aria2c_SOURCES = AllTest.cc\
PeerMessageUtilTest.cc\
BitfieldManTest.cc\
DefaultDiskWriterTest.cc
aria2c_CXXFLAGS = ${CPPUNIT_CFLAGS} -I../src -I../lib -Wall -D_FILE_OFFSET_BITS=64
aria2c_LDFLAGS = ${CPPUNIT_LIBS}
aria2c_LDADD = ../src/libaria2c.a
#aria2c_CXXFLAGS = ${CPPUNIT_CFLAGS} -I../src -I../lib -Wall -D_FILE_OFFSET_BITS=64
#aria2c_LDFLAGS = ${CPPUNIT_LIBS}
aria2c_LDADD = ../src/libaria2c.a\
${CPPUNIT_LIBS} @LIBGNUTLS_LIBS@\
@LIBGCRYPT_LIBS@ @OPENSSL_LIBS@
AM_CPPFLAGS = -Wall\
${CPPUNIT_CFLAGS}\
-I ../src\
-I../lib -I../intl -I$(top_srcdir)/intl\
@LIBGNUTLS_CFLAGS@ @LIBGCRYPT_CFLAGS@ @OPENSSL_CFLAGS@\
-D_FILE_OFFSET_BITS=64 -DLOCALEDIR=\"$(localedir)\" @DEFS@

View File

@ -56,20 +56,17 @@ mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
am__EXEEXT_1 = aria2c$(EXEEXT)
am_aria2c_OBJECTS = aria2c-AllTest.$(OBJEXT) \
aria2c-RequestTest.$(OBJEXT) \
aria2c-ChunkedEncodingTest.$(OBJEXT) aria2c-FileTest.$(OBJEXT) \
aria2c-OptionTest.$(OBJEXT) aria2c-Base64Test.$(OBJEXT) \
aria2c-UtilTest.$(OBJEXT) aria2c-CookieBoxTest.$(OBJEXT) \
aria2c-DataTest.$(OBJEXT) aria2c-DictionaryTest.$(OBJEXT) \
aria2c-ListTest.$(OBJEXT) aria2c-MetaFileUtilTest.$(OBJEXT) \
aria2c-ShaVisitorTest.$(OBJEXT) \
aria2c-TorrentManTest.$(OBJEXT) \
aria2c-PeerMessageUtilTest.$(OBJEXT) \
aria2c-BitfieldManTest.$(OBJEXT) \
aria2c-DefaultDiskWriterTest.$(OBJEXT)
am_aria2c_OBJECTS = AllTest.$(OBJEXT) RequestTest.$(OBJEXT) \
ChunkedEncodingTest.$(OBJEXT) FileTest.$(OBJEXT) \
OptionTest.$(OBJEXT) Base64Test.$(OBJEXT) UtilTest.$(OBJEXT) \
CookieBoxTest.$(OBJEXT) DataTest.$(OBJEXT) \
DictionaryTest.$(OBJEXT) ListTest.$(OBJEXT) \
MetaFileUtilTest.$(OBJEXT) ShaVisitorTest.$(OBJEXT) \
TorrentManTest.$(OBJEXT) PeerMessageUtilTest.$(OBJEXT) \
BitfieldManTest.$(OBJEXT) DefaultDiskWriterTest.$(OBJEXT)
aria2c_OBJECTS = $(am_aria2c_OBJECTS)
aria2c_DEPENDENCIES = ../src/libaria2c.a
am__DEPENDENCIES_1 =
aria2c_DEPENDENCIES = ../src/libaria2c.a $(am__DEPENDENCIES_1)
DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
depcomp = $(SHELL) $(top_srcdir)/depcomp
am__depfiles_maybe = depfiles
@ -225,9 +222,19 @@ aria2c_SOURCES = AllTest.cc\
BitfieldManTest.cc\
DefaultDiskWriterTest.cc
aria2c_CXXFLAGS = ${CPPUNIT_CFLAGS} -I../src -I../lib -Wall -D_FILE_OFFSET_BITS=64
aria2c_LDFLAGS = ${CPPUNIT_LIBS}
aria2c_LDADD = ../src/libaria2c.a
#aria2c_CXXFLAGS = ${CPPUNIT_CFLAGS} -I../src -I../lib -Wall -D_FILE_OFFSET_BITS=64
#aria2c_LDFLAGS = ${CPPUNIT_LIBS}
aria2c_LDADD = ../src/libaria2c.a\
${CPPUNIT_LIBS} @LIBGNUTLS_LIBS@\
@LIBGCRYPT_LIBS@ @OPENSSL_LIBS@
AM_CPPFLAGS = -Wall\
${CPPUNIT_CFLAGS}\
-I ../src\
-I../lib -I../intl -I$(top_srcdir)/intl\
@LIBGNUTLS_CFLAGS@ @LIBGCRYPT_CFLAGS@ @OPENSSL_CFLAGS@\
-D_FILE_OFFSET_BITS=64 -DLOCALEDIR=\"$(localedir)\" @DEFS@
all: all-am
.SUFFIXES:
@ -274,23 +281,23 @@ mostlyclean-compile:
distclean-compile:
-rm -f *.tab.c
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/aria2c-AllTest.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/aria2c-Base64Test.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/aria2c-BitfieldManTest.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/aria2c-ChunkedEncodingTest.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/aria2c-CookieBoxTest.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/aria2c-DataTest.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/aria2c-DefaultDiskWriterTest.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/aria2c-DictionaryTest.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/aria2c-FileTest.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/aria2c-ListTest.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/aria2c-MetaFileUtilTest.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/aria2c-OptionTest.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/aria2c-PeerMessageUtilTest.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/aria2c-RequestTest.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/aria2c-ShaVisitorTest.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/aria2c-TorrentManTest.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/aria2c-UtilTest.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/AllTest.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Base64Test.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/BitfieldManTest.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ChunkedEncodingTest.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CookieBoxTest.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DataTest.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DefaultDiskWriterTest.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DictionaryTest.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FileTest.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ListTest.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MetaFileUtilTest.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/OptionTest.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/PeerMessageUtilTest.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/RequestTest.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ShaVisitorTest.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TorrentManTest.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/UtilTest.Po@am__quote@
.cc.o:
@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
@ -305,244 +312,6 @@ distclean-compile:
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
aria2c-AllTest.o: AllTest.cc
@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(aria2c_CXXFLAGS) $(CXXFLAGS) -MT aria2c-AllTest.o -MD -MP -MF "$(DEPDIR)/aria2c-AllTest.Tpo" -c -o aria2c-AllTest.o `test -f 'AllTest.cc' || echo '$(srcdir)/'`AllTest.cc; \
@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/aria2c-AllTest.Tpo" "$(DEPDIR)/aria2c-AllTest.Po"; else rm -f "$(DEPDIR)/aria2c-AllTest.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='AllTest.cc' object='aria2c-AllTest.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(aria2c_CXXFLAGS) $(CXXFLAGS) -c -o aria2c-AllTest.o `test -f 'AllTest.cc' || echo '$(srcdir)/'`AllTest.cc
aria2c-AllTest.obj: AllTest.cc
@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(aria2c_CXXFLAGS) $(CXXFLAGS) -MT aria2c-AllTest.obj -MD -MP -MF "$(DEPDIR)/aria2c-AllTest.Tpo" -c -o aria2c-AllTest.obj `if test -f 'AllTest.cc'; then $(CYGPATH_W) 'AllTest.cc'; else $(CYGPATH_W) '$(srcdir)/AllTest.cc'; fi`; \
@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/aria2c-AllTest.Tpo" "$(DEPDIR)/aria2c-AllTest.Po"; else rm -f "$(DEPDIR)/aria2c-AllTest.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='AllTest.cc' object='aria2c-AllTest.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(aria2c_CXXFLAGS) $(CXXFLAGS) -c -o aria2c-AllTest.obj `if test -f 'AllTest.cc'; then $(CYGPATH_W) 'AllTest.cc'; else $(CYGPATH_W) '$(srcdir)/AllTest.cc'; fi`
aria2c-RequestTest.o: RequestTest.cc
@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(aria2c_CXXFLAGS) $(CXXFLAGS) -MT aria2c-RequestTest.o -MD -MP -MF "$(DEPDIR)/aria2c-RequestTest.Tpo" -c -o aria2c-RequestTest.o `test -f 'RequestTest.cc' || echo '$(srcdir)/'`RequestTest.cc; \
@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/aria2c-RequestTest.Tpo" "$(DEPDIR)/aria2c-RequestTest.Po"; else rm -f "$(DEPDIR)/aria2c-RequestTest.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='RequestTest.cc' object='aria2c-RequestTest.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(aria2c_CXXFLAGS) $(CXXFLAGS) -c -o aria2c-RequestTest.o `test -f 'RequestTest.cc' || echo '$(srcdir)/'`RequestTest.cc
aria2c-RequestTest.obj: RequestTest.cc
@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(aria2c_CXXFLAGS) $(CXXFLAGS) -MT aria2c-RequestTest.obj -MD -MP -MF "$(DEPDIR)/aria2c-RequestTest.Tpo" -c -o aria2c-RequestTest.obj `if test -f 'RequestTest.cc'; then $(CYGPATH_W) 'RequestTest.cc'; else $(CYGPATH_W) '$(srcdir)/RequestTest.cc'; fi`; \
@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/aria2c-RequestTest.Tpo" "$(DEPDIR)/aria2c-RequestTest.Po"; else rm -f "$(DEPDIR)/aria2c-RequestTest.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='RequestTest.cc' object='aria2c-RequestTest.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(aria2c_CXXFLAGS) $(CXXFLAGS) -c -o aria2c-RequestTest.obj `if test -f 'RequestTest.cc'; then $(CYGPATH_W) 'RequestTest.cc'; else $(CYGPATH_W) '$(srcdir)/RequestTest.cc'; fi`
aria2c-ChunkedEncodingTest.o: ChunkedEncodingTest.cc
@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(aria2c_CXXFLAGS) $(CXXFLAGS) -MT aria2c-ChunkedEncodingTest.o -MD -MP -MF "$(DEPDIR)/aria2c-ChunkedEncodingTest.Tpo" -c -o aria2c-ChunkedEncodingTest.o `test -f 'ChunkedEncodingTest.cc' || echo '$(srcdir)/'`ChunkedEncodingTest.cc; \
@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/aria2c-ChunkedEncodingTest.Tpo" "$(DEPDIR)/aria2c-ChunkedEncodingTest.Po"; else rm -f "$(DEPDIR)/aria2c-ChunkedEncodingTest.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='ChunkedEncodingTest.cc' object='aria2c-ChunkedEncodingTest.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(aria2c_CXXFLAGS) $(CXXFLAGS) -c -o aria2c-ChunkedEncodingTest.o `test -f 'ChunkedEncodingTest.cc' || echo '$(srcdir)/'`ChunkedEncodingTest.cc
aria2c-ChunkedEncodingTest.obj: ChunkedEncodingTest.cc
@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(aria2c_CXXFLAGS) $(CXXFLAGS) -MT aria2c-ChunkedEncodingTest.obj -MD -MP -MF "$(DEPDIR)/aria2c-ChunkedEncodingTest.Tpo" -c -o aria2c-ChunkedEncodingTest.obj `if test -f 'ChunkedEncodingTest.cc'; then $(CYGPATH_W) 'ChunkedEncodingTest.cc'; else $(CYGPATH_W) '$(srcdir)/ChunkedEncodingTest.cc'; fi`; \
@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/aria2c-ChunkedEncodingTest.Tpo" "$(DEPDIR)/aria2c-ChunkedEncodingTest.Po"; else rm -f "$(DEPDIR)/aria2c-ChunkedEncodingTest.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='ChunkedEncodingTest.cc' object='aria2c-ChunkedEncodingTest.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(aria2c_CXXFLAGS) $(CXXFLAGS) -c -o aria2c-ChunkedEncodingTest.obj `if test -f 'ChunkedEncodingTest.cc'; then $(CYGPATH_W) 'ChunkedEncodingTest.cc'; else $(CYGPATH_W) '$(srcdir)/ChunkedEncodingTest.cc'; fi`
aria2c-FileTest.o: FileTest.cc
@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(aria2c_CXXFLAGS) $(CXXFLAGS) -MT aria2c-FileTest.o -MD -MP -MF "$(DEPDIR)/aria2c-FileTest.Tpo" -c -o aria2c-FileTest.o `test -f 'FileTest.cc' || echo '$(srcdir)/'`FileTest.cc; \
@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/aria2c-FileTest.Tpo" "$(DEPDIR)/aria2c-FileTest.Po"; else rm -f "$(DEPDIR)/aria2c-FileTest.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='FileTest.cc' object='aria2c-FileTest.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(aria2c_CXXFLAGS) $(CXXFLAGS) -c -o aria2c-FileTest.o `test -f 'FileTest.cc' || echo '$(srcdir)/'`FileTest.cc
aria2c-FileTest.obj: FileTest.cc
@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(aria2c_CXXFLAGS) $(CXXFLAGS) -MT aria2c-FileTest.obj -MD -MP -MF "$(DEPDIR)/aria2c-FileTest.Tpo" -c -o aria2c-FileTest.obj `if test -f 'FileTest.cc'; then $(CYGPATH_W) 'FileTest.cc'; else $(CYGPATH_W) '$(srcdir)/FileTest.cc'; fi`; \
@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/aria2c-FileTest.Tpo" "$(DEPDIR)/aria2c-FileTest.Po"; else rm -f "$(DEPDIR)/aria2c-FileTest.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='FileTest.cc' object='aria2c-FileTest.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(aria2c_CXXFLAGS) $(CXXFLAGS) -c -o aria2c-FileTest.obj `if test -f 'FileTest.cc'; then $(CYGPATH_W) 'FileTest.cc'; else $(CYGPATH_W) '$(srcdir)/FileTest.cc'; fi`
aria2c-OptionTest.o: OptionTest.cc
@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(aria2c_CXXFLAGS) $(CXXFLAGS) -MT aria2c-OptionTest.o -MD -MP -MF "$(DEPDIR)/aria2c-OptionTest.Tpo" -c -o aria2c-OptionTest.o `test -f 'OptionTest.cc' || echo '$(srcdir)/'`OptionTest.cc; \
@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/aria2c-OptionTest.Tpo" "$(DEPDIR)/aria2c-OptionTest.Po"; else rm -f "$(DEPDIR)/aria2c-OptionTest.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='OptionTest.cc' object='aria2c-OptionTest.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(aria2c_CXXFLAGS) $(CXXFLAGS) -c -o aria2c-OptionTest.o `test -f 'OptionTest.cc' || echo '$(srcdir)/'`OptionTest.cc
aria2c-OptionTest.obj: OptionTest.cc
@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(aria2c_CXXFLAGS) $(CXXFLAGS) -MT aria2c-OptionTest.obj -MD -MP -MF "$(DEPDIR)/aria2c-OptionTest.Tpo" -c -o aria2c-OptionTest.obj `if test -f 'OptionTest.cc'; then $(CYGPATH_W) 'OptionTest.cc'; else $(CYGPATH_W) '$(srcdir)/OptionTest.cc'; fi`; \
@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/aria2c-OptionTest.Tpo" "$(DEPDIR)/aria2c-OptionTest.Po"; else rm -f "$(DEPDIR)/aria2c-OptionTest.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='OptionTest.cc' object='aria2c-OptionTest.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(aria2c_CXXFLAGS) $(CXXFLAGS) -c -o aria2c-OptionTest.obj `if test -f 'OptionTest.cc'; then $(CYGPATH_W) 'OptionTest.cc'; else $(CYGPATH_W) '$(srcdir)/OptionTest.cc'; fi`
aria2c-Base64Test.o: Base64Test.cc
@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(aria2c_CXXFLAGS) $(CXXFLAGS) -MT aria2c-Base64Test.o -MD -MP -MF "$(DEPDIR)/aria2c-Base64Test.Tpo" -c -o aria2c-Base64Test.o `test -f 'Base64Test.cc' || echo '$(srcdir)/'`Base64Test.cc; \
@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/aria2c-Base64Test.Tpo" "$(DEPDIR)/aria2c-Base64Test.Po"; else rm -f "$(DEPDIR)/aria2c-Base64Test.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='Base64Test.cc' object='aria2c-Base64Test.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(aria2c_CXXFLAGS) $(CXXFLAGS) -c -o aria2c-Base64Test.o `test -f 'Base64Test.cc' || echo '$(srcdir)/'`Base64Test.cc
aria2c-Base64Test.obj: Base64Test.cc
@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(aria2c_CXXFLAGS) $(CXXFLAGS) -MT aria2c-Base64Test.obj -MD -MP -MF "$(DEPDIR)/aria2c-Base64Test.Tpo" -c -o aria2c-Base64Test.obj `if test -f 'Base64Test.cc'; then $(CYGPATH_W) 'Base64Test.cc'; else $(CYGPATH_W) '$(srcdir)/Base64Test.cc'; fi`; \
@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/aria2c-Base64Test.Tpo" "$(DEPDIR)/aria2c-Base64Test.Po"; else rm -f "$(DEPDIR)/aria2c-Base64Test.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='Base64Test.cc' object='aria2c-Base64Test.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(aria2c_CXXFLAGS) $(CXXFLAGS) -c -o aria2c-Base64Test.obj `if test -f 'Base64Test.cc'; then $(CYGPATH_W) 'Base64Test.cc'; else $(CYGPATH_W) '$(srcdir)/Base64Test.cc'; fi`
aria2c-UtilTest.o: UtilTest.cc
@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(aria2c_CXXFLAGS) $(CXXFLAGS) -MT aria2c-UtilTest.o -MD -MP -MF "$(DEPDIR)/aria2c-UtilTest.Tpo" -c -o aria2c-UtilTest.o `test -f 'UtilTest.cc' || echo '$(srcdir)/'`UtilTest.cc; \
@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/aria2c-UtilTest.Tpo" "$(DEPDIR)/aria2c-UtilTest.Po"; else rm -f "$(DEPDIR)/aria2c-UtilTest.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='UtilTest.cc' object='aria2c-UtilTest.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(aria2c_CXXFLAGS) $(CXXFLAGS) -c -o aria2c-UtilTest.o `test -f 'UtilTest.cc' || echo '$(srcdir)/'`UtilTest.cc
aria2c-UtilTest.obj: UtilTest.cc
@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(aria2c_CXXFLAGS) $(CXXFLAGS) -MT aria2c-UtilTest.obj -MD -MP -MF "$(DEPDIR)/aria2c-UtilTest.Tpo" -c -o aria2c-UtilTest.obj `if test -f 'UtilTest.cc'; then $(CYGPATH_W) 'UtilTest.cc'; else $(CYGPATH_W) '$(srcdir)/UtilTest.cc'; fi`; \
@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/aria2c-UtilTest.Tpo" "$(DEPDIR)/aria2c-UtilTest.Po"; else rm -f "$(DEPDIR)/aria2c-UtilTest.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='UtilTest.cc' object='aria2c-UtilTest.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(aria2c_CXXFLAGS) $(CXXFLAGS) -c -o aria2c-UtilTest.obj `if test -f 'UtilTest.cc'; then $(CYGPATH_W) 'UtilTest.cc'; else $(CYGPATH_W) '$(srcdir)/UtilTest.cc'; fi`
aria2c-CookieBoxTest.o: CookieBoxTest.cc
@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(aria2c_CXXFLAGS) $(CXXFLAGS) -MT aria2c-CookieBoxTest.o -MD -MP -MF "$(DEPDIR)/aria2c-CookieBoxTest.Tpo" -c -o aria2c-CookieBoxTest.o `test -f 'CookieBoxTest.cc' || echo '$(srcdir)/'`CookieBoxTest.cc; \
@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/aria2c-CookieBoxTest.Tpo" "$(DEPDIR)/aria2c-CookieBoxTest.Po"; else rm -f "$(DEPDIR)/aria2c-CookieBoxTest.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='CookieBoxTest.cc' object='aria2c-CookieBoxTest.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(aria2c_CXXFLAGS) $(CXXFLAGS) -c -o aria2c-CookieBoxTest.o `test -f 'CookieBoxTest.cc' || echo '$(srcdir)/'`CookieBoxTest.cc
aria2c-CookieBoxTest.obj: CookieBoxTest.cc
@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(aria2c_CXXFLAGS) $(CXXFLAGS) -MT aria2c-CookieBoxTest.obj -MD -MP -MF "$(DEPDIR)/aria2c-CookieBoxTest.Tpo" -c -o aria2c-CookieBoxTest.obj `if test -f 'CookieBoxTest.cc'; then $(CYGPATH_W) 'CookieBoxTest.cc'; else $(CYGPATH_W) '$(srcdir)/CookieBoxTest.cc'; fi`; \
@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/aria2c-CookieBoxTest.Tpo" "$(DEPDIR)/aria2c-CookieBoxTest.Po"; else rm -f "$(DEPDIR)/aria2c-CookieBoxTest.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='CookieBoxTest.cc' object='aria2c-CookieBoxTest.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(aria2c_CXXFLAGS) $(CXXFLAGS) -c -o aria2c-CookieBoxTest.obj `if test -f 'CookieBoxTest.cc'; then $(CYGPATH_W) 'CookieBoxTest.cc'; else $(CYGPATH_W) '$(srcdir)/CookieBoxTest.cc'; fi`
aria2c-DataTest.o: DataTest.cc
@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(aria2c_CXXFLAGS) $(CXXFLAGS) -MT aria2c-DataTest.o -MD -MP -MF "$(DEPDIR)/aria2c-DataTest.Tpo" -c -o aria2c-DataTest.o `test -f 'DataTest.cc' || echo '$(srcdir)/'`DataTest.cc; \
@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/aria2c-DataTest.Tpo" "$(DEPDIR)/aria2c-DataTest.Po"; else rm -f "$(DEPDIR)/aria2c-DataTest.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='DataTest.cc' object='aria2c-DataTest.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(aria2c_CXXFLAGS) $(CXXFLAGS) -c -o aria2c-DataTest.o `test -f 'DataTest.cc' || echo '$(srcdir)/'`DataTest.cc
aria2c-DataTest.obj: DataTest.cc
@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(aria2c_CXXFLAGS) $(CXXFLAGS) -MT aria2c-DataTest.obj -MD -MP -MF "$(DEPDIR)/aria2c-DataTest.Tpo" -c -o aria2c-DataTest.obj `if test -f 'DataTest.cc'; then $(CYGPATH_W) 'DataTest.cc'; else $(CYGPATH_W) '$(srcdir)/DataTest.cc'; fi`; \
@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/aria2c-DataTest.Tpo" "$(DEPDIR)/aria2c-DataTest.Po"; else rm -f "$(DEPDIR)/aria2c-DataTest.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='DataTest.cc' object='aria2c-DataTest.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(aria2c_CXXFLAGS) $(CXXFLAGS) -c -o aria2c-DataTest.obj `if test -f 'DataTest.cc'; then $(CYGPATH_W) 'DataTest.cc'; else $(CYGPATH_W) '$(srcdir)/DataTest.cc'; fi`
aria2c-DictionaryTest.o: DictionaryTest.cc
@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(aria2c_CXXFLAGS) $(CXXFLAGS) -MT aria2c-DictionaryTest.o -MD -MP -MF "$(DEPDIR)/aria2c-DictionaryTest.Tpo" -c -o aria2c-DictionaryTest.o `test -f 'DictionaryTest.cc' || echo '$(srcdir)/'`DictionaryTest.cc; \
@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/aria2c-DictionaryTest.Tpo" "$(DEPDIR)/aria2c-DictionaryTest.Po"; else rm -f "$(DEPDIR)/aria2c-DictionaryTest.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='DictionaryTest.cc' object='aria2c-DictionaryTest.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(aria2c_CXXFLAGS) $(CXXFLAGS) -c -o aria2c-DictionaryTest.o `test -f 'DictionaryTest.cc' || echo '$(srcdir)/'`DictionaryTest.cc
aria2c-DictionaryTest.obj: DictionaryTest.cc
@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(aria2c_CXXFLAGS) $(CXXFLAGS) -MT aria2c-DictionaryTest.obj -MD -MP -MF "$(DEPDIR)/aria2c-DictionaryTest.Tpo" -c -o aria2c-DictionaryTest.obj `if test -f 'DictionaryTest.cc'; then $(CYGPATH_W) 'DictionaryTest.cc'; else $(CYGPATH_W) '$(srcdir)/DictionaryTest.cc'; fi`; \
@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/aria2c-DictionaryTest.Tpo" "$(DEPDIR)/aria2c-DictionaryTest.Po"; else rm -f "$(DEPDIR)/aria2c-DictionaryTest.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='DictionaryTest.cc' object='aria2c-DictionaryTest.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(aria2c_CXXFLAGS) $(CXXFLAGS) -c -o aria2c-DictionaryTest.obj `if test -f 'DictionaryTest.cc'; then $(CYGPATH_W) 'DictionaryTest.cc'; else $(CYGPATH_W) '$(srcdir)/DictionaryTest.cc'; fi`
aria2c-ListTest.o: ListTest.cc
@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(aria2c_CXXFLAGS) $(CXXFLAGS) -MT aria2c-ListTest.o -MD -MP -MF "$(DEPDIR)/aria2c-ListTest.Tpo" -c -o aria2c-ListTest.o `test -f 'ListTest.cc' || echo '$(srcdir)/'`ListTest.cc; \
@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/aria2c-ListTest.Tpo" "$(DEPDIR)/aria2c-ListTest.Po"; else rm -f "$(DEPDIR)/aria2c-ListTest.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='ListTest.cc' object='aria2c-ListTest.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(aria2c_CXXFLAGS) $(CXXFLAGS) -c -o aria2c-ListTest.o `test -f 'ListTest.cc' || echo '$(srcdir)/'`ListTest.cc
aria2c-ListTest.obj: ListTest.cc
@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(aria2c_CXXFLAGS) $(CXXFLAGS) -MT aria2c-ListTest.obj -MD -MP -MF "$(DEPDIR)/aria2c-ListTest.Tpo" -c -o aria2c-ListTest.obj `if test -f 'ListTest.cc'; then $(CYGPATH_W) 'ListTest.cc'; else $(CYGPATH_W) '$(srcdir)/ListTest.cc'; fi`; \
@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/aria2c-ListTest.Tpo" "$(DEPDIR)/aria2c-ListTest.Po"; else rm -f "$(DEPDIR)/aria2c-ListTest.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='ListTest.cc' object='aria2c-ListTest.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(aria2c_CXXFLAGS) $(CXXFLAGS) -c -o aria2c-ListTest.obj `if test -f 'ListTest.cc'; then $(CYGPATH_W) 'ListTest.cc'; else $(CYGPATH_W) '$(srcdir)/ListTest.cc'; fi`
aria2c-MetaFileUtilTest.o: MetaFileUtilTest.cc
@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(aria2c_CXXFLAGS) $(CXXFLAGS) -MT aria2c-MetaFileUtilTest.o -MD -MP -MF "$(DEPDIR)/aria2c-MetaFileUtilTest.Tpo" -c -o aria2c-MetaFileUtilTest.o `test -f 'MetaFileUtilTest.cc' || echo '$(srcdir)/'`MetaFileUtilTest.cc; \
@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/aria2c-MetaFileUtilTest.Tpo" "$(DEPDIR)/aria2c-MetaFileUtilTest.Po"; else rm -f "$(DEPDIR)/aria2c-MetaFileUtilTest.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='MetaFileUtilTest.cc' object='aria2c-MetaFileUtilTest.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(aria2c_CXXFLAGS) $(CXXFLAGS) -c -o aria2c-MetaFileUtilTest.o `test -f 'MetaFileUtilTest.cc' || echo '$(srcdir)/'`MetaFileUtilTest.cc
aria2c-MetaFileUtilTest.obj: MetaFileUtilTest.cc
@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(aria2c_CXXFLAGS) $(CXXFLAGS) -MT aria2c-MetaFileUtilTest.obj -MD -MP -MF "$(DEPDIR)/aria2c-MetaFileUtilTest.Tpo" -c -o aria2c-MetaFileUtilTest.obj `if test -f 'MetaFileUtilTest.cc'; then $(CYGPATH_W) 'MetaFileUtilTest.cc'; else $(CYGPATH_W) '$(srcdir)/MetaFileUtilTest.cc'; fi`; \
@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/aria2c-MetaFileUtilTest.Tpo" "$(DEPDIR)/aria2c-MetaFileUtilTest.Po"; else rm -f "$(DEPDIR)/aria2c-MetaFileUtilTest.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='MetaFileUtilTest.cc' object='aria2c-MetaFileUtilTest.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(aria2c_CXXFLAGS) $(CXXFLAGS) -c -o aria2c-MetaFileUtilTest.obj `if test -f 'MetaFileUtilTest.cc'; then $(CYGPATH_W) 'MetaFileUtilTest.cc'; else $(CYGPATH_W) '$(srcdir)/MetaFileUtilTest.cc'; fi`
aria2c-ShaVisitorTest.o: ShaVisitorTest.cc
@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(aria2c_CXXFLAGS) $(CXXFLAGS) -MT aria2c-ShaVisitorTest.o -MD -MP -MF "$(DEPDIR)/aria2c-ShaVisitorTest.Tpo" -c -o aria2c-ShaVisitorTest.o `test -f 'ShaVisitorTest.cc' || echo '$(srcdir)/'`ShaVisitorTest.cc; \
@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/aria2c-ShaVisitorTest.Tpo" "$(DEPDIR)/aria2c-ShaVisitorTest.Po"; else rm -f "$(DEPDIR)/aria2c-ShaVisitorTest.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='ShaVisitorTest.cc' object='aria2c-ShaVisitorTest.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(aria2c_CXXFLAGS) $(CXXFLAGS) -c -o aria2c-ShaVisitorTest.o `test -f 'ShaVisitorTest.cc' || echo '$(srcdir)/'`ShaVisitorTest.cc
aria2c-ShaVisitorTest.obj: ShaVisitorTest.cc
@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(aria2c_CXXFLAGS) $(CXXFLAGS) -MT aria2c-ShaVisitorTest.obj -MD -MP -MF "$(DEPDIR)/aria2c-ShaVisitorTest.Tpo" -c -o aria2c-ShaVisitorTest.obj `if test -f 'ShaVisitorTest.cc'; then $(CYGPATH_W) 'ShaVisitorTest.cc'; else $(CYGPATH_W) '$(srcdir)/ShaVisitorTest.cc'; fi`; \
@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/aria2c-ShaVisitorTest.Tpo" "$(DEPDIR)/aria2c-ShaVisitorTest.Po"; else rm -f "$(DEPDIR)/aria2c-ShaVisitorTest.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='ShaVisitorTest.cc' object='aria2c-ShaVisitorTest.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(aria2c_CXXFLAGS) $(CXXFLAGS) -c -o aria2c-ShaVisitorTest.obj `if test -f 'ShaVisitorTest.cc'; then $(CYGPATH_W) 'ShaVisitorTest.cc'; else $(CYGPATH_W) '$(srcdir)/ShaVisitorTest.cc'; fi`
aria2c-TorrentManTest.o: TorrentManTest.cc
@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(aria2c_CXXFLAGS) $(CXXFLAGS) -MT aria2c-TorrentManTest.o -MD -MP -MF "$(DEPDIR)/aria2c-TorrentManTest.Tpo" -c -o aria2c-TorrentManTest.o `test -f 'TorrentManTest.cc' || echo '$(srcdir)/'`TorrentManTest.cc; \
@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/aria2c-TorrentManTest.Tpo" "$(DEPDIR)/aria2c-TorrentManTest.Po"; else rm -f "$(DEPDIR)/aria2c-TorrentManTest.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='TorrentManTest.cc' object='aria2c-TorrentManTest.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(aria2c_CXXFLAGS) $(CXXFLAGS) -c -o aria2c-TorrentManTest.o `test -f 'TorrentManTest.cc' || echo '$(srcdir)/'`TorrentManTest.cc
aria2c-TorrentManTest.obj: TorrentManTest.cc
@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(aria2c_CXXFLAGS) $(CXXFLAGS) -MT aria2c-TorrentManTest.obj -MD -MP -MF "$(DEPDIR)/aria2c-TorrentManTest.Tpo" -c -o aria2c-TorrentManTest.obj `if test -f 'TorrentManTest.cc'; then $(CYGPATH_W) 'TorrentManTest.cc'; else $(CYGPATH_W) '$(srcdir)/TorrentManTest.cc'; fi`; \
@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/aria2c-TorrentManTest.Tpo" "$(DEPDIR)/aria2c-TorrentManTest.Po"; else rm -f "$(DEPDIR)/aria2c-TorrentManTest.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='TorrentManTest.cc' object='aria2c-TorrentManTest.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(aria2c_CXXFLAGS) $(CXXFLAGS) -c -o aria2c-TorrentManTest.obj `if test -f 'TorrentManTest.cc'; then $(CYGPATH_W) 'TorrentManTest.cc'; else $(CYGPATH_W) '$(srcdir)/TorrentManTest.cc'; fi`
aria2c-PeerMessageUtilTest.o: PeerMessageUtilTest.cc
@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(aria2c_CXXFLAGS) $(CXXFLAGS) -MT aria2c-PeerMessageUtilTest.o -MD -MP -MF "$(DEPDIR)/aria2c-PeerMessageUtilTest.Tpo" -c -o aria2c-PeerMessageUtilTest.o `test -f 'PeerMessageUtilTest.cc' || echo '$(srcdir)/'`PeerMessageUtilTest.cc; \
@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/aria2c-PeerMessageUtilTest.Tpo" "$(DEPDIR)/aria2c-PeerMessageUtilTest.Po"; else rm -f "$(DEPDIR)/aria2c-PeerMessageUtilTest.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='PeerMessageUtilTest.cc' object='aria2c-PeerMessageUtilTest.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(aria2c_CXXFLAGS) $(CXXFLAGS) -c -o aria2c-PeerMessageUtilTest.o `test -f 'PeerMessageUtilTest.cc' || echo '$(srcdir)/'`PeerMessageUtilTest.cc
aria2c-PeerMessageUtilTest.obj: PeerMessageUtilTest.cc
@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(aria2c_CXXFLAGS) $(CXXFLAGS) -MT aria2c-PeerMessageUtilTest.obj -MD -MP -MF "$(DEPDIR)/aria2c-PeerMessageUtilTest.Tpo" -c -o aria2c-PeerMessageUtilTest.obj `if test -f 'PeerMessageUtilTest.cc'; then $(CYGPATH_W) 'PeerMessageUtilTest.cc'; else $(CYGPATH_W) '$(srcdir)/PeerMessageUtilTest.cc'; fi`; \
@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/aria2c-PeerMessageUtilTest.Tpo" "$(DEPDIR)/aria2c-PeerMessageUtilTest.Po"; else rm -f "$(DEPDIR)/aria2c-PeerMessageUtilTest.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='PeerMessageUtilTest.cc' object='aria2c-PeerMessageUtilTest.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(aria2c_CXXFLAGS) $(CXXFLAGS) -c -o aria2c-PeerMessageUtilTest.obj `if test -f 'PeerMessageUtilTest.cc'; then $(CYGPATH_W) 'PeerMessageUtilTest.cc'; else $(CYGPATH_W) '$(srcdir)/PeerMessageUtilTest.cc'; fi`
aria2c-BitfieldManTest.o: BitfieldManTest.cc
@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(aria2c_CXXFLAGS) $(CXXFLAGS) -MT aria2c-BitfieldManTest.o -MD -MP -MF "$(DEPDIR)/aria2c-BitfieldManTest.Tpo" -c -o aria2c-BitfieldManTest.o `test -f 'BitfieldManTest.cc' || echo '$(srcdir)/'`BitfieldManTest.cc; \
@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/aria2c-BitfieldManTest.Tpo" "$(DEPDIR)/aria2c-BitfieldManTest.Po"; else rm -f "$(DEPDIR)/aria2c-BitfieldManTest.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='BitfieldManTest.cc' object='aria2c-BitfieldManTest.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(aria2c_CXXFLAGS) $(CXXFLAGS) -c -o aria2c-BitfieldManTest.o `test -f 'BitfieldManTest.cc' || echo '$(srcdir)/'`BitfieldManTest.cc
aria2c-BitfieldManTest.obj: BitfieldManTest.cc
@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(aria2c_CXXFLAGS) $(CXXFLAGS) -MT aria2c-BitfieldManTest.obj -MD -MP -MF "$(DEPDIR)/aria2c-BitfieldManTest.Tpo" -c -o aria2c-BitfieldManTest.obj `if test -f 'BitfieldManTest.cc'; then $(CYGPATH_W) 'BitfieldManTest.cc'; else $(CYGPATH_W) '$(srcdir)/BitfieldManTest.cc'; fi`; \
@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/aria2c-BitfieldManTest.Tpo" "$(DEPDIR)/aria2c-BitfieldManTest.Po"; else rm -f "$(DEPDIR)/aria2c-BitfieldManTest.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='BitfieldManTest.cc' object='aria2c-BitfieldManTest.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(aria2c_CXXFLAGS) $(CXXFLAGS) -c -o aria2c-BitfieldManTest.obj `if test -f 'BitfieldManTest.cc'; then $(CYGPATH_W) 'BitfieldManTest.cc'; else $(CYGPATH_W) '$(srcdir)/BitfieldManTest.cc'; fi`
aria2c-DefaultDiskWriterTest.o: DefaultDiskWriterTest.cc
@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(aria2c_CXXFLAGS) $(CXXFLAGS) -MT aria2c-DefaultDiskWriterTest.o -MD -MP -MF "$(DEPDIR)/aria2c-DefaultDiskWriterTest.Tpo" -c -o aria2c-DefaultDiskWriterTest.o `test -f 'DefaultDiskWriterTest.cc' || echo '$(srcdir)/'`DefaultDiskWriterTest.cc; \
@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/aria2c-DefaultDiskWriterTest.Tpo" "$(DEPDIR)/aria2c-DefaultDiskWriterTest.Po"; else rm -f "$(DEPDIR)/aria2c-DefaultDiskWriterTest.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='DefaultDiskWriterTest.cc' object='aria2c-DefaultDiskWriterTest.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(aria2c_CXXFLAGS) $(CXXFLAGS) -c -o aria2c-DefaultDiskWriterTest.o `test -f 'DefaultDiskWriterTest.cc' || echo '$(srcdir)/'`DefaultDiskWriterTest.cc
aria2c-DefaultDiskWriterTest.obj: DefaultDiskWriterTest.cc
@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(aria2c_CXXFLAGS) $(CXXFLAGS) -MT aria2c-DefaultDiskWriterTest.obj -MD -MP -MF "$(DEPDIR)/aria2c-DefaultDiskWriterTest.Tpo" -c -o aria2c-DefaultDiskWriterTest.obj `if test -f 'DefaultDiskWriterTest.cc'; then $(CYGPATH_W) 'DefaultDiskWriterTest.cc'; else $(CYGPATH_W) '$(srcdir)/DefaultDiskWriterTest.cc'; fi`; \
@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/aria2c-DefaultDiskWriterTest.Tpo" "$(DEPDIR)/aria2c-DefaultDiskWriterTest.Po"; else rm -f "$(DEPDIR)/aria2c-DefaultDiskWriterTest.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='DefaultDiskWriterTest.cc' object='aria2c-DefaultDiskWriterTest.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(aria2c_CXXFLAGS) $(CXXFLAGS) -c -o aria2c-DefaultDiskWriterTest.obj `if test -f 'DefaultDiskWriterTest.cc'; then $(CYGPATH_W) 'DefaultDiskWriterTest.cc'; else $(CYGPATH_W) '$(srcdir)/DefaultDiskWriterTest.cc'; fi`
uninstall-info-am:
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)

View File

@ -62,14 +62,14 @@ void PeerMessageUtilTest::testCreatePeerMessageKeepAlive() {
char msg[4];
memset(msg, 0, sizeof(msg));
PeerMessage* pm = PeerMessageUtil::createPeerMessage(NULL, 0);
CPPUNIT_ASSERT_EQUAL((int)PeerMessage::KEEP_ALIVE, pm->id);
CPPUNIT_ASSERT_EQUAL((int)PeerMessage::KEEP_ALIVE, pm->getId());
}
void PeerMessageUtilTest::testCreatePeerMessageChoke() {
char msg[5];
createNLengthMessage(msg, sizeof(msg), 1, 0);
PeerMessage* pm = PeerMessageUtil::createPeerMessage(&msg[4], 1);
CPPUNIT_ASSERT_EQUAL((int)PeerMessage::CHOKE, pm->id);
CPPUNIT_ASSERT_EQUAL((int)PeerMessage::CHOKE, pm->getId());
try {
char msg[6];
@ -84,7 +84,7 @@ void PeerMessageUtilTest::testCreatePeerMessageUnchoke() {
char msg[5];
createNLengthMessage(msg, sizeof(msg), 1, 1);
PeerMessage* pm = PeerMessageUtil::createPeerMessage(&msg[4], 1);
CPPUNIT_ASSERT_EQUAL((int)PeerMessage::UNCHOKE, pm->id);
CPPUNIT_ASSERT_EQUAL((int)PeerMessage::UNCHOKE, pm->getId());
try {
char msg[6];
@ -99,7 +99,7 @@ void PeerMessageUtilTest::testCreatePeerMessageInterested() {
char msg[5];
createNLengthMessage(msg, sizeof(msg), 1, 2);
PeerMessage* pm = PeerMessageUtil::createPeerMessage(&msg[4], 1);
CPPUNIT_ASSERT_EQUAL((int)PeerMessage::INTERESTED, pm->id);
CPPUNIT_ASSERT_EQUAL((int)PeerMessage::INTERESTED, pm->getId());
try {
char msg[6];
@ -114,7 +114,7 @@ void PeerMessageUtilTest::testCreatePeerMessageNotInterested() {
char msg[5];
createNLengthMessage(msg, sizeof(msg), 1, 3);
PeerMessage* pm = PeerMessageUtil::createPeerMessage(&msg[4], 1);
CPPUNIT_ASSERT_EQUAL((int)PeerMessage::NOT_INTERESTED, pm->id);
CPPUNIT_ASSERT_EQUAL((int)PeerMessage::NOT_INTERESTED, pm->getId());
try {
char msg[6];
@ -130,8 +130,8 @@ void PeerMessageUtilTest::testCreatePeerMessageHave() {
createNLengthMessage(msg, sizeof(msg), 5, 4);
setIntParam(&msg[5], 100);
PeerMessage* pm = PeerMessageUtil::createPeerMessage(&msg[4], 5);
CPPUNIT_ASSERT_EQUAL((int)PeerMessage::HAVE, pm->id);
CPPUNIT_ASSERT_EQUAL(100, pm->index);
CPPUNIT_ASSERT_EQUAL((int)PeerMessage::HAVE, pm->getId());
CPPUNIT_ASSERT_EQUAL(100, pm->getIndex());
try {
char msg[8];
@ -153,10 +153,10 @@ void PeerMessageUtilTest::testCreatePeerMessageBitfield() {
char* msg = new char[msgLen];
createNLengthMessage(msg, msgLen, 3, 5);
PeerMessage* pm = PeerMessageUtil::createPeerMessage(&msg[4], 3);
CPPUNIT_ASSERT_EQUAL((int)PeerMessage::BITFIELD, pm->id);
CPPUNIT_ASSERT_EQUAL((unsigned char)0, pm->bitfield[0]);
CPPUNIT_ASSERT_EQUAL((unsigned char)0, pm->bitfield[1]);
CPPUNIT_ASSERT_EQUAL(2, pm->bitfieldLen);
CPPUNIT_ASSERT_EQUAL((int)PeerMessage::BITFIELD, pm->getId());
CPPUNIT_ASSERT_EQUAL((unsigned char)0, pm->getBitfield()[0]);
CPPUNIT_ASSERT_EQUAL((unsigned char)0, pm->getBitfield()[1]);
CPPUNIT_ASSERT_EQUAL(2, pm->getBitfieldLength());
try {
int msgLen = 5;
@ -174,10 +174,10 @@ void PeerMessageUtilTest::testCreatePeerMessageRequest() {
setIntParam(&msg[9], 16*1024);
setIntParam(&msg[13], 16*1024-1);
PeerMessage* pm = PeerMessageUtil::createPeerMessage(&msg[4], 13);
CPPUNIT_ASSERT_EQUAL((int)PeerMessage::REQUEST, pm->id);
CPPUNIT_ASSERT_EQUAL(1, pm->index);
CPPUNIT_ASSERT_EQUAL(16*1024, pm->begin);
CPPUNIT_ASSERT_EQUAL(16*1024-1, pm->length);
CPPUNIT_ASSERT_EQUAL((int)PeerMessage::REQUEST, pm->getId());
CPPUNIT_ASSERT_EQUAL(1, pm->getIndex());
CPPUNIT_ASSERT_EQUAL(16*1024, pm->getBegin());
CPPUNIT_ASSERT_EQUAL(16*1024-1, pm->getLength());
try {
char msg[13];
@ -195,12 +195,12 @@ void PeerMessageUtilTest::testCreatePeerMessagePiece() {
setIntParam(&msg[5], 1);
setIntParam(&msg[9], 16*1024);
PeerMessage* pm = PeerMessageUtil::createPeerMessage(&msg[4], 19);
CPPUNIT_ASSERT_EQUAL((int)PeerMessage::PIECE, pm->id);
CPPUNIT_ASSERT_EQUAL(1, pm->index);
CPPUNIT_ASSERT_EQUAL(16*1024, pm->begin);
CPPUNIT_ASSERT_EQUAL(10, pm->blockLen);
CPPUNIT_ASSERT_EQUAL((int)PeerMessage::PIECE, pm->getId());
CPPUNIT_ASSERT_EQUAL(1, pm->getIndex());
CPPUNIT_ASSERT_EQUAL(16*1024, pm->getBegin());
CPPUNIT_ASSERT_EQUAL(10, pm->getBlockLength());
for(int i = 0; i < 10; i++) {
CPPUNIT_ASSERT_EQUAL((char)0, pm->block[i]);
CPPUNIT_ASSERT_EQUAL((char)0, pm->getBlock()[i]);
}
try {
@ -220,10 +220,10 @@ void PeerMessageUtilTest::testCreatePeerMessageCancel() {
setIntParam(&msg[9], 16*1024);
setIntParam(&msg[13], 16*1024-1);
PeerMessage* pm = PeerMessageUtil::createPeerMessage(&msg[4], 13);
CPPUNIT_ASSERT_EQUAL((int)PeerMessage::CANCEL, pm->id);
CPPUNIT_ASSERT_EQUAL(1, pm->index);
CPPUNIT_ASSERT_EQUAL(16*1024, pm->begin);
CPPUNIT_ASSERT_EQUAL(16*1024-1, pm->length);
CPPUNIT_ASSERT_EQUAL((int)PeerMessage::CANCEL, pm->getId());
CPPUNIT_ASSERT_EQUAL(1, pm->getIndex());
CPPUNIT_ASSERT_EQUAL(16*1024, pm->getBegin());
CPPUNIT_ASSERT_EQUAL(16*1024-1, pm->getLength());
try {
char msg[13];
@ -237,8 +237,8 @@ void PeerMessageUtilTest::testCreatePeerMessageCancel() {
void PeerMessageUtilTest::testCheckIntegrityHave() {
PeerMessage* pm = new PeerMessage();
pm->id = PeerMessage::HAVE;
pm->index = 119;
pm->setId(PeerMessage::HAVE);
pm->setIndex(119);
try {
PeerMessageUtil::checkIntegrity(pm, 256*1024, 120, 256*1024*120);
} catch(Exception* ex) {
@ -246,7 +246,7 @@ void PeerMessageUtilTest::testCheckIntegrityHave() {
CPPUNIT_FAIL("");
}
pm->index = 120;
pm->setIndex(120);
try {
PeerMessageUtil::checkIntegrity(pm, 256*1024, 120, 256*1024*120);
CPPUNIT_FAIL("exception must be throwed.");
@ -256,62 +256,68 @@ void PeerMessageUtilTest::testCheckIntegrityHave() {
void PeerMessageUtilTest::testCheckIntegrityBitfield() {
PeerMessage* pm = new PeerMessage();
pm->id = PeerMessage::BITFIELD;
pm->bitfieldLen = 15;
pm->bitfield = new unsigned char[pm->bitfieldLen];
memset(pm->bitfield, 1, pm->bitfieldLen);
pm->setId(PeerMessage::BITFIELD);
int bitfieldLength = 15;
unsigned char* bitfield = new unsigned char[bitfieldLength];
memset(bitfield, 0xff, bitfieldLength);
pm->setBitfield(bitfield, bitfieldLength);
try {
PeerMessageUtil::checkIntegrity(pm, 256*1024, 120, 256*1024*120);
} catch(Exception* ex) {
cerr << ex->getMsg() << endl;
CPPUNIT_FAIL("");
}
pm->bitfieldLen = 16;
pm->bitfield = new unsigned char[pm->bitfieldLen];
memset(pm->bitfield, 1, pm->bitfieldLen);
delete [] bitfield;
bitfieldLength = 16;
bitfield = new unsigned char[bitfieldLength];
memset(bitfield, 0xff, bitfieldLength);
pm->setBitfield(bitfield, bitfieldLength);
try {
PeerMessageUtil::checkIntegrity(pm, 256*1024, 120, 256*1024*120);
CPPUNIT_FAIL("exception must be throwed.");
} catch(Exception* ex) {
}
pm->bitfieldLen = 14;
pm->bitfield = new unsigned char[pm->bitfieldLen];
memset(pm->bitfield, 1, pm->bitfieldLen);
delete [] bitfield;
bitfieldLength = 14;
bitfield = new unsigned char[bitfieldLength];
memset(bitfield, 0xff, bitfieldLength);
pm->setBitfield(bitfield, bitfieldLength);
try {
PeerMessageUtil::checkIntegrity(pm, 256*1024, 120, 256*1024*120);
CPPUNIT_FAIL("exception must be throwed.");
} catch(Exception* ex) {
}
pm->bitfieldLen = 15;
pm->bitfield = new unsigned char[pm->bitfieldLen];
memset(pm->bitfield, 1, pm->bitfieldLen);
pm->bitfield[pm->bitfieldLen-1] &= 0xfe;
delete [] bitfield;
bitfieldLength = 15;
bitfield = new unsigned char[bitfieldLength];
memset(bitfield, 0xff, bitfieldLength);
bitfield[bitfieldLength-1] &= 0xfe;
pm->setBitfield(bitfield, bitfieldLength);
try {
PeerMessageUtil::checkIntegrity(pm, 256*1024, 119, 256*1024*120);
} catch(Exception* ex) {
cerr << ex->getMsg() << endl;
CPPUNIT_FAIL("");
}
pm->bitfieldLen = 15;
pm->bitfield = new unsigned char[pm->bitfieldLen];
memset(pm->bitfield, 1, pm->bitfieldLen);
delete [] bitfield;
bitfieldLength = 15;
bitfield = new unsigned char[bitfieldLength];
memset(bitfield, 0xff, bitfieldLength);
pm->setBitfield(bitfield, bitfieldLength);
try {
PeerMessageUtil::checkIntegrity(pm, 256*1024, 119, 256*1024*120);
CPPUNIT_FAIL("exception must be throwed.");
} catch(Exception* ex) {
}
delete [] bitfield;
}
void PeerMessageUtilTest::testCheckIntegrityRequest() {
PeerMessage* pm = new PeerMessage();
pm->id = PeerMessage::REQUEST;
pm->index = 119;
pm->begin = 0;
pm->length = 16*1024;
pm->setId(PeerMessage::REQUEST);
pm->setIndex(119);
pm->setBegin(0);
pm->setLength(16*1024);
try {
PeerMessageUtil::checkIntegrity(pm, 256*1024, 120, 256*1024*120);
@ -320,33 +326,24 @@ void PeerMessageUtilTest::testCheckIntegrityRequest() {
CPPUNIT_FAIL("");
}
pm->begin = 256*1024;
pm->length = 16*1024;
pm->setBegin(256*1024);
pm->setLength(16*1024);
try {
PeerMessageUtil::checkIntegrity(pm, 256*1024, 120, 256*1024*120);
CPPUNIT_FAIL("exception must be throwed.");
} catch(Exception* ex) {}
pm->begin = 0;
pm->length = 256*1024+1;
pm->setBegin(0);
pm->setLength(256*1024);
try {
PeerMessageUtil::checkIntegrity(pm, 256*1024, 120, 256*1024*120);
CPPUNIT_FAIL("exception must be throwed.");
} catch(Exception* ex) {}
pm->begin = 0;
pm->length = 256*1024;
pm->setBegin(0);
pm->setLength(5);
try {
PeerMessageUtil::checkIntegrity(pm, 256*1024, 120, 256*1024*120);
} catch(Exception* ex) {
cerr << ex->getMsg() << endl;
CPPUNIT_FAIL("");
}
pm->begin = 0;
pm->length = 256*1024;
try {
PeerMessageUtil::checkIntegrity(pm, 256*1024, 120, 256*1024*120-1);
CPPUNIT_FAIL("exception must be throwed.");
} catch(Exception* ex) {}
}

View File

@ -39,7 +39,7 @@ void ShaVisitorTest::testVisit() {
ShaVisitor v;
Data d("test", 4);
d.accept(&v);
unsigned char md[EVP_MAX_MD_SIZE];
unsigned char md[20];
int len = 0;
v.getHash(md, len);
string hashHex = hexHash(md, len);
@ -51,7 +51,7 @@ void ShaVisitorTest::testVisitCompound() {
ShaVisitor v;
MetaEntry* e = MetaFileUtil::parseMetaFile("test.torrent");
e->accept(&v);
unsigned char md[EVP_MAX_MD_SIZE];
unsigned char md[20];
int len = 0;
v.getHash(md, len);
string hashHex = hexHash(md, len);

View File

@ -7,12 +7,14 @@ using namespace std;
class TorrentManTest:public CppUnit::TestFixture {
CPPUNIT_TEST_SUITE(TorrentManTest);
/*
CPPUNIT_TEST(testUpdatePeers);
//CPPUNIT_TEST(testUpdatePeer);
CPPUNIT_TEST(testGetPeer);
CPPUNIT_TEST(testGetMissingPiece);
CPPUNIT_TEST(testCancelPiece);
CPPUNIT_TEST(testAddPeer);
*/
CPPUNIT_TEST_SUITE_END();
private:
@ -44,7 +46,7 @@ Peers createPeers() {
peers.push_back(peer3);
return peers;
}
/*
void TorrentManTest::testUpdatePeers() {
TorrentMan tm;
Peers peers = createPeers();
@ -58,7 +60,7 @@ void TorrentManTest::testUpdatePeers() {
CPPUNIT_ASSERT_EQUAL(string("192.168.0.3"), (*itr)->ipaddr);
itr++;
}
*/
/*
void TorrentManTest::testUpdatePeer() {
TorrentMan tm;
@ -88,7 +90,7 @@ void TorrentManTest::testUpdatePeer() {
itr++;
}
*/
/*
void TorrentManTest::testGetPeer() {
TorrentMan tm;
Peers peers = createPeers();
@ -186,3 +188,4 @@ void TorrentManTest::testAddPeer() {
CPPUNIT_ASSERT_EQUAL(5, (int)tm.getPeers().size());
}
*/

View File

@ -70,13 +70,13 @@ void UtilTest::testSplit() {
}
void UtilTest::testSlice() {
vector<string> v1;
Strings v1;
Util::slice(v1, "name1=value1; name2=value2; name3=value3;", ';');
CPPUNIT_ASSERT_EQUAL(3, (int)v1.size());
v1.clear();
Util::slice(v1, "name1=value1; name2=value2; name3=value3", ';');
CPPUNIT_ASSERT_EQUAL(3, (int)v1.size());
vector<string>::iterator itr = v1.begin();
Strings::iterator itr = v1.begin();
CPPUNIT_ASSERT_EQUAL(string("name1=value1"), *itr++);
CPPUNIT_ASSERT_EQUAL(string("name2=value2"), *itr++);
CPPUNIT_ASSERT_EQUAL(string("name3=value3"), *itr++);