use of com.cloud.consoleproxy.rdp.RdpBufferedImageCanvas in project cloudstack by apache.
the class ConsoleProxyRdpClient method initClient.
@Override
public void initClient(final ConsoleProxyClientParam param) {
if ((System.currentTimeMillis() - _threadStopTime) < 1000) {
return;
}
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";
}
_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);
}
}
});
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());
}
}
Aggregations