changeset 205:614db20d8fab

try to separate Network management
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Wed, 02 Jul 2014 16:31:25 +0900
parents d9d234715853
children 2b3eb4a9492f
files Todo.txt src/main/java/jp/ac/u_ryukyu/treevnc/MyRfbProto.java src/main/java/jp/ac/u_ryukyu/treevnc/TreeVNCNetwork.java
diffstat 3 files changed, 68 insertions(+), 33 deletions(-) [+]
line wrap: on
line diff
--- a/Todo.txt	Fri Jun 27 21:37:20 2014 +0900
+++ b/Todo.txt	Wed Jul 02 16:31:25 2014 +0900
@@ -1,6 +1,6 @@
 Fri Jun 27 15:19:39 JST 2014
     
-    拡大縮小ボタンのバグを取る。
+    拡大縮小ボタンのバグを取る。Done!
 
     Multi-Network-Treeの作成
     socketからNetMaskを検出
@@ -9,10 +9,14 @@
     FindRootにはTreeMangerが応答する
     下位のNodeのChangeVnCServerはそのTreeManagerが処理する
     上位にHostameがからのChangerVnCserverを投げる
-    UpdateRectanleを上位のNetwoekに投げる
+    UpdateRectanleを上位のNetworkに投げる
     RootではUpdateRectangleを送り返す
 
-    myRfbProtoのwaitForReady()で新しいnetworkinterfaceを検出する
+    myRfbProtoのselectPort()でnetworkinterfaceを検出する
+    myRfbProtoのvncConnected()でvnc port の interface と Network を検出する
+
+        自分が、そのnetworkのrootになる条件は?
+
     treeManagerをnetworkのhashmapで持つ。
     setTreeManagerにnetworkの引数を追加する
 
@@ -38,6 +42,9 @@
     下位のnodeはduplicated rootにつなげ直す。
     もしduplicatedListになかったら、あきらめる。
 
+    TreeManager は interface 別に作る Done!
+    Network address が LAN 外なら、その下に node は作らない。( そちらで勝手に作るのはあり )
+
 
 Thu Jun 25 20:55:00 JST 2014
     
--- a/src/main/java/jp/ac/u_ryukyu/treevnc/MyRfbProto.java	Fri Jun 27 21:37:20 2014 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/treevnc/MyRfbProto.java	Wed Jul 02 16:31:25 2014 +0900
@@ -62,12 +62,11 @@
     private boolean hasViewer = false;
     private boolean reconnecting;
     private short reconnectingId;  // Change Server Request to id's node VNC server
-	private HashMap<String, TreeManagement> interfaces = new HashMap<String, TreeManagement>();
-	private String vncInterface;
-
+    private TreeVNCNetwork nets = new TreeVNCNetwork();
 
 	public MyRfbProto() {
 		rThread = new RequestScreenThread(this);
+		nets.setMyRfb(this);
 	}
 	
 	abstract public boolean isTreeManager() ;
@@ -361,7 +360,7 @@
 	    	NetworkInterface ni = getInterface(vncSocket);
 	    	if (ni!=null) {
 	    		vncInterface = ni.getName();
-	    		System.out.println("VNCNetworkInterface :" + ni.getName());
+	    		System.out.println("VNCNetworkInterface :" + vncInterface);
 	    	}
 	        sendDesktopSizeChange(reconnectingId);
 	        reconnecting = false;
@@ -377,14 +376,6 @@
 	    }
 	}	
 
-	private NetworkInterface getInterface(Socket vncSocket) {
-		InetAddress address = vncSocket.getInetAddress();
-		try {
-			return NetworkInterface.getByInetAddress(address);
-		} catch (SocketException e) {
-			return null;
-		}
-	}
 
 	public synchronized void waitForVNCConnection() throws InterruptedException {
 	    if (reconnectingId!=0) {
@@ -706,23 +697,5 @@
 		return reconnectingId;
 	}
 
-	public void getNetworkInterfaces() throws SocketException {
-		for (Enumeration<NetworkInterface> e = NetworkInterface.getNetworkInterfaces(); e.hasMoreElements();) {
-			NetworkInterface ni;
-			ni = e.nextElement();
-			if (ni.isUp() && ni.supportsMulticast() && !ni.isLoopback()) {
-		        String hostName = ni.getInetAddresses().nextElement().getHostAddress();
-                TreeManagement treeManager = new TreeManagement(hostName, ConnectionParams.DEFAULT_VNC_ROOT, viewer.getShowTree());
-                treeManager.getList().getFirst().setPort(getAcceptPort());
-				addNetworkInterface(ni, treeManager);    			
-				System.out.println("Interfaces :" + ni.getName());
-			}
-		}
-	}
-
-	private void addNetworkInterface(NetworkInterface ni, TreeManagement treeManager) {
-		interfaces.put(ni.getName(), treeManager);
-	}
-
 	
 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/main/java/jp/ac/u_ryukyu/treevnc/TreeVNCNetwork.java	Wed Jul 02 16:31:25 2014 +0900
@@ -0,0 +1,55 @@
+package jp.ac.u_ryukyu.treevnc;
+
+import java.net.InetAddress;
+import java.net.NetworkInterface;
+import java.net.Socket;
+import java.net.SocketException;
+import java.util.Enumeration;
+import java.util.HashMap;
+
+import jp.ac.u_ryukyu.treevnc.server.TreeManagement;
+
+import com.glavsoft.viewer.swing.ConnectionParams;
+
+public class TreeVNCNetwork {
+
+    
+    private HashMap<String, TreeManagement> interfaces = new HashMap<String, TreeManagement>();
+    private String vncInterface;
+    private MyRfbProto myRfb;
+    public MyRfbProto getMyRfb() {
+        return myRfb;
+    }
+
+    public void setMyRfb(MyRfbProto myRfb) {
+        this.myRfb = myRfb;
+    }
+
+    public void getNetworkInterfaces() throws SocketException {
+        for (Enumeration<NetworkInterface> e = NetworkInterface.getNetworkInterfaces(); e.hasMoreElements();) {
+            NetworkInterface ni;
+            ni = e.nextElement();
+            if (ni.isUp() && ni.supportsMulticast() && !ni.isLoopback()) {
+                String hostName = ni.getInetAddresses().nextElement().getHostAddress();
+                TreeManagement treeManager = new TreeManagement(hostName, ConnectionParams.DEFAULT_VNC_ROOT, myRfb.getViewer().getShowTree());
+                treeManager.getList().getFirst().setPort(myRfb.getAcceptPort());
+                addNetworkInterface(ni, treeManager);               
+                System.out.println("Interfaces :" + ni.getName());
+            }
+        }
+    }
+    
+    private NetworkInterface getInterface(Socket vncSocket) {
+        InetAddress address = vncSocket.getInetAddress();
+        try {
+            return NetworkInterface.getByInetAddress(address);
+        } catch (SocketException e) {
+            return null;
+        }
+    }
+
+    private void addNetworkInterface(NetworkInterface ni, TreeManagement treeManager) {
+        interfaces.put(ni.getName(), treeManager);
+    }
+
+}