summaryrefslogtreecommitdiff
path: root/src/TransferStat.cc
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2009-03-20 13:39:08 +0000
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2009-03-20 13:39:08 +0000
commit948b13ad52aaf19f0deb7d014410ef77f9e21b38 (patch)
treea698c48b06dd6fd340553587d4ecaa242fc1b893 /src/TransferStat.cc
parent662a90ce9bfaa1f30750309c82c49536506f20b4 (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.cc54
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