diff options
| author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2009-03-20 13:39:08 +0000 |
|---|---|---|
| committer | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2009-03-20 13:39:08 +0000 |
| commit | 948b13ad52aaf19f0deb7d014410ef77f9e21b38 (patch) | |
| tree | a698c48b06dd6fd340553587d4ecaa242fc1b893 /src/TransferStat.cc | |
| parent | 662a90ce9bfaa1f30750309c82c49536506f20b4 (diff) | |
2009-03-20 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Added operator+=, operator-=, operator-
* src/TransferStat.cc
* src/TransferStat.h
Diffstat (limited to 'src/TransferStat.cc')
| -rw-r--r-- | src/TransferStat.cc | 54 |
1 files changed, 53 insertions, 1 deletions
diff --git a/src/TransferStat.cc b/src/TransferStat.cc index 8ae54ee9..cdfd510d 100644 --- a/src/TransferStat.cc +++ b/src/TransferStat.cc @@ -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 |
