From da2cec8fa29fa11d857581707f1fdd6eda62d609 Mon Sep 17 00:00:00 2001 From: Shikhar Bhushan Date: Sat, 12 Feb 2011 20:23:58 +0000 Subject: [PATCH] Add a timed join() method to Channel, update Exec example --- src/main/java/examples/Exec.java | 2 ++ .../net/schmizz/sshj/connection/channel/AbstractChannel.java | 5 +++++ .../java/net/schmizz/sshj/connection/channel/Channel.java | 4 ++++ 3 files changed, 11 insertions(+) diff --git a/src/main/java/examples/Exec.java b/src/main/java/examples/Exec.java index 9c7b4982..0fd3100b 100644 --- a/src/main/java/examples/Exec.java +++ b/src/main/java/examples/Exec.java @@ -20,6 +20,7 @@ import net.schmizz.sshj.connection.channel.direct.Session; import net.schmizz.sshj.connection.channel.direct.Session.Command; import java.io.IOException; +import java.util.concurrent.TimeUnit; /** This examples demonstrates how a remote command can be executed. */ public class Exec { @@ -36,6 +37,7 @@ public class Exec { try { final Command cmd = session.exec("ping -c 1 google.com"); System.out.print(cmd.getOutputAsString()); + cmd.join(5, TimeUnit.SECONDS); System.out.println("\n** exit status: " + cmd.getExitStatus()); } finally { session.close(); diff --git a/src/main/java/net/schmizz/sshj/connection/channel/AbstractChannel.java b/src/main/java/net/schmizz/sshj/connection/channel/AbstractChannel.java index 8fc5c3d1..894c6618 100644 --- a/src/main/java/net/schmizz/sshj/connection/channel/AbstractChannel.java +++ b/src/main/java/net/schmizz/sshj/connection/channel/AbstractChannel.java @@ -272,6 +272,11 @@ public abstract class AbstractChannel close.await(); } + public void join(int timeout, TimeUnit unit) + throws ConnectionException { + close.await(timeout, unit); + } + protected synchronized void sendClose() throws TransportException { try { diff --git a/src/main/java/net/schmizz/sshj/connection/channel/Channel.java b/src/main/java/net/schmizz/sshj/connection/channel/Channel.java index 6ce9d787..92328165 100644 --- a/src/main/java/net/schmizz/sshj/connection/channel/Channel.java +++ b/src/main/java/net/schmizz/sshj/connection/channel/Channel.java @@ -23,6 +23,7 @@ import net.schmizz.sshj.transport.TransportException; import java.io.Closeable; import java.io.InputStream; import java.io.OutputStream; +import java.util.concurrent.TimeUnit; /** A channel is the basic medium for application-layer data on top of an SSH transport. */ public interface Channel @@ -138,4 +139,7 @@ public interface Channel void join() throws ConnectionException; + void join(int timeout, TimeUnit unit) + throws ConnectionException; + }