view src/main/java/jp/ac/u_ryukyu/treevnc/CreateConnectionParam.java @ 125:32c6563492f3

add vnc protocol command sender.
author oc
date Thu, 05 Jun 2014 18:30:45 +0900
parents 9a485070f831
children 775ce6a14f89
line wrap: on
line source

package jp.ac.u_ryukyu.treevnc;

import java.util.logging.Logger;

import com.glavsoft.viewer.ViewerImpl;

import jp.ac.u_ryukyu.treevnc.client.TreeVncProtocol;
import jp.ac.u_ryukyu.treevnc.client.GetHostClient;
import jp.ac.u_ryukyu.treevnc.server.GetBroadCastProxy;



public class CreateConnectionParam {
	private String hostName;
	private int portNumber;
	private MyRfbProto rfb;
	private final Logger logger;
	
	public CreateConnectionParam(MyRfbProto rfb) {
		this.rfb = rfb;
		logger = Logger.getLogger(getClass().getName());		
	}

	public void communicationToProxy() {
		GetHostClient getBcast = new GetHostClient(GetBroadCastProxy.MULTICAST_FIND_TREEVNC_ROOT);
		getBcast.getHost();
		portNumber = 0;
		do {
		    try {
		        Thread runBcast = new Thread(getBcast, "TreeVNC-root-finder");
		        runBcast.start();
		        hostName = getBcast.textAddress(); // wait for root reply to our broadcast
		        portNumber = Integer.parseInt(getBcast.textPort());
		    } catch (Exception e) {
		        logger.info("can't get parent address or port");
		    }
		    getBcast.interrupt();
		} while ( portNumber == 0);

	}

	public void createConnectionParam(ViewerImpl v) {
		TreeVncProtocol echo = new TreeVncProtocol(hostName, 9999); 
		rfb.setEcho(echo);
		rfb.setProxyAddr(hostName);
		echo.getParentName();
		v.setConnectionParam(echo.getParentsAddress(), portNumber);
		runAcceptThread();
	}


	private void runAcceptThread() {
		Thread accThread = new Thread(new AcceptThread(rfb, portNumber));
		accThread.start();
	}
	
	public void setHostName(String _hostName) {
		hostName = _hostName;
		portNumber = 5999;
	}

}