From 3cb235bbfde51a3a7136609c07b90f8a9dd93303 Mon Sep 17 00:00:00 2001 From: Shikhar Bhushan Date: Sun, 1 Aug 2010 18:32:06 +0100 Subject: [PATCH] cleanup in transport.Heartbeater --- .../schmizz/sshj/transport/Heartbeater.java | 27 ++++++++++--------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/src/main/java/net/schmizz/sshj/transport/Heartbeater.java b/src/main/java/net/schmizz/sshj/transport/Heartbeater.java index a5256ebe..618ad5cf 100644 --- a/src/main/java/net/schmizz/sshj/transport/Heartbeater.java +++ b/src/main/java/net/schmizz/sshj/transport/Heartbeater.java @@ -59,29 +59,29 @@ final class Heartbeater synchronized void setInterval(int interval) { this.interval = interval; - if (interval != 0) { - if (!started) - start(); - notify(); - } + if (interval > 0 && getState() == Thread.State.NEW) + start(); + notify(); } synchronized int getInterval() { return interval; } + synchronized private int getPositiveInterval() + throws InterruptedException { + while (interval <= 0) + wait(); + return interval; + } + @Override public void run() { + log.debug("Starting"); try { while (!Thread.currentThread().isInterrupted()) { - int hi; - synchronized (this) { - while ((hi = interval) == 0) - wait(); - } - if (!started) - started = true; - else if (trans.isRunning()) { + final int hi = getPositiveInterval(); + if (trans.isRunning()) { log.info("Sending heartbeat since {} seconds elapsed", hi); trans.write(new SSHPacket(Message.IGNORE)); } @@ -96,4 +96,5 @@ final class Heartbeater log.debug("Stopping"); } + }