[yocto] [eclipse-poky][branch:windows-build][PATCH 1/4] Adapt usage of LocalHostShell lock and reader to upstream changes

Ioana Grigoropol ioanax.grigoropol at intel.com
Thu May 23 07:38:32 PDT 2013


Signed-off-by: Ioana Grigoropol <ioanax.grigoropol at intel.com>
---
 .../org/yocto/bc/remote/utils/RemoteHelper.java    |   27 +++++++++++++++-----
 1 file changed, 21 insertions(+), 6 deletions(-)

diff --git a/plugins/org.yocto.bc.ui/src/org/yocto/bc/remote/utils/RemoteHelper.java b/plugins/org.yocto.bc.ui/src/org/yocto/bc/remote/utils/RemoteHelper.java
index 507ac54..87c8637 100644
--- a/plugins/org.yocto.bc.ui/src/org/yocto/bc/remote/utils/RemoteHelper.java
+++ b/plugins/org.yocto.bc.ui/src/org/yocto/bc/remote/utils/RemoteHelper.java
@@ -35,6 +35,7 @@ import org.eclipse.rse.core.RSECorePlugin;
 import org.eclipse.rse.core.model.IHost;
 import org.eclipse.rse.core.model.ISystemRegistry;
 import org.eclipse.rse.core.subsystems.ISubSystem;
+import org.eclipse.rse.internal.services.local.shells.LocalHostShell;
 import org.eclipse.rse.services.IService;
 import org.eclipse.rse.services.clientserver.messages.SystemMessageException;
 import org.eclipse.rse.services.files.IFileService;
@@ -87,18 +88,31 @@ public class RemoteHelper {
 		if (hostShell == null)
 			throw new Exception("An error has occured while trying to run remote command!");
 
-		Lock lock = hostShell.getLock();
-		lock.lock();
+		Lock lock = null;
+		if (hostShell instanceof LocalHostShell) {
+			lock = ((LocalHostShell)hostShell).getLock();
+			lock.lock();
+		}
 		ProcessStreamBuffer processBuffer = new ProcessStreamBuffer();
 		
-		BufferedReader inbr = hostShell.getReader(false);
-		BufferedReader errbr = hostShell.getReader(true);
+		BufferedReader inbr = null;
+		BufferedReader errbr = null;
+
+		if (hostShell instanceof LocalHostShell) {
+			inbr = ((LocalHostShell)hostShell).getReader(false);
+			errbr = ((LocalHostShell)hostShell).getReader(true);
+		} else {
+			Process p = new HostShellProcessAdapter(hostShell);
+			inbr = new BufferedReader(new InputStreamReader(p.getInputStream()));
+			errbr = new BufferedReader(new InputStreamReader(p.getErrorStream()));
+		}
 		
 		boolean cancel = false;
 		while (!cancel) {
 			if(monitor.isCanceled()) {
 				cancel = true;
-				lock.unlock();
+				if (lock != null)
+					lock.unlock();
 				throw new InterruptedException("User Cancelled");
 			}
 			StringBuffer buffer = new StringBuffer();
@@ -135,7 +149,8 @@ public class RemoteHelper {
 				}
 			cancel = true;
 		}
-		lock.unlock();
+		if (lock != null)
+			lock.unlock();
 		return processBuffer;
 	}
 	
-- 
1.7.9.5




More information about the yocto mailing list