Hand down progress listener.
[jSite.git] / src / de / todesbaum / util / freenet / fcp2 / Client.java
index 9376159..63fa418 100644 (file)
@@ -23,6 +23,8 @@ import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
 
+import de.todesbaum.util.io.StreamCopier.ProgressListener;
+
 /**
  * A Client executes {@link Command}s over a {@link Connection} to a
  * {@link Node} and delivers resulting {@link Message}s.
@@ -113,6 +115,23 @@ public class Client implements ConnectionListener {
        }
 
        /**
+        * Executes the specified command. This will also clear the queue of
+        * messages, discarding all messages that resulted from the previous
+        * command and have not yet been read.
+        *
+        * @param command
+        *            The command to execute
+        * @param progressListener
+        *            The progress listener for payload transfers
+        * @throws IOException
+        *             if an I/O error occurs
+        * @see #execute(Command, boolean)
+        */
+       public void execute(Command command, ProgressListener progressListener) throws IOException {
+               execute(command, true, progressListener);
+       }
+
+       /**
         * Executes the specified command and optionally clears the list of
         * identifiers this clients listens to before starting the command.
         *
@@ -125,6 +144,24 @@ public class Client implements ConnectionListener {
         *             if an I/O error occurs
         */
        public void execute(Command command, boolean removeExistingIdentifiers) throws IOException {
+               execute(command, removeExistingIdentifiers, null);
+       }
+
+       /**
+        * Executes the specified command and optionally clears the list of
+        * identifiers this clients listens to before starting the command.
+        *
+        * @param command
+        *            The command to execute
+        * @param removeExistingIdentifiers
+        *            If <code>true</code>, the list of identifiers that this
+        *            clients listens to is cleared
+        * @param progressListener
+        *            The progress listener for payload transfers
+        * @throws IOException
+        *             if an I/O error occurs
+        */
+       public void execute(Command command, boolean removeExistingIdentifiers, ProgressListener progressListener) throws IOException {
                synchronized (messageQueue) {
                        messageQueue.clear();
                        if (removeExistingIdentifiers) {
@@ -132,7 +169,7 @@ public class Client implements ConnectionListener {
                        }
                        identifiers.add(command.getIdentifier());
                }
-               connection.execute(command);
+               connection.execute(command, progressListener);
        }
 
        /**