view src/main/java/jp/ac/u_ryukyu/treevnc/server/state/ChangeHost.java @ 39:6a34a5220a01

add files
author one
date Tue, 02 Oct 2012 18:13:13 +0900
parents src/main/java/jp/ac/u_ryukyu/treevnc/server/ChangeHost.java@c2f0b6907448
children 3c072f2f39bb
line wrap: on
line source

package jp.ac.u_ryukyu.treevnc.server.state;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.LinkedList;

import jp.ac.u_ryukyu.treevnc.MyRfbProto;
import jp.ac.u_ryukyu.treevnc.server.VncProxyService;

import com.glavsoft.rfb.protocol.ProtocolSettings;
import com.glavsoft.viewer.ConnectionManager;
import com.glavsoft.viewer.Viewer;
import com.glavsoft.viewer.swing.ParametersHandler;

public class ChangeHost extends ConnectionManager implements Runnable,ScreenChanges {

	private VncProxyService vps;
	private ScreenChanges screenChange;
	private LinkedList<String> clientList;
	private int port;
	

	public ChangeHost(VncProxyService _vps, boolean isApplet) {
		super(_vps, isApplet);
		vps = _vps;
		screenChange = this;
	}


	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	String str;

	@Override
	public void run() {
		try {
			while(screenChange.next());
		} catch (UnknownHostException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	public String getHost() {
		return str;
	}

	private void waitingInput() {
		try {
			BufferedReader br = new BufferedReader(new InputStreamReader(
					System.in));
			str = br.readLine();
			vps.changeVNCServer();
//			vps.createConnectionAndStart();
//			vps.aClient.setList(prevVps.aClient.getList());
//			clientList = prevVps.aClient.getList();
//			createSocketAndSend(clientList,String.valueOf(port));
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
	@Override
	public Socket connectToHost(
			final ParametersHandler.ConnectionParams connectionParams,
			ProtocolSettings settings, MyRfbProto rfb) {
		Socket socket = null;
		connectionParams.hostName = str;
		connectionParams.portNumber = 5900;
		Viewer.logger.info("Connecting to host " + connectionParams.hostName
				+ ":" + connectionParams.portNumber);
		try {
			socket = new Socket(connectionParams.hostName,
					connectionParams.portNumber);
		} catch (UnknownHostException e) {
			Viewer.logger.severe("Unknown host: " + connectionParams.hostName);
			showConnectionErrorDialog("Unknown host: '"
					+ connectionParams.hostName + "'");
		} catch (IOException e) {
			Viewer.logger.severe("Couldn't connect to: "
					+ connectionParams.hostName + ":"
					+ connectionParams.portNumber + ": " + e.getMessage());
			showConnectionErrorDialog("Couldn't connect to: '"
					+ connectionParams.hostName + "'\n" + e.getMessage());
		}
		return socket;
	}
	
	
	@Override
	public boolean next() {
		waitingInput();
		changeState(new ReconnectionRequest(vps));
		return true;
	}

	public void changeState(ScreenChanges change) {
		screenChange = change;
	}
}