2009-03-20 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>

Added operator+=, operator-=, operator-
	* src/TransferStat.cc
	* src/TransferStat.h
pull/1/head
Tatsuhiro Tsujikawa 2009-03-20 13:39:08 +00:00
parent 662a90ce9b
commit 948b13ad52
3 changed files with 67 additions and 1 deletions

View File

@ -1,3 +1,9 @@
2009-03-20 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Added operator+=, operator-=, operator-
* src/TransferStat.cc
* src/TransferStat.h
2009-03-20 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Refactored RarestPieceSelector to reduce CPU load, especially for

View File

@ -41,9 +41,61 @@ TransferStat operator+(const TransferStat& a, const TransferStat& b)
TransferStat c;
c.downloadSpeed = a.downloadSpeed+b.downloadSpeed;
c.uploadSpeed = a.uploadSpeed+b.uploadSpeed;
c.sessionUploadLength = a.sessionUploadLength+b.sessionUploadLength;
c.sessionDownloadLength = a.sessionDownloadLength+b.sessionDownloadLength;
c.sessionUploadLength = a.sessionUploadLength+b.sessionUploadLength;
return c;
}
TransferStat operator-(const TransferStat& a, const TransferStat& b)
{
TransferStat c;
if(a.downloadSpeed > b.downloadSpeed) {
c.downloadSpeed = a.downloadSpeed-b.downloadSpeed;
}
if(a.uploadSpeed > b.uploadSpeed) {
c.uploadSpeed = a.uploadSpeed-b.uploadSpeed;
}
if(a.sessionDownloadLength > b.sessionDownloadLength) {
c.sessionDownloadLength = a.sessionDownloadLength-b.sessionDownloadLength;
}
if(a.sessionUploadLength > b.sessionUploadLength) {
c.sessionUploadLength = a.sessionUploadLength-b.sessionUploadLength;
}
return c;
}
TransferStat& TransferStat::operator+=(const TransferStat& stat)
{
downloadSpeed += stat.downloadSpeed;
uploadSpeed += stat.uploadSpeed;
sessionDownloadLength += stat.sessionDownloadLength;
sessionUploadLength += stat.sessionUploadLength;
return *this;
}
TransferStat& TransferStat::operator-=(const TransferStat& stat)
{
if(downloadSpeed > stat.downloadSpeed) {
downloadSpeed -= stat.downloadSpeed;
} else {
downloadSpeed = 0;
}
if(uploadSpeed > stat.uploadSpeed) {
uploadSpeed -= stat.uploadSpeed;
} else {
uploadSpeed = 0;
}
if(sessionDownloadLength > stat.sessionDownloadLength) {
sessionDownloadLength -= stat.sessionDownloadLength;
} else {
sessionDownloadLength = 0;
}
if(sessionUploadLength > stat.sessionUploadLength) {
sessionUploadLength -= stat.sessionUploadLength;
} else {
sessionUploadLength = 0;
}
return *this;
}
} // namespace aria2

View File

@ -76,6 +76,12 @@ public:
friend TransferStat operator+(const TransferStat& a, const TransferStat& b);
friend TransferStat operator-(const TransferStat& a, const TransferStat& b);
TransferStat& operator+=(const TransferStat& stat);
TransferStat& operator-=(const TransferStat& stat);
unsigned int getDownloadSpeed() const {
return downloadSpeed;
}
@ -121,6 +127,8 @@ public:
TransferStat operator+(const TransferStat& a, const TransferStat& b);
TransferStat operator-(const TransferStat& a, const TransferStat& b);
} // namespace aria2
#endif // _D_TRANSFER_STAT_H_