changeset 557:1a860019b2fe dispose

add ip to HostMessage.class
author Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
date Fri, 20 Nov 2015 17:57:55 +0900
parents 65b615d3a30c
children 0259a8aba18c
files src/main/java/alice/daemon/CommandMessage.java src/main/java/alice/daemon/IncomingTcpConnection.java src/main/java/alice/datasegment/DataSegment.java src/main/java/alice/datasegment/ReceiveData.java src/main/java/alice/datasegment/RemoteDataSegmentManager.java src/main/java/alice/test/codesegment/remote/TestRemoteAlice.java src/main/java/alice/test/codesegment/remote/TestRemoteConfig.java src/main/java/alice/topology/HostMessage.java src/main/java/alice/topology/manager/CreateTreeTopology.java src/main/java/alice/topology/manager/IncomingHosts.java src/main/java/alice/topology/manager/SearchHostName.java src/main/java/alice/topology/node/IncomingConnectionInfo.java src/main/java/alice/topology/node/StartTopologyNode.java src/main/java/alice/topology/node/TopologyNodeConfig.java
diffstat 14 files changed, 80 insertions(+), 15 deletions(-) [+]
line wrap: on
line diff
--- a/src/main/java/alice/daemon/CommandMessage.java	Thu Nov 19 21:30:12 2015 +0900
+++ b/src/main/java/alice/daemon/CommandMessage.java	Fri Nov 20 17:57:55 2015 +0900
@@ -16,9 +16,10 @@
     public boolean compressed = false;//圧縮されているかどうか
     public int dataSize = 0;//
 
-    public boolean setTime = false;//計測用
-    public long time;//
-    public int depth;//
+    //計測用
+    public boolean setTime = false;
+    public long time;
+    public int depth;
 
     public CommandMessage() {}
 
--- a/src/main/java/alice/daemon/IncomingTcpConnection.java	Thu Nov 19 21:30:12 2015 +0900
+++ b/src/main/java/alice/daemon/IncomingTcpConnection.java	Fri Nov 20 17:57:55 2015 +0900
@@ -60,7 +60,7 @@
                 case UPDATE:
                 case PUT:
                     int dataSize = unpacker.readInt();
-                    if (msg.compressed) {
+                    if (msg.compressed) {//Todo:fix one stlye
                         rData = new ReceiveData(packer.read(unpacker.getSerializedByteArray(dataSize), byte[].class), true, msg.dataSize);
                     } else {
                         rData = new ReceiveData(unpacker.getSerializedByteArray(dataSize), false, msg.dataSize);
--- a/src/main/java/alice/datasegment/DataSegment.java	Thu Nov 19 21:30:12 2015 +0900
+++ b/src/main/java/alice/datasegment/DataSegment.java	Fri Nov 20 17:57:55 2015 +0900
@@ -1,5 +1,6 @@
 package alice.datasegment;
 
+import java.net.InetAddress;
 import java.util.concurrent.ConcurrentHashMap;
 
 import alice.daemon.IncomingTcpConnection;
@@ -39,12 +40,12 @@
         dataSegment.dataSegmentManagers.put(key, manager);
     }
 
-    public static RemoteDataSegmentManager connect(String connectionKey, String reverseKey, String hostName, int port) {
+    public static RemoteDataSegmentManager connect(String connectionKey, String reverseKey, InetAddress ip, int port) {
         if (connectionKey.startsWith("compressed")){//compressedが含まれていたらエラーを返して終了
             System.out.println("You can't use 'compressed' for DataSegmentManager name.");
             System.exit(0);
         }
-        RemoteDataSegmentManager manager = new RemoteDataSegmentManager(connectionKey, reverseKey, hostName, port);
+        RemoteDataSegmentManager manager = new RemoteDataSegmentManager(connectionKey, reverseKey, ip, port);
         CompressedRemoteDataSegmentManager compressedManager = new CompressedRemoteDataSegmentManager(manager);
 
         register(connectionKey, manager);
--- a/src/main/java/alice/datasegment/ReceiveData.java	Thu Nov 19 21:30:12 2015 +0900
+++ b/src/main/java/alice/datasegment/ReceiveData.java	Fri Nov 20 17:57:55 2015 +0900
@@ -150,7 +150,6 @@
     }
 
     public void zip() throws IOException {
-        System.out.println("in zip");
         LinkedList<ByteBuffer> inputs = new LinkedList<ByteBuffer>();
         int inputIndex = 0;
         LinkedList<ByteBuffer> outputs = new LinkedList<ByteBuffer>();
--- a/src/main/java/alice/datasegment/RemoteDataSegmentManager.java	Thu Nov 19 21:30:12 2015 +0900
+++ b/src/main/java/alice/datasegment/RemoteDataSegmentManager.java	Fri Nov 20 17:57:55 2015 +0900
@@ -1,6 +1,7 @@
 package alice.datasegment;
 
 import java.io.IOException;
+import java.net.InetAddress;
 import java.net.InetSocketAddress;
 import java.nio.channels.SocketChannel;
 import java.util.concurrent.LinkedBlockingQueue;
@@ -18,7 +19,7 @@
 
     public RemoteDataSegmentManager(){}
 
-    public RemoteDataSegmentManager(final String connectionKey, final String reverseKey, final String hostName, final int port) {
+    public RemoteDataSegmentManager(final String connectionKey, final String reverseKey, final InetAddress ip, final int port) {
         logger = Logger.getLogger(connectionKey);
         connection = new Connection();
         connection.name = connectionKey;
@@ -30,7 +31,7 @@
                 do {
                     try {
                         //System.out.println("RemoteDSM connect hostname:" + hostName + " port:" + port);
-                        SocketChannel sc = SocketChannel.open(new InetSocketAddress(hostName, port));
+                        SocketChannel sc = SocketChannel.open(new InetSocketAddress(ip, port));
                         connection.socket = sc.socket();
                         connection.socket.setTcpNoDelay(true);
                         connect = false;
--- a/src/main/java/alice/test/codesegment/remote/TestRemoteAlice.java	Thu Nov 19 21:30:12 2015 +0900
+++ b/src/main/java/alice/test/codesegment/remote/TestRemoteAlice.java	Fri Nov 20 17:57:55 2015 +0900
@@ -9,7 +9,7 @@
         TestRemoteConfig conf = new TestRemoteConfig(args);//トポロジー設定をコマンドライン引数からとって設定?
 
         new AliceDaemon(conf).listen();//構成開始?TopMはない
-        DataSegment.connect(conf.key, "", conf.hostname, conf.connectPort);
+        DataSegment.connect(conf.key, "", conf.getIP(), conf.connectPort);
         new RemoteStartCodeSegment().execute();
     }
 
--- a/src/main/java/alice/test/codesegment/remote/TestRemoteConfig.java	Thu Nov 19 21:30:12 2015 +0900
+++ b/src/main/java/alice/test/codesegment/remote/TestRemoteConfig.java	Fri Nov 20 17:57:55 2015 +0900
@@ -2,9 +2,13 @@
 
 import alice.daemon.Config;
 
+import java.net.InetAddress;
+import java.net.UnknownHostException;
+
 public class TestRemoteConfig extends Config {
 
     public String hostname;
+    private InetAddress ip;
     public int connectPort = 10000;
     public String key;
 
@@ -13,6 +17,12 @@
         for (int i = 0; i< args.length; i++) {
             if ("-h".equals(args[i])) {
                 hostname = args[++i];
+            } else if ("-ip".equals(args[i])) {
+                try {
+                    ip = InetAddress.getByName(args[++i]);
+                } catch (UnknownHostException e) {
+                    e.printStackTrace();
+                }
             } else if ("-cp".equals(args[i])) {
                 connectPort = Integer.parseInt(args[++i]);
             } else if ("-key".equals(args[i])) {
@@ -21,4 +31,15 @@
         }
     }
 
+    public InetAddress getIP(){
+        if (ip == null){
+            try {
+                ip = InetAddress.getByName(hostname);
+            } catch (UnknownHostException e) {
+                e.printStackTrace();
+            }
+        }
+        return ip;
+    }
+
 }
--- a/src/main/java/alice/topology/HostMessage.java	Thu Nov 19 21:30:12 2015 +0900
+++ b/src/main/java/alice/topology/HostMessage.java	Fri Nov 20 17:57:55 2015 +0900
@@ -2,10 +2,14 @@
 
 import org.msgpack.annotation.Message;
 
+import java.net.InetAddress;
+import java.net.UnknownHostException;
+
 @Message
 public class HostMessage {
     public String name;
     public int port;
+    public InetAddress ip;
 
     public String connectionName;
     public String absName; // this is absName which have these IP and port.
@@ -27,6 +31,11 @@
         this.port = port;
         this.connectionName = connectionName;
         this.reverseName = reverseName;
+        try {
+            this.ip = InetAddress.getByName(name);
+        } catch (UnknownHostException e) {
+            e.printStackTrace();
+        }
     }
 
     public boolean isAlive() {
--- a/src/main/java/alice/topology/manager/CreateTreeTopology.java	Thu Nov 19 21:30:12 2015 +0900
+++ b/src/main/java/alice/topology/manager/CreateTreeTopology.java	Fri Nov 20 17:57:55 2015 +0900
@@ -1,5 +1,7 @@
 package alice.topology.manager;
 
+import java.net.InetAddress;
+import java.net.UnknownHostException;
 import java.util.HashMap;
 import org.msgpack.type.ValueFactory;
 
@@ -41,7 +43,7 @@
 
         String nodeName = "node"+comingHostCount;
         // Manager connect to Node
-        DataSegment.connect(nodeName, nodeName, host.name, host.port);
+        DataSegment.connect(nodeName, nodeName, host.ip, host.port);
         ods.put(nodeName, "host", nodeName);
         ods.put(nodeName, "cookie", cookie);
 
--- a/src/main/java/alice/topology/manager/IncomingHosts.java	Thu Nov 19 21:30:12 2015 +0900
+++ b/src/main/java/alice/topology/manager/IncomingHosts.java	Fri Nov 20 17:57:55 2015 +0900
@@ -1,5 +1,7 @@
 package alice.topology.manager;
 
+import java.net.InetAddress;
+import java.net.UnknownHostException;
 import java.util.HashMap;
 import java.util.LinkedList;
 
@@ -40,7 +42,7 @@
         // not have or match cookie
         String nodeName = nodeNames.poll();
         // Manager connect to Node
-        DataSegment.connect(nodeName, "", host.name, host.port);
+        DataSegment.connect(nodeName, "", host.ip, host.port);
         ods.put(nodeName, "host", nodeName);
 
         String cookie = this.cookie.asString();
--- a/src/main/java/alice/topology/manager/SearchHostName.java	Thu Nov 19 21:30:12 2015 +0900
+++ b/src/main/java/alice/topology/manager/SearchHostName.java	Fri Nov 20 17:57:55 2015 +0900
@@ -1,5 +1,7 @@
 package alice.topology.manager;
 
+import java.net.InetAddress;
+import java.net.UnknownHostException;
 import java.util.HashMap;
 import java.util.LinkedList;
 
@@ -31,7 +33,7 @@
         HashMap<String, LinkedList<HostMessage>> topology = info1.asClass(HashMap.class);
 
         DataSegment.remove(hostInfo.absName);
-        DataSegment.connect(hostInfo.absName, "", hostInfo.name, hostInfo.port);
+        DataSegment.connect(hostInfo.absName, "", hostInfo.ip, hostInfo.port);
         ods.put(hostInfo.absName, "host", hostInfo.absName);
 
         // put Host dataSegment on reconnect node
--- a/src/main/java/alice/topology/node/IncomingConnectionInfo.java	Thu Nov 19 21:30:12 2015 +0900
+++ b/src/main/java/alice/topology/node/IncomingConnectionInfo.java	Fri Nov 20 17:57:55 2015 +0900
@@ -6,6 +6,9 @@
 import alice.datasegment.Receiver;
 import alice.topology.HostMessage;
 
+import java.net.InetAddress;
+import java.net.UnknownHostException;
+
 public class IncomingConnectionInfo extends CodeSegment {
 
     public Receiver hostInfo = ids.create(CommandType.TAKE);
@@ -28,7 +31,7 @@
                 // need to wait remove by DeleteConnection
                 ods.put("manager", absName, hostInfo);
             } else {
-                DataSegment.connect(hostInfo.connectionName, hostInfo.reverseName, hostInfo.name, hostInfo.port);
+                DataSegment.connect(hostInfo.connectionName, hostInfo.reverseName, hostInfo.ip, hostInfo.port);
                 ods.put(hostInfo.connectionName, "reverseKey", hostInfo.reverseName);
                 count++;
 
--- a/src/main/java/alice/topology/node/StartTopologyNode.java	Thu Nov 19 21:30:12 2015 +0900
+++ b/src/main/java/alice/topology/node/StartTopologyNode.java	Fri Nov 20 17:57:55 2015 +0900
@@ -20,7 +20,7 @@
 
     @Override
     public void run() {
-        DataSegment.connect("manager", "manager", conf.getManagerHostName(), conf.getManagerPort());
+        DataSegment.connect("manager", "manager", conf.getManagerHostIP(), conf.getManagerPort());
         String localHostName = null;
         try {
             localHostName = InetAddress.getLocalHost().getHostName();
--- a/src/main/java/alice/topology/node/TopologyNodeConfig.java	Thu Nov 19 21:30:12 2015 +0900
+++ b/src/main/java/alice/topology/node/TopologyNodeConfig.java	Fri Nov 20 17:57:55 2015 +0900
@@ -1,11 +1,14 @@
 package alice.topology.node;
 
+import java.net.InetAddress;
+import java.net.UnknownHostException;
 import java.util.ArrayList;
 import alice.daemon.Config;
 
 public class TopologyNodeConfig extends Config {
 
     private String managerHostName;
+    private InetAddress managerHostIP;
     private int managerPort = 10000;
     public String cookie;
     private ArrayList<Class> eventList = new ArrayList<Class>();
@@ -20,10 +23,31 @@
                 setManagerPort(Integer.parseInt(args[++i]));
             } else if ("-cookie".equals(args[i])) {
                 cookie = args[++i];
+            } else if ("-ip".equals(args[i])){
+                setManagerHostIP(args[++i]);
             }
         }
     }
 
+    public void setManagerHostIP(String args) {
+        try {
+            managerHostIP = InetAddress.getByName(args);
+        } catch (UnknownHostException e) {
+            e.printStackTrace();
+        }
+    }
+
+    public InetAddress getManagerHostIP(){
+        if (managerHostIP == null){
+            try {
+                managerHostIP = InetAddress.getByName(getManagerHostName());
+            } catch (UnknownHostException e) {
+                e.printStackTrace();
+            }
+        }
+        return managerHostIP;
+    }
+
     public String getManagerHostName() {
         return managerHostName;
     }