From 14dbab0887053a7093431aaa92058980c6bb3668 Mon Sep 17 00:00:00 2001 From: David McKnight Date: Wed, 9 Aug 2006 15:35:25 +0000 Subject: [PATCH] fix for 153001 - need to terminate shell output reader --- .../services/dstore/shell/DStoreShellOutputReader.java | 9 ++++++++- .../rse/services/dstore/shells/DStoreHostShell.java | 2 ++ .../services/shells/AbstractHostShellOutputReader.java | 2 +- .../rse/services/shells/IHostShellOutputReader.java | 1 + 4 files changed, 12 insertions(+), 2 deletions(-) diff --git a/rse/plugins/org.eclipse.rse.services.dstore/src/org/eclipse/rse/internal/services/dstore/shell/DStoreShellOutputReader.java b/rse/plugins/org.eclipse.rse.services.dstore/src/org/eclipse/rse/internal/services/dstore/shell/DStoreShellOutputReader.java index d0d89450bbd..a4e81481272 100644 --- a/rse/plugins/org.eclipse.rse.services.dstore/src/org/eclipse/rse/internal/services/dstore/shell/DStoreShellOutputReader.java +++ b/rse/plugins/org.eclipse.rse.services.dstore/src/org/eclipse/rse/internal/services/dstore/shell/DStoreShellOutputReader.java @@ -31,6 +31,7 @@ public class DStoreShellOutputReader extends AbstractHostShellOutputReader imple public DStoreShellOutputReader(IHostShell hostShell, DataElement status, boolean isErrorReader) { super(hostShell, isErrorReader); + setName("DStoreShellOutputReader"+getName()); _status = status; if (status != null) { @@ -46,7 +47,7 @@ public class DStoreShellOutputReader extends AbstractHostShellOutputReader imple protected Object internalReadLine() { - if (_status != null) + if (_status != null && _keepRunning) { int newSize = _status.getNestedSize(); while (newSize > _statusOffset) @@ -136,6 +137,12 @@ public class DStoreShellOutputReader extends AbstractHostShellOutputReader imple } } + public void finish() + { + super.finish(); + notifyResponse(); + } + /* private void handleInput() { diff --git a/rse/plugins/org.eclipse.rse.services.dstore/src/org/eclipse/rse/services/dstore/shells/DStoreHostShell.java b/rse/plugins/org.eclipse.rse.services.dstore/src/org/eclipse/rse/services/dstore/shells/DStoreHostShell.java index 78c68431f58..fd2b5e8397d 100644 --- a/rse/plugins/org.eclipse.rse.services.dstore/src/org/eclipse/rse/services/dstore/shells/DStoreHostShell.java +++ b/rse/plugins/org.eclipse.rse.services.dstore/src/org/eclipse/rse/services/dstore/shells/DStoreHostShell.java @@ -66,6 +66,8 @@ public class DStoreHostShell extends AbstractHostShell implements IHostShell public void exit() { writeToShell("exit"); + _stdoutHandler.finish(); + _stderrHandler.finish(); } diff --git a/rse/plugins/org.eclipse.rse.services/src/org/eclipse/rse/services/shells/AbstractHostShellOutputReader.java b/rse/plugins/org.eclipse.rse.services/src/org/eclipse/rse/services/shells/AbstractHostShellOutputReader.java index b00aba64db9..7f6dd06be11 100644 --- a/rse/plugins/org.eclipse.rse.services/src/org/eclipse/rse/services/shells/AbstractHostShellOutputReader.java +++ b/rse/plugins/org.eclipse.rse.services/src/org/eclipse/rse/services/shells/AbstractHostShellOutputReader.java @@ -168,7 +168,7 @@ public abstract class AbstractHostShellOutputReader extends Thread implements I dispose(); } } - + public void run() { while (_keepRunning) diff --git a/rse/plugins/org.eclipse.rse.services/src/org/eclipse/rse/services/shells/IHostShellOutputReader.java b/rse/plugins/org.eclipse.rse.services/src/org/eclipse/rse/services/shells/IHostShellOutputReader.java index 29cd9ddb0bf..0779add9a43 100644 --- a/rse/plugins/org.eclipse.rse.services/src/org/eclipse/rse/services/shells/IHostShellOutputReader.java +++ b/rse/plugins/org.eclipse.rse.services/src/org/eclipse/rse/services/shells/IHostShellOutputReader.java @@ -22,4 +22,5 @@ public interface IHostShellOutputReader extends IHostShellOutputNotifier public Object readLine(int index); public void addOutputListener(IHostShellOutputListener listener); public boolean isErrorReader(); + public void finish(); } \ No newline at end of file