view src/main/java/jp/ac/u_ryukyu/treevnc/CreateConnectionParam.java @ 510:89f1f7e41838

broadcast FrameBufferUpdate Rectangle
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Wed, 20 Feb 2019 15:24:42 +0900
parents 94c520535ef1
children b97fdcd337fe
line wrap: on
line source

package jp.ac.u_ryukyu.treevnc;

import java.io.IOException;
import java.net.InetAddress;
import java.net.UnknownHostException;

import com.glavsoft.viewer.ViewerInterface;
import com.glavsoft.viewer.swing.ConnectionParams;

public class CreateConnectionParam {
	private final FindRoot getBcast;
	private String hostName;
	private int portNumber = ConnectionParams.DEFAULT_VNC_ROOT;
	private TreeRFBProto rfb;
    private String myHostName;
	private boolean rootMode = false;

	private boolean displayMode = false;

	public CreateConnectionParam(TreeRFBProto rfb) {
		this.rfb = rfb;
        rfb.setConnectionParam(this);
		getBcast = new FindRoot(rfb.acceptPort,this);
		rfb.setFindRoot(getBcast);
	}

	public synchronized void findTreeVncRoot() {
		rfb.createRootSelectionPanel(this, getBcast);
		getBcast.findRoot();
        // wait for RootSelection
        try {
            wait();
        } catch (InterruptedException e) {
            System.out.println("any thread interrupt when wait for FindRoot " + e.getMessage());
        }
	}

	/**
	 * To find parent, send WHERE_TO_CONNECT command to the TreeVNC root
	 * Incoming CONNECT_TO message is handled in MyRFBProto
	 * @param v
	 */
	public void sendWhereToConnect(ViewerInterface v) {
        rfb.setConnectionParam(this);
		TreeVncProtocol echo = new TreeVncProtocol(hostName,portNumber);
        echo.whereToConnect(myHostName,rfb.getAcceptPort());
    }

	public synchronized void setHostName(String _hostName, int port, String _myHostName) {
	    hostName = _hostName;
	    portNumber = port;
	    myHostName = _myHostName;
	    notify();
	}

	public void setHostName(String hostAndPort) {
	    int i = hostAndPort.indexOf(':'); 
	    if (i>0) {
	        portNumber = Integer.parseInt(hostAndPort.substring(i+1));
	        hostName = hostAndPort.substring(0,i);
	    } else  
	        hostName = hostAndPort;
	    // who sets myHostName?
    }

	public String getMyHostName() {
	    return myHostName;
	}

    public int getPort() {
        return portNumber;
    }

    public String getHostName() {
        return hostName;
    }

    public void setRootMode() {
		rootMode = true;
	}

	public boolean isRootMode() {
		return rootMode;
	}

    public void setDisplayMode() {
		displayMode = true;
    }

	public boolean isDisplayMode() {
		return displayMode;
	}

	public synchronized void restart() {
		notify();
	}
}