You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by se...@apache.org on 2017/02/07 20:33:05 UTC

svn commit: r1782077 - in /commons/proper/net/trunk/src: changes/changes.xml main/java/org/apache/commons/net/tftp/TFTPClient.java

Author: sebb
Date: Tue Feb  7 20:33:05 2017
New Revision: 1782077

URL: http://svn.apache.org/viewvc?rev=1782077&view=rev
Log:
NET-604 TFTP send & receive don't have progress indication

Modified:
    commons/proper/net/trunk/src/changes/changes.xml
    commons/proper/net/trunk/src/main/java/org/apache/commons/net/tftp/TFTPClient.java

Modified: commons/proper/net/trunk/src/changes/changes.xml
URL: http://svn.apache.org/viewvc/commons/proper/net/trunk/src/changes/changes.xml?rev=1782077&r1=1782076&r2=1782077&view=diff
==============================================================================
--- commons/proper/net/trunk/src/changes/changes.xml [utf-8] (original)
+++ commons/proper/net/trunk/src/changes/changes.xml [utf-8] Tue Feb  7 20:33:05 2017
@@ -87,6 +87,9 @@ without checking it if is a space.
   The POP3Mail examples can now get password from console, stdin or an environment variable.
   
 ">
+            <action issue="NET-604" type="fix" dev="sebb" due-to="Frank Delporte">
+            TFTP send & receive don't have progress indication
+            </action>
             <action issue="NET-588" type="fix" dev="sebb" due-to="Dave Nice / Thai H">
             FTPClient.setPassiveNatWorkaround assumes host is outside site local range
             </action>

Modified: commons/proper/net/trunk/src/main/java/org/apache/commons/net/tftp/TFTPClient.java
URL: http://svn.apache.org/viewvc/commons/proper/net/trunk/src/main/java/org/apache/commons/net/tftp/TFTPClient.java?rev=1782077&r1=1782076&r2=1782077&view=diff
==============================================================================
--- commons/proper/net/trunk/src/main/java/org/apache/commons/net/tftp/TFTPClient.java (original)
+++ commons/proper/net/trunk/src/main/java/org/apache/commons/net/tftp/TFTPClient.java Tue Feb  7 20:33:05 2017
@@ -65,6 +65,12 @@ public class TFTPClient extends TFTP
     /*** The maximum number of timeouts allowed before failing. ***/
     private int __maxTimeouts;
 
+    /*** The number of bytes received in the ongoing download. ***/
+    private long totalBytesReceived = 0;
+
+    /*** The number of bytes sent in the ongoing upload. ***/
+    private long totalBytesSent = 0;
+
     /***
      * Creates a TFTPClient instance with a default timeout of DEFAULT_TIMEOUT,
      * maximum timeouts value of DEFAULT_MAX_TIMEOUTS, a null socket,
@@ -106,6 +112,20 @@ public class TFTPClient extends TFTP
     }
 
 
+    /**
+     * @return The number of bytes received in the ongoing download
+     */
+    public long getTotalBytesReceived() {
+        return totalBytesReceived;
+    }
+
+    /**
+     * @return The number of bytes sent in the ongoing download
+     */
+    public long getTotalBytesSent() {
+        return totalBytesSent;
+    }
+
     /***
      * Requests a named file from a remote host, writes the
      * file to an OutputStream, closes the connection, and returns the number
@@ -135,6 +155,7 @@ public class TFTPClient extends TFTP
         beginBufferedOps();
 
         dataLength = lastBlock = hostPort = bytesRead = 0;
+        totalBytesReceived = 0;
         block = 1;
 
         if (mode == TFTP.ASCII_MODE) {
@@ -277,6 +298,7 @@ _receivePacket:
             ack.setBlockNumber(lastBlock);
             sent = ack;
             bytesRead += dataLength;
+            totalBytesReceived += dataLength;
         } // First data packet less than 512 bytes signals end of stream.
 
         while (dataLength == TFTPPacket.SEGMENT_SIZE);
@@ -386,6 +408,7 @@ _receivePacket:
         beginBufferedOps();
 
         dataLength = lastBlock = hostPort = bytesRead = totalThisPacket = 0;
+        totalBytesSent = 0L;
         block = 0;
         boolean lastAckWait = false;
 
@@ -541,6 +564,7 @@ _receivePacket:
             data.setBlockNumber(block);
             data.setData(_sendBuffer, 4, totalThisPacket);
             sent = data;
+            totalBytesSent += totalThisPacket;
         }
         while ( totalThisPacket > 0 || lastAckWait );
         // Note: this was looping while dataLength == 0 || lastAckWait,