cloudstack-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From devd...@apache.org
Subject git commit: updated refs/heads/master to 13e0f29
Date Thu, 06 Feb 2014 08:33:02 GMT
Updated Branches:
  refs/heads/master 86cada3b3 -> 13e0f293e


CLOUDSTACK-6001: Fixed hyperv vm console not working for 3 minutes after migration.


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/13e0f293
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/13e0f293
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/13e0f293

Branch: refs/heads/master
Commit: 13e0f293edc718a9ee03c56896b65240cdc86d34
Parents: 86cada3
Author: Anshul Gangwar <anshul.gangwar@citrix.com>
Authored: Fri Jan 31 13:04:36 2014 +0530
Committer: Devdeep Singh <devdeep@gmail.com>
Committed: Thu Feb 6 13:47:38 2014 +0530

----------------------------------------------------------------------
 .../consoleproxy/ConsoleProxyRdpClient.java     | 147 ++++++++++---------
 1 file changed, 78 insertions(+), 69 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/13e0f293/services/console-proxy/server/src/com/cloud/consoleproxy/ConsoleProxyRdpClient.java
----------------------------------------------------------------------
diff --git a/services/console-proxy/server/src/com/cloud/consoleproxy/ConsoleProxyRdpClient.java
b/services/console-proxy/server/src/com/cloud/consoleproxy/ConsoleProxyRdpClient.java
index d5a3fcd..7d49b19 100644
--- a/services/console-proxy/server/src/com/cloud/consoleproxy/ConsoleProxyRdpClient.java
+++ b/services/console-proxy/server/src/com/cloud/consoleproxy/ConsoleProxyRdpClient.java
@@ -19,7 +19,6 @@ package com.cloud.consoleproxy;
 import java.awt.event.InputEvent;
 import java.awt.event.KeyEvent;
 import java.awt.event.MouseEvent;
-import java.io.IOException;
 import java.net.InetSocketAddress;
 
 import org.apache.log4j.Logger;
@@ -55,7 +54,8 @@ public class ConsoleProxyRdpClient extends ConsoleProxyClientBase {
     private RdpBufferedImageCanvas _canvas = null;
 
     private Thread _worker;
-    private volatile boolean _workerDone = false;
+    private volatile boolean _workerDone = true;
+    private volatile long _threadStopTime;
 
     private AwtMouseEventSource _mouseEventSource = null;
     private AwtKeyEventSource _keyEventSource = null;
@@ -231,77 +231,86 @@ public class ConsoleProxyRdpClient extends ConsoleProxyClientBase {
 
     @Override
     public void initClient(final ConsoleProxyClientParam param) {
-        _workerDone = false;
-
-        int canvasWidth = 1024;
-        int canvasHeight = 768;
-        setClientParam(param);
-
-        final String host = param.getHypervHost();
-        final String password = param.getPassword();
-        final String instanceId = param.getClientHostAddress();
-        final int port = param.getClientHostPort();
-
-        _screen = new ScreenDescription();
-        _canvas = new RdpBufferedImageCanvas(this, canvasWidth, canvasHeight);
-        onFramebufferSizeChange(canvasWidth, canvasHeight);
-
-        _screen.addSizeChangeListener(new SizeChangeListener() {
-            @Override
-            public void sizeChanged(int width, int height) {
-                if (_canvas != null) {
-                    _canvas.setCanvasSize(width, height);
-                }
-            }
-        });
+        if ((System.currentTimeMillis() - _threadStopTime) < 1000) {
+            return;
+        }
 
-        final SSLState sslState = new SSLState();
+        try {
+            int canvasWidth = 1024;
+            int canvasHeight = 768;
+            setClientParam(param);
+
+            final String host = param.getHypervHost();
+            final String password = param.getPassword();
+            final String instanceId = param.getClientHostAddress();
+            final int port = param.getClientHostPort();
+
+            final SSLState sslState = new SSLState();
+
+            final String username = param.getUsername();
+            String name = null;
+            String domain = null;
+            if (username.contains("\\")) {
+                String[] tokens = username.split("\\\\");
+                name = tokens[1];
+                domain = tokens[0];
+            } else {
+                name = username;
+                domain = "Workgroup";
+            }
 
-        final String username = param.getUsername();
-        String name = null;
-        String domain = null;
-        if (username.contains("\\")) {
-            String[] tokens = username.split("\\\\");
-            name = tokens[1];
-            domain = tokens[0];
-        } else {
-            name = username;
-            domain = "Workgroup";
-        }
+            _screen = new ScreenDescription();
+            _canvas = new RdpBufferedImageCanvas(this, canvasWidth, canvasHeight);
+            onFramebufferSizeChange(canvasWidth, canvasHeight);
 
-        _client = new RdpClient("client", host, domain, name, password, instanceId, _screen,
_canvas,
-                sslState);
-
-        _mouseEventSource = _client.getMouseEventSource();
-        _keyEventSource = _client.getKeyEventSource();
-
-        _worker = new Thread(new Runnable() {
-            @Override
-            public void run() {
-                _socket = new AprSocketWrapperImpl("socket", sslState);
-                Pipeline pipeline = new PipelineImpl("Client");
-                pipeline.add(_socket, _client);
-                pipeline.link("socket", _client.getId(), "socket");
-                pipeline.validate();
-
-                InetSocketAddress address = new InetSocketAddress(host, port);
-                ConsoleProxy.ensureRoute(host);
-
-                try {
-                    // Connect socket to remote server and run main loop(s)
-                    _socket.connect(address);
-                } catch (IOException e) {
-                    e.printStackTrace();
-                } finally {
-                    shutdown();
+            _screen.addSizeChangeListener(new SizeChangeListener() {
+                @Override
+                public void sizeChanged(int width, int height) {
+                    if (_canvas != null) {
+                        _canvas.setCanvasSize(width, height);
+                    }
                 }
-
-                s_logger.info("Receiver thread stopped.");
-                _workerDone = true;
-            }
-        });
-        _worker.setDaemon(true);
-        _worker.start();
+            });
+
+            s_logger.info("connecting to instance " + instanceId + " on host " + host);
+            _client = new RdpClient("client", host, domain, name, password, instanceId, _screen,
_canvas, sslState);
+
+            _mouseEventSource = _client.getMouseEventSource();
+            _keyEventSource = _client.getKeyEventSource();
+
+            _worker = new Thread(new Runnable() {
+                @Override
+                public void run() {
+                    _socket = new AprSocketWrapperImpl("socket", sslState);
+                    Pipeline pipeline = new PipelineImpl("Client");
+                    pipeline.add(_socket, _client);
+                    pipeline.link("socket", _client.getId(), "socket");
+                    pipeline.validate();
+
+                    InetSocketAddress address = new InetSocketAddress(host, port);
+                    ConsoleProxy.ensureRoute(host);
+
+                    try {
+                        _workerDone = false;
+                        s_logger.info("Connecting socket to remote server and run main loop(s)");
+                        _socket.connect(address);
+                    } catch (Exception e) {
+                        s_logger.info(" error occurred in connecting to socket " + e.getMessage());
+                    } finally {
+                        shutdown();
+                    }
+
+                    _threadStopTime = System.currentTimeMillis();
+                    s_logger.info("Receiver thread stopped.");
+                    _workerDone = true;
+                }
+            });
+            _worker.setDaemon(true);
+            _worker.start();
+        } catch (Exception e) {
+            _workerDone = true;
+            s_logger.info("error occurred in initializing rdp client " + e.getMessage());
+        }
     }
 
     @Override


Mime
View raw message