Browse Source

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

	Added operator+=, operator-=, operator-
	* src/TransferStat.cc
	* src/TransferStat.h
Tatsuhiro Tsujikawa 16 years ago
parent
commit
948b13ad52
3 changed files with 67 additions and 1 deletions
  1. 6 0
      ChangeLog
  2. 53 1
      src/TransferStat.cc
  3. 8 0
      src/TransferStat.h

+ 6 - 0
ChangeLog

@@ -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>
 2009-03-20  Tatsuhiro Tsujikawa  <t-tujikawa@users.sourceforge.net>
 
 
 	Refactored RarestPieceSelector to reduce CPU load, especially for
 	Refactored RarestPieceSelector to reduce CPU load, especially for

+ 53 - 1
src/TransferStat.cc

@@ -41,9 +41,61 @@ TransferStat operator+(const TransferStat& a, const TransferStat& b)
   TransferStat c;
   TransferStat c;
   c.downloadSpeed = a.downloadSpeed+b.downloadSpeed;
   c.downloadSpeed = a.downloadSpeed+b.downloadSpeed;
   c.uploadSpeed = a.uploadSpeed+b.uploadSpeed;
   c.uploadSpeed = a.uploadSpeed+b.uploadSpeed;
-  c.sessionUploadLength = a.sessionUploadLength+b.sessionUploadLength;
   c.sessionDownloadLength = a.sessionDownloadLength+b.sessionDownloadLength;
   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;
   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
 } // namespace aria2

+ 8 - 0
src/TransferStat.h

@@ -76,6 +76,12 @@ public:
 
 
   friend TransferStat operator+(const TransferStat& a, const TransferStat& b);
   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 {
   unsigned int getDownloadSpeed() const {
     return downloadSpeed;
     return downloadSpeed;
   }
   }
@@ -121,6 +127,8 @@ public:
 
 
 TransferStat operator+(const TransferStat& a, const TransferStat& b);
 TransferStat operator+(const TransferStat& a, const TransferStat& b);
 
 
+TransferStat operator-(const TransferStat& a, const TransferStat& b);
+
 } // namespace aria2
 } // namespace aria2
 
 
 #endif // _D_TRANSFER_STAT_H_
 #endif // _D_TRANSFER_STAT_H_