| /******************************************************************************* |
| * Copyright (c) 2005 IBM Corporation and others. |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License v1.0 |
| * which accompanies this distribution, and is available at |
| * http://www.eclipse.org/legal/epl-v10.html |
| * |
| * Contributors: |
| * IBM Corporation - Initial API and implementation |
| *******************************************************************************/ |
| package org.eclipse.wst.internet.monitor.core.internal; |
| |
| import java.io.InputStream; |
| import java.net.Socket; |
| |
| import org.eclipse.wst.internet.monitor.core.internal.provisional.Request; |
| |
| /** |
| * Thread used if the connection to the server fails. |
| */ |
| public class FailedConnectionThread extends Thread { |
| private static final int BUFFER = 2048; |
| protected Monitor monitor; |
| protected Socket socket; |
| protected String error; |
| |
| public FailedConnectionThread(Monitor monitor, Socket socket, String error) { |
| super(); |
| this.monitor = monitor; |
| this.socket = socket; |
| this.error = error; |
| } |
| |
| public void run() { |
| Request request = new Request(monitor, IProtocolAdapter.TCPIP_PROTOCOL_ID, monitor.getLocalPort(), monitor.getRemoteHost(), monitor.getRemotePort()); |
| String err = error; |
| if (err == null) |
| err = Messages.errorConnectToServer; |
| request.addToResponse(err.getBytes()); |
| |
| try { |
| InputStream in = socket.getInputStream(); |
| byte[] b = new byte[BUFFER]; |
| while (in.available() > 0) { |
| int n = in.read(b); |
| byte[] c = new byte[n]; |
| System.arraycopy(b, 0, c, 0, n); |
| request.addToRequest(c); |
| } |
| } catch (Exception e) { |
| // ignore |
| } finally { |
| try { |
| socket.shutdownInput(); |
| socket.shutdownOutput(); |
| socket.close(); |
| } catch (Exception ex) { |
| // ignore |
| } |
| } |
| } |
| } |