changeset 539:0832af83583f dispose

command init on AliceDaemon
author Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
date Mon, 03 Aug 2015 18:31:19 +0900
parents 8c17a9e66cc7
children 97bd6efa6e69
files src/main/java/alice/codesegment/CodeSegmentManager.java src/main/java/alice/codesegment/InputDataSegment.java src/main/java/alice/codesegment/OutputDataSegment.java src/main/java/alice/daemon/AcceptThread.java src/main/java/alice/daemon/AliceDaemon.java src/main/java/alice/daemon/Connection.java src/main/java/alice/daemon/IncomingTcpConnection.java src/main/java/alice/daemon/IncomingUdpConnection.java src/main/java/alice/datasegment/Command.java src/main/java/alice/datasegment/CommandType.java src/main/java/alice/datasegment/DataSegment.java src/main/java/alice/datasegment/MulticastDataSegmentManager.java src/main/java/alice/datasegment/ReceiveData.java src/main/java/alice/datasegment/RemoteDataSegmentManager.java src/main/java/alice/test/codesegment/local/TestLocalAlice.java src/main/java/alice/test/codesegment/remote/TestRemoteAlice.java src/main/java/alice/test/topology/aquarium/fx/CheckAllFishInfoExist.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/manager/keeparive/ListManager.java src/main/java/alice/topology/manager/keeparive/TaskExecuter.java src/main/java/alice/topology/node/CloseRemoteDataSegment.java src/main/java/alice/topology/node/DeleteConnection.java src/main/java/alice/topology/node/IncomingConnectionInfo.java src/main/java/alice/topology/node/IncomingReverseKey.java src/main/java/alice/topology/node/PrepareToClose.java src/main/java/alice/topology/node/StartTopologyNode.java src/test/java/alice/daemon/MulticastStartCodeSegment.java
diffstat 29 files changed, 163 insertions(+), 133 deletions(-) [+]
line wrap: on
line diff
--- a/src/main/java/alice/codesegment/CodeSegmentManager.java	Fri Jun 19 14:06:10 2015 +0900
+++ b/src/main/java/alice/codesegment/CodeSegmentManager.java	Mon Aug 03 18:31:19 2015 +0900
@@ -5,20 +5,19 @@
 import java.util.concurrent.ThreadPoolExecutor;
 import java.util.concurrent.TimeUnit;
 
+import alice.daemon.AliceDaemon;
 import org.apache.log4j.Logger;
 
 public class CodeSegmentManager {
 
-    private static CodeSegmentManager instance = new CodeSegmentManager();
     private ThreadPoolExecutor codeSegmentExecutor;
-
     private ThreadFactory maxPriority;
     private ThreadFactory minPriority;
     private ThreadFactory normalPriority;
 
     private Logger logger = Logger.getLogger(CodeSegmentManager.class);
 
-    private CodeSegmentManager() {
+    public CodeSegmentManager() {
         codeSegmentExecutor = new ThreadPoolExecutor(Runtime.getRuntime().availableProcessors(), // initial number of threads
                 Runtime.getRuntime().availableProcessors(),
                 Integer.MAX_VALUE, // keepAliveTime
@@ -29,12 +28,12 @@
         minPriority = makeThreadFactory(Thread.MIN_PRIORITY);
     }
 
-    public static CodeSegmentManager get() {
-        return instance;
+    public CodeSegmentManager get() {//ToDo:あとでstatic消す
+        return new CodeSegmentManager();
     }
 
-    public static void submit(CodeSegment cs) {
-        CodeSegmentManager csManager = CodeSegmentManager.get();
+    public void submit(CodeSegment cs) {//ToDo:あとでstatic消す
+        CodeSegmentManager csManager = AliceDaemon.codeSegmentManager.get();
         if (cs.getPriority() < Thread.NORM_PRIORITY) {
             csManager.codeSegmentExecutor.setThreadFactory(csManager.minPriority);
         } else if (cs.getPriority() < Thread.MAX_PRIORITY) {
--- a/src/main/java/alice/codesegment/InputDataSegment.java	Fri Jun 19 14:06:10 2015 +0900
+++ b/src/main/java/alice/codesegment/InputDataSegment.java	Mon Aug 03 18:31:19 2015 +0900
@@ -2,6 +2,7 @@
 
 import java.util.concurrent.atomic.AtomicInteger;
 
+import alice.daemon.AliceDaemon;
 import alice.datasegment.Command;
 import alice.datasegment.CommandType;
 import alice.datasegment.DataSegment;
@@ -32,23 +33,23 @@
 
     public void quickPeek(Receiver receiver) {//SEDAで実行
         cs.register(receiver);
-        DataSegment.get(receiver.managerKey).peek(receiver, cs, true);
+        AliceDaemon.dataSegment.get(receiver.managerKey).peek(receiver, cs, true);
     }
 
 
     public void peek(Receiver receiver) {
         cs.register(receiver);
-        DataSegment.get(receiver.managerKey).peek(receiver, cs, false);
+        AliceDaemon.dataSegment.get(receiver.managerKey).peek(receiver, cs, false);
     }
 
     public void quickTake(Receiver receiver) {
         cs.register(receiver);
-        DataSegment.get(receiver.managerKey).take(receiver, cs, true);
+        AliceDaemon.dataSegment.get(receiver.managerKey).take(receiver, cs, true);
     }
 
     public void take(Receiver receiver) {
         cs.register(receiver);
-        DataSegment.get(receiver.managerKey).take(receiver, cs, false);
+        AliceDaemon.dataSegment.get(receiver.managerKey).take(receiver, cs, false);
     }
 
     public void reply(Receiver receiver, Command reply) {
@@ -71,7 +72,7 @@
 
     public void receive() {
         if (count.decrementAndGet() == 0) {
-            CodeSegmentManager.submit(cs);
+            AliceDaemon.codeSegmentManager.submit(cs);
         }
     }
 
@@ -86,10 +87,11 @@
 
     public void recommand(Receiver receiver) {
         // TODO why only local?
-        DataSegment.getLocal().recommand(receiver, cs);
+        AliceDaemon.dataSegment.getLocal().recommand(receiver, cs);
     }
 
     public void setCounter(int cnt){
         count.set(cnt);
     }
 }
+
--- a/src/main/java/alice/codesegment/OutputDataSegment.java	Fri Jun 19 14:06:10 2015 +0900
+++ b/src/main/java/alice/codesegment/OutputDataSegment.java	Mon Aug 03 18:31:19 2015 +0900
@@ -1,5 +1,6 @@
 package alice.codesegment;
 
+import alice.daemon.AliceDaemon;
 import alice.datasegment.CommandType;
 import alice.datasegment.DataSegment;
 import alice.datasegment.ReceiveData;
@@ -17,17 +18,17 @@
      */
     public void flip(Receiver receiver) {
         if (receiver.isCompressed()){
-            DataSegment.getCompressedLocal().put(receiver.key, receiver.getReceiveData(), false);
+            AliceDaemon.dataSegment.getCompressedLocal().put(receiver.key, receiver.getReceiveData(), false);
         } else {
-            DataSegment.getLocal().put(receiver.key, receiver.getReceiveData(), false);
+            AliceDaemon.dataSegment.getLocal().put(receiver.key, receiver.getReceiveData(), false);
         }
     }
 
     public void flip(String managerKey, String key, Receiver receiver){
         if (receiver.isCompressed()){
-            DataSegment.get("compressed" + managerKey).put(key, receiver.getReceiveData(), false);
+            AliceDaemon.dataSegment.get("compressed" + managerKey).put(key, receiver.getReceiveData(), false);
         } else {
-            DataSegment.get(managerKey).put(key, receiver.getReceiveData(), false);
+            AliceDaemon.dataSegment.get(managerKey).put(key, receiver.getReceiveData(), false);
         }
 
     }
@@ -36,16 +37,16 @@
         switch (type) {
             case PUT:
                 if (receiver.isCompressed()){
-                    DataSegment.getCompressedLocal().put(receiver.key, receiver.getReceiveData(), false);//localなら全部false。
+                    AliceDaemon.dataSegment.getCompressedLocal().put(receiver.key, receiver.getReceiveData(), false);//localなら全部false。
                 } else {
-                    DataSegment.getLocal().put(receiver.key, receiver.getReceiveData(), false);
+                    AliceDaemon.dataSegment.getLocal().put(receiver.key, receiver.getReceiveData(), false);
                 }
                 break;
             case UPDATE:
                 if (receiver.isCompressed()){
-                    DataSegment.getCompressedLocal().update(receiver.key, receiver.getReceiveData(), false);
+                    AliceDaemon.dataSegment.getCompressedLocal().update(receiver.key, receiver.getReceiveData(), false);
                 } else {
-                    DataSegment.getLocal().update(receiver.key, receiver.getReceiveData(), false);
+                    AliceDaemon.dataSegment.getLocal().update(receiver.key, receiver.getReceiveData(), false);
                 }
 
                 break;
@@ -55,56 +56,56 @@
     }
 
     public void put(String key, ReceiveData rData) {
-        DataSegment.getLocal().put(key, rData, false);
+        AliceDaemon.dataSegment.getLocal().put(key, rData, false);
     }
 
     public void put(String key, Object val) {
         ReceiveData rData = new ReceiveData(val);
-        DataSegment.getLocal().put(key, rData, false);
+        AliceDaemon.dataSegment.getLocal().put(key, rData, false);
     }
 
     public void update(String key, Object val) {
         ReceiveData rData = new ReceiveData(val);
-        DataSegment.getLocal().update(key, rData, false);
+        AliceDaemon.dataSegment.getLocal().update(key, rData, false);
     }
 
     /**
      * for remote
      */
     public void put(String managerKey, String key, ReceiveData rData) {
-        DataSegment.get(managerKey).put(key, rData, false);
+        AliceDaemon.dataSegment.get(managerKey).put(key, rData, false);
     }
 
     public void put(String managerKey, String key, Object val) {//追加
         ReceiveData rData = new ReceiveData(val);
-        DataSegment.get(managerKey).put(key, rData, false);
+        AliceDaemon.dataSegment.get(managerKey).put(key, rData, false);
     }
 
     public void quickPut(String managerKey, String key, ReceiveData rData) {
-        DataSegment.get(managerKey).put(key, rData, true);
+        AliceDaemon.dataSegment.get(managerKey).put(key, rData, true);
     }
 
     public void quickPut(String managerKey, String key, Object val) {
         ReceiveData rData = new ReceiveData(val);
-        DataSegment.get(managerKey).put(key, rData, true);
+        AliceDaemon.dataSegment.get(managerKey).put(key, rData, true);
     }
 
     public void update(String managerKey, String key, ReceiveData rData) {
-        DataSegment.get(managerKey).update(key, rData, false);
+        AliceDaemon.dataSegment.get(managerKey).update(key, rData, false);
     }
 
     public void update(String managerKey, String key, Object val) {
         ReceiveData rData = new ReceiveData(val);
-        DataSegment.get(managerKey).update(key, rData, false);
+        AliceDaemon.dataSegment.get(managerKey).update(key, rData, false);
     }
 
     public void quickUpdate(String managerKey, String key, ReceiveData rData) {
-        DataSegment.get(managerKey).update(key, rData, true);
+        AliceDaemon.dataSegment.get(managerKey).update(key, rData, true);
     }
 
     public void quickUpdate(String managerKey, String key, Object val, boolean cFlag) {
         ReceiveData rData = new ReceiveData(val);
-        DataSegment.get(managerKey).update(key, rData, true);
+        AliceDaemon.dataSegment.get(managerKey).update(key, rData, true);
     }
 
     /**
@@ -114,31 +115,31 @@
      */
 
     public void finish(String managerKey) {
-        if (DataSegment.contains(managerKey))
-            DataSegment.get(managerKey).finish();
+        if (AliceDaemon.dataSegment.contains(managerKey))
+            AliceDaemon.dataSegment.get(managerKey).finish();
     }
 
     /**
-     * close socket for RemoteDataSegment after send other messages.
+     * close socket for RemoteAliceDaemon.dataSegment after send other messages.
      *
      * @param managerKey
      */
 
     public void close(String managerKey) {
-        if (DataSegment.contains(managerKey))
-            DataSegment.get(managerKey).close();
+        if (AliceDaemon.dataSegment.contains(managerKey))
+            AliceDaemon.dataSegment.get(managerKey).close();
     }
 
     /**
-     * "key" is not remote DataSegment's key.
+     * "key" is not remote AliceDaemon.dataSegment's key.
      * "Ping Response" return in this "key"
      *
      * @param managerKey
      * @param returnKey
      */
     public void ping(String managerKey, String returnKey) {
-        if (DataSegment.contains(managerKey))
-            DataSegment.get(managerKey).ping(returnKey);
+        if (AliceDaemon.dataSegment.contains(managerKey))
+            AliceDaemon.dataSegment.get(managerKey).ping(returnKey);
     }
 
 }
--- a/src/main/java/alice/daemon/AcceptThread.java	Fri Jun 19 14:06:10 2015 +0900
+++ b/src/main/java/alice/daemon/AcceptThread.java	Mon Aug 03 18:31:19 2015 +0900
@@ -29,10 +29,10 @@
                 Connection connection = new Connection(socket);
                 String key = "accept" + counter;
                 IncomingTcpConnection in =
-                        new IncomingTcpConnection(connection, DataSegment.get("local"), key);
+                        new IncomingTcpConnection(connection, AliceDaemon.dataSegment.get("local"), key);
                 in.setName(connection.getInfoString()+"-IncomingTcp");
                 in.start();
-                DataSegment.setAccept(key, in);
+                AliceDaemon.dataSegment.setAccept(key, in);
                 OutboundTcpConnection out = new OutboundTcpConnection(connection);
                 out.setName(connection.getInfoString()+"-OutboundTcp");
                 out.start();
--- a/src/main/java/alice/daemon/AliceDaemon.java	Fri Jun 19 14:06:10 2015 +0900
+++ b/src/main/java/alice/daemon/AliceDaemon.java	Mon Aug 03 18:31:19 2015 +0900
@@ -6,10 +6,16 @@
 import java.net.InetSocketAddress;
 import java.net.ServerSocket;
 import java.nio.channels.ServerSocketChannel;
+import java.util.HashMap;
 
+import alice.codesegment.CodeSegmentManager;
+import alice.datasegment.Command;
+import alice.datasegment.CommandType;
+import alice.datasegment.DataSegment;
 import org.apache.log4j.Logger;
 import org.apache.log4j.PatternLayout;
 import org.apache.log4j.WriterAppender;
+import org.msgpack.MessagePack;
 
 public class AliceDaemon {
 
@@ -17,9 +23,31 @@
     private AcceptThread acceptThread;
     private Logger log = Logger.getLogger(AliceDaemon.class);
 
+    // static
+    public static final MessagePack packer = new MessagePack();
+    public static DataSegment dataSegment = new DataSegment();
+    //public static CommandType commandType = CommandType.PUT;
+    public static HashMap<Integer, CommandType> hash = new HashMap<Integer, CommandType>();//コマンド対応表
+    public static int lastId = 0;//コマンドの総数
+    public static CodeSegmentManager codeSegmentManager = new CodeSegmentManager();
+
     public AliceDaemon(Config conf) {
         this.conf = conf;
         setLogger();
+        commandInit();//static
+    }
+
+    public static CommandType getCommandTypeFromId(int id) {
+        return hash.get(id);
+    }
+
+    public void commandInit() {//ToDo: 好きなタイミングで呼び出せるように
+        int id = 1;
+
+        for (CommandType type : CommandType.values()) {
+            type.setID(id);
+            hash.put(id++, type);
+        }
     }
 
     private void setLogger() {
--- a/src/main/java/alice/daemon/Connection.java	Fri Jun 19 14:06:10 2015 +0900
+++ b/src/main/java/alice/daemon/Connection.java	Mon Aug 03 18:31:19 2015 +0900
@@ -59,9 +59,9 @@
         if (name!=null){
             ConnectionInfo c = new ConnectionInfo(name, socket);
             ReceiveData rData = new ReceiveData(c);
-            DataSegment.getLocal().put("_DISCONNECT", rData, false);
+            AliceDaemon.dataSegment.getLocal().put("_DISCONNECT", rData, false);
             if (sendManager) {
-                DataSegment.get("manager").put("_DISCONNECTNODE", rData, false);
+                AliceDaemon.dataSegment.get("manager").put("_DISCONNECTNODE", rData, false);
                 sendManager = false;
             }
         }
--- a/src/main/java/alice/daemon/IncomingTcpConnection.java	Fri Jun 19 14:06:10 2015 +0900
+++ b/src/main/java/alice/daemon/IncomingTcpConnection.java	Mon Aug 03 18:31:19 2015 +0900
@@ -15,9 +15,9 @@
     private Connection connection;
     protected DataSegmentManager manager;
     protected String reverseKey;
-    private LocalDataSegmentManager lmanager = DataSegment.getLocal();
-    private CompressedLocalDataSegmentManager compressedlmanager = DataSegment.getCompressedLocal();
-    private static final MessagePack packer = new MessagePack();
+    private LocalDataSegmentManager lmanager = AliceDaemon.dataSegment.getLocal();
+    private CompressedLocalDataSegmentManager compressedlmanager = AliceDaemon.dataSegment.getCompressedLocal();
+    private MessagePack packer = AliceDaemon.packer;
 
     public IncomingTcpConnection(DataSegmentManager manager) {
         this.manager = manager;
@@ -55,7 +55,7 @@
                 Command cmd = null;
                 ReceiveData rData = null;
                 CommandMessage msg = unpacker.read(CommandMessage.class);///read header
-                CommandType type = CommandType.getCommandTypeFromId(msg.type);
+                CommandType type = AliceDaemon.getCommandTypeFromId(msg.type);
                 switch (type) {
                 case UPDATE:
                 case PUT:
@@ -111,12 +111,12 @@
                     cmd.cs.ids.reply(cmd.receiver, rCmd);
                     break;
                 case PING:
-                    if (DataSegment.contains(reverseKey))
-                        DataSegment.get(reverseKey).response(msg.key);
+                    if (AliceDaemon.dataSegment.contains(reverseKey))
+                        AliceDaemon.dataSegment.get(reverseKey).response(msg.key);
                     break;
                 case RESPONSE:
                     rData = new ReceiveData(new RespondData(reverseKey, System.currentTimeMillis()));
-                    DataSegment.getLocal().put(msg.key, rData, false);
+                    AliceDaemon.dataSegment.getLocal().put(msg.key, rData, false);
                     break;
                 default:
                     break;
--- a/src/main/java/alice/daemon/IncomingUdpConnection.java	Fri Jun 19 14:06:10 2015 +0900
+++ b/src/main/java/alice/daemon/IncomingUdpConnection.java	Mon Aug 03 18:31:19 2015 +0900
@@ -22,7 +22,7 @@
 
     public MulticastConnection receiver;
     public MulticastConnection sender;
-    private static final MessagePack packer = new MessagePack();
+    private MessagePack packer = AliceDaemon.packer;
 
     public IncomingUdpConnection(MulticastConnection s, MulticastConnection r, DataSegmentManager manager) {
         super(manager);
@@ -43,7 +43,7 @@
                 Unpacker unpacker = packer.createBufferUnpacker(receive);
                 receive.flip();
                 CommandMessage msg = unpacker.read(CommandMessage.class);
-                CommandType type = CommandType.getCommandTypeFromId(msg.type);
+                CommandType type = AliceDaemon.getCommandTypeFromId(msg.type);
                 switch (type) {
                 case UPDATE:
                 case PUT:
@@ -82,12 +82,12 @@
                     cmd.cs.ids.reply(cmd.receiver, rCmd);
                     break;
                 case PING:
-                    if (DataSegment.contains(reverseKey))
-                        DataSegment.get(reverseKey).response(msg.key);
+                    if (AliceDaemon.dataSegment.contains(reverseKey))
+                        AliceDaemon.dataSegment.get(reverseKey).response(msg.key);
                     break;
                 case RESPONSE:
                     rData = new ReceiveData(new RespondData(reverseKey, System.currentTimeMillis()));
-                    DataSegment.getLocal().put(msg.key, rData, false);
+                    AliceDaemon.dataSegment.getLocal().put(msg.key, rData, false);
                     break;
                 default:
                     break;
--- a/src/main/java/alice/datasegment/Command.java	Fri Jun 19 14:06:10 2015 +0900
+++ b/src/main/java/alice/datasegment/Command.java	Mon Aug 03 18:31:19 2015 +0900
@@ -4,6 +4,7 @@
 import java.nio.ByteBuffer;
 import java.util.concurrent.BlockingQueue;
 
+import alice.daemon.AliceDaemon;
 import org.msgpack.MessagePack;
 
 import alice.codesegment.CodeSegment;
@@ -27,7 +28,7 @@
     private boolean quickFlag = false;//SEDAを挟まずに処理を行うかどうか。trueだとリモート
     private boolean compressFlag = false;//trueだったら圧縮する必要がある
 
-    private static final MessagePack packer = new MessagePack();
+    private MessagePack packer = AliceDaemon.packer;
 
     /**
      * for PEEK/TAKE
--- a/src/main/java/alice/datasegment/CommandType.java	Fri Jun 19 14:06:10 2015 +0900
+++ b/src/main/java/alice/datasegment/CommandType.java	Mon Aug 03 18:31:19 2015 +0900
@@ -1,5 +1,7 @@
 package alice.datasegment;
 
+import alice.daemon.AliceDaemon;
+
 import java.util.HashMap;
 
 public enum CommandType {
@@ -11,38 +13,17 @@
     REPLY,//PEEK/TAKEに対応
     CLOSE,
     FINISH,
-    PING,//heart beat 用
-    RESPONSE;//heart beat 用
-
-    public int id;//コマンドのid
-    public static HashMap<Integer, CommandType> hash = new HashMap<Integer, CommandType>();//コマンド対応表
-    private static int lastId = 0;//コマンドの総数
+    PING,//for heart beat
+    RESPONSE,//for heart beat
+    LAST;
 
-    private CommandType(int id) {
+    public int id;//コマンドのid。MessagePackではenumが扱えないため通信時にidに置き換えている。
+
+    public void setID(int id){
         this.id = id;
-        setLastId(id);
-    }
-
-    private CommandType() {
-        this.id = incrementLastId();
     }
 
-    private void setLastId(int id) {
-        lastId =id;
-    }
-
-    private int incrementLastId() {
-        return ++lastId;
+    public int getID(){
+        return this.id;
     }
-
-    public static CommandType getCommandTypeFromId(int id) {
-        return hash.get(id);
-    }
-
-    static {
-        for (CommandType type : CommandType.values()) {
-            hash.put(type.id, type);
-        }
-    }
-
 }
--- a/src/main/java/alice/datasegment/DataSegment.java	Fri Jun 19 14:06:10 2015 +0900
+++ b/src/main/java/alice/datasegment/DataSegment.java	Mon Aug 03 18:31:19 2015 +0900
@@ -2,44 +2,45 @@
 
 import java.util.concurrent.ConcurrentHashMap;
 
+import alice.daemon.AliceDaemon;
 import alice.daemon.IncomingTcpConnection;
 import alice.datasegment.MulticastDataSegmentManager.SocketType;
 import org.apache.log4j.Logger;
 
 public class DataSegment {
 
-    private static DataSegment dataSegment = new DataSegment();
+    //private static DataSegment dataSegment = new DataSegment();//ToDo: static消す
     private LocalDataSegmentManager local = new LocalDataSegmentManager();
     private CompressedLocalDataSegmentManager compressedLocal = new CompressedLocalDataSegmentManager(local);//追加
     private ConcurrentHashMap<String, DataSegmentManager> dataSegmentManagers = new ConcurrentHashMap<String, DataSegmentManager>(); //TODO Over Head
     private ConcurrentHashMap<String, IncomingTcpConnection> acceptHash = new ConcurrentHashMap<String, IncomingTcpConnection>();
 
-    private DataSegment() {
+    public DataSegment() {
         dataSegmentManagers.put("local", local);
         dataSegmentManagers.put("compressedlocal", compressedLocal);
     }
 
-    public static DataSegmentManager get(String key) {
+    public DataSegmentManager get(String key) {
         if (key == null){
-            return dataSegment.dataSegmentManagers.get("local");
+            return AliceDaemon.dataSegment.dataSegmentManagers.get("local");
         } else {
-            return dataSegment.dataSegmentManagers.get(key);
+            return AliceDaemon.dataSegment.dataSegmentManagers.get(key);
         }
     }
 
-    public static LocalDataSegmentManager getLocal() {
-        return dataSegment.local;
+    public LocalDataSegmentManager getLocal() {
+        return AliceDaemon.dataSegment.local;
     }
 
-    public static CompressedLocalDataSegmentManager getCompressedLocal() {//追加
-        return dataSegment.compressedLocal;
+    public CompressedLocalDataSegmentManager getCompressedLocal() {//追加
+        return AliceDaemon.dataSegment.compressedLocal;
     }
 
-    public static void register(String key, DataSegmentManager manager) {
-        dataSegment.dataSegmentManagers.put(key, manager);
+    public void register(String key, DataSegmentManager manager) {
+        AliceDaemon.dataSegment.dataSegmentManagers.put(key, manager);
     }
 
-    public static RemoteDataSegmentManager connect(String connectionKey, String reverseKey, String hostName, int port) {
+    public RemoteDataSegmentManager connect(String connectionKey, String reverseKey, String hostName, int port) {
         if (connectionKey.startsWith("compressed")){//compressedが含まれていたらエラーを返して終了
             System.out.println("You can't use 'compressed' for DataSegmentManager name.");
             System.exit(0);
@@ -53,26 +54,26 @@
         return manager;
     }
 
-    public static MulticastDataSegmentManager connectMulticast(String connectionKey ,String MCSTADDR, int port, String nis, SocketType type){
+    public MulticastDataSegmentManager connectMulticast(String connectionKey ,String MCSTADDR, int port, String nis, SocketType type){
         MulticastDataSegmentManager manager = new MulticastDataSegmentManager(connectionKey ,MCSTADDR,  port, nis, type);
         if (type!=SocketType.Receiver)
             register(connectionKey, manager);
         return manager;
     }
 
-    public static void setAccept(String key, IncomingTcpConnection incoming) {
-        dataSegment.acceptHash.put(key, incoming);
+    public void setAccept(String key, IncomingTcpConnection incoming) {
+        AliceDaemon.dataSegment.acceptHash.put(key, incoming);
     }
 
-    public static IncomingTcpConnection getAccept(String key) {
-        return dataSegment.acceptHash.get(key);
+    public IncomingTcpConnection getAccept(String key) {
+        return AliceDaemon.dataSegment.acceptHash.get(key);
     }
 
-    public static void remove(String key){
-        dataSegment.dataSegmentManagers.remove(key);
+    public void remove(String key){
+        AliceDaemon.dataSegment.dataSegmentManagers.remove(key);
     }
 
-    public static boolean contains(String key){
-        return dataSegment.dataSegmentManagers.containsKey(key);
+    public boolean contains(String key){
+        return AliceDaemon.dataSegment.dataSegmentManagers.containsKey(key);
     }
 }
--- a/src/main/java/alice/datasegment/MulticastDataSegmentManager.java	Fri Jun 19 14:06:10 2015 +0900
+++ b/src/main/java/alice/datasegment/MulticastDataSegmentManager.java	Mon Aug 03 18:31:19 2015 +0900
@@ -9,6 +9,7 @@
 import java.net.StandardSocketOptions;
 import java.nio.channels.DatagramChannel;
 
+import alice.daemon.AliceDaemon;
 import org.apache.log4j.Logger;
 
 import alice.daemon.IncomingUdpConnection;
@@ -37,7 +38,7 @@
                 IncomingUdpConnection in = new IncomingUdpConnection((MulticastConnection) connection, receiver, this);
                 in.setName("multicast-IncomingUdp");
                 in.start();
-                DataSegment.setAccept(connectionKey, in);
+                AliceDaemon.dataSegment.setAccept(connectionKey, in);
             }
             if (type !=SocketType.Receiver) {
                 OutboundTcpConnection out = new OutboundTcpConnection(connection); // OutboundUdpConnection sender
--- a/src/main/java/alice/datasegment/ReceiveData.java	Fri Jun 19 14:06:10 2015 +0900
+++ b/src/main/java/alice/datasegment/ReceiveData.java	Mon Aug 03 18:31:19 2015 +0900
@@ -5,6 +5,7 @@
 import java.util.LinkedList;
 import java.util.zip.*;
 
+import alice.daemon.AliceDaemon;
 import org.msgpack.MessagePack;
 import org.msgpack.type.Value;
 
@@ -23,7 +24,7 @@
     public boolean setTime = false;
     public int depth = 1;
 
-    private static final MessagePack packer = new MessagePack();
+    private MessagePack packer = AliceDaemon.packer;
 
     /**
      * コンストラクタ。Object型のDSと圧縮のメタ情報を受け取る。
--- a/src/main/java/alice/datasegment/RemoteDataSegmentManager.java	Fri Jun 19 14:06:10 2015 +0900
+++ b/src/main/java/alice/datasegment/RemoteDataSegmentManager.java	Mon Aug 03 18:31:19 2015 +0900
@@ -49,7 +49,7 @@
                 in.setPriority(MAX_PRIORITY);
                 in.start();
                 OutboundTcpConnection out = new OutboundTcpConnection(connection);
-                out.setName(connectionKey + "-OutboundTcp");
+                out.setName(connection.name + "-OutboundTcp");
                 out.setPriority(MAX_PRIORITY);
                 out.start();
             }
--- a/src/main/java/alice/test/codesegment/local/TestLocalAlice.java	Fri Jun 19 14:06:10 2015 +0900
+++ b/src/main/java/alice/test/codesegment/local/TestLocalAlice.java	Mon Aug 03 18:31:19 2015 +0900
@@ -5,7 +5,9 @@
 
 public class TestLocalAlice {
     public static void main(String args[]) {
-        new AliceDaemon(new Config(args)).listen(); // logger off
+        //AliceDaemon deamon = new AliceDaemon(new Config(args)); // logger off
+        //deamon.listen();
+        new AliceDaemon(new Config(args)).listen();
         new StartCodeSegment().execute();
     }
 
--- a/src/main/java/alice/test/codesegment/remote/TestRemoteAlice.java	Fri Jun 19 14:06:10 2015 +0900
+++ b/src/main/java/alice/test/codesegment/remote/TestRemoteAlice.java	Mon Aug 03 18:31:19 2015 +0900
@@ -9,7 +9,7 @@
         TestRemoteConfig conf = new TestRemoteConfig(args);//トポロジー設定をコマンドライン引数からとって設定?
 
         new AliceDaemon(conf).listen();//構成開始?TopMはない
-        DataSegment.connect(conf.key, "", conf.hostname, conf.connectPort);
+        AliceDaemon.dataSegment.connect(conf.key, "", conf.hostname, conf.connectPort);
         new RemoteStartCodeSegment().execute();
     }
 
--- a/src/main/java/alice/test/topology/aquarium/fx/CheckAllFishInfoExist.java	Fri Jun 19 14:06:10 2015 +0900
+++ b/src/main/java/alice/test/topology/aquarium/fx/CheckAllFishInfoExist.java	Mon Aug 03 18:31:19 2015 +0900
@@ -2,6 +2,7 @@
 
 import java.io.IOException;
 
+import alice.daemon.AliceDaemon;
 import javafx.scene.Group;
 import javafx.scene.Node;
 
@@ -30,7 +31,7 @@
             new SendDataOthers(info, info.key);
             ods.put("registeredList", info.getVal());
             ArrayValue fishInfoList = info.asClass(Value.class).asArrayValue();
-            MessagePack packer = new MessagePack();
+            MessagePack packer = AliceDaemon.packer;
             Group root = info1.asClass(Group.class);
             for (Value v : fishInfoList){
                 boolean exist = false;
--- a/src/main/java/alice/topology/manager/CreateTreeTopology.java	Fri Jun 19 14:06:10 2015 +0900
+++ b/src/main/java/alice/topology/manager/CreateTreeTopology.java	Mon Aug 03 18:31:19 2015 +0900
@@ -1,6 +1,8 @@
 package alice.topology.manager;
 
 import java.util.HashMap;
+
+import alice.daemon.AliceDaemon;
 import org.msgpack.type.ValueFactory;
 
 import alice.codesegment.CodeSegment;
@@ -41,7 +43,7 @@
 
         String nodeName = "node"+comingHostCount;
         // Manager connect to Node
-        DataSegment.connect(nodeName, nodeName, host.name, host.port);
+        AliceDaemon.dataSegment.connect(nodeName, nodeName, host.name, host.port);
         ods.put(nodeName, "host", nodeName);
         ods.put(nodeName, "cookie", cookie);
 
--- a/src/main/java/alice/topology/manager/IncomingHosts.java	Fri Jun 19 14:06:10 2015 +0900
+++ b/src/main/java/alice/topology/manager/IncomingHosts.java	Mon Aug 03 18:31:19 2015 +0900
@@ -3,6 +3,7 @@
 import java.util.HashMap;
 import java.util.LinkedList;
 
+import alice.daemon.AliceDaemon;
 import org.msgpack.type.ValueFactory;
 
 import alice.codesegment.CodeSegment;
@@ -40,7 +41,7 @@
         // not have or match cookie
         String nodeName = nodeNames.poll();
         // Manager connect to Node
-        DataSegment.connect(nodeName, "", host.name, host.port);
+        AliceDaemon.dataSegment.connect(nodeName, "", host.name, host.port);
         ods.put(nodeName, "host", nodeName);
 
         String cookie = this.cookie.asString();
--- a/src/main/java/alice/topology/manager/SearchHostName.java	Fri Jun 19 14:06:10 2015 +0900
+++ b/src/main/java/alice/topology/manager/SearchHostName.java	Mon Aug 03 18:31:19 2015 +0900
@@ -3,6 +3,7 @@
 import java.util.HashMap;
 import java.util.LinkedList;
 
+import alice.daemon.AliceDaemon;
 import org.msgpack.type.ValueFactory;
 
 import alice.codesegment.CodeSegment;
@@ -30,8 +31,8 @@
         @SuppressWarnings("unchecked")
         HashMap<String, LinkedList<HostMessage>> topology = info1.asClass(HashMap.class);
 
-        DataSegment.remove(hostInfo.absName);
-        DataSegment.connect(hostInfo.absName, "", hostInfo.name, hostInfo.port);
+        AliceDaemon.dataSegment.remove(hostInfo.absName);
+        AliceDaemon.dataSegment.connect(hostInfo.absName, "", hostInfo.name, hostInfo.port);
         ods.put(hostInfo.absName, "host", hostInfo.absName);
 
         // put Host dataSegment on reconnect node
--- a/src/main/java/alice/topology/manager/keeparive/ListManager.java	Fri Jun 19 14:06:10 2015 +0900
+++ b/src/main/java/alice/topology/manager/keeparive/ListManager.java	Mon Aug 03 18:31:19 2015 +0900
@@ -2,6 +2,7 @@
 
 import java.util.LinkedList;
 
+import alice.daemon.AliceDaemon;
 import alice.datasegment.DataSegment;
 
 public class ListManager {
@@ -93,7 +94,7 @@
                 TaskExecuter.getInstance().skip();
             }
         }
-        DataSegment.getLocal().removeDataSegmentKey("_FORM_"+name);
+        AliceDaemon.dataSegment.getLocal().removeDataSegmentKey("_FORM_"+name);
         task = new TaskInfo(TaskType.CLOSE);
         task.setInfo(name, 0);
         while(deleteTask(task));
--- a/src/main/java/alice/topology/manager/keeparive/TaskExecuter.java	Fri Jun 19 14:06:10 2015 +0900
+++ b/src/main/java/alice/topology/manager/keeparive/TaskExecuter.java	Mon Aug 03 18:31:19 2015 +0900
@@ -1,6 +1,7 @@
 package alice.topology.manager.keeparive;
 
 import alice.codesegment.CodeSegment;
+import alice.daemon.AliceDaemon;
 import alice.datasegment.CommandType;
 import alice.datasegment.DataSegment;
 import alice.datasegment.Receiver;
@@ -64,8 +65,8 @@
                     new RespondPing(nowTask.getReturnKey());
                 } else if (nowTask.getType() == TaskType.CLOSE) {
                     // no response from the Remote DataSegment. So close this connection.
-                    if (DataSegment.contains(nowTask.getManagerKey())) {
-                        DataSegment.get(nowTask.getManagerKey()).shutdown();
+                    if (AliceDaemon.dataSegment.contains(nowTask.getManagerKey())) {
+                        AliceDaemon.dataSegment.get(nowTask.getManagerKey()).shutdown();
                         System.out.println(nowTask.getManagerKey() +" IS SHOTDOWN");
                     } else {
                         System.out.println(nowTask.getManagerKey() +" IS ALREADY SHOTDOWN");
--- a/src/main/java/alice/topology/node/CloseRemoteDataSegment.java	Fri Jun 19 14:06:10 2015 +0900
+++ b/src/main/java/alice/topology/node/CloseRemoteDataSegment.java	Mon Aug 03 18:31:19 2015 +0900
@@ -1,6 +1,7 @@
 package alice.topology.node;
 
 import alice.codesegment.CodeSegment;
+import alice.daemon.AliceDaemon;
 import alice.datasegment.CommandType;
 import alice.datasegment.DataSegment;
 import alice.datasegment.Receiver;
@@ -25,8 +26,8 @@
         String managerKey = info.asString();
         ListManager manager = info3.asClass(ListManager.class);
         if (info1.from.equals(managerKey)||info2.from.equals(managerKey)) {
-            if (DataSegment.contains(managerKey))
-                DataSegment.get(managerKey).shutdown();
+            if (AliceDaemon.dataSegment.contains(managerKey))
+                AliceDaemon.dataSegment.get(managerKey).shutdown();
             manager.deleteAll(managerKey);
         }
 
--- a/src/main/java/alice/topology/node/DeleteConnection.java	Fri Jun 19 14:06:10 2015 +0900
+++ b/src/main/java/alice/topology/node/DeleteConnection.java	Mon Aug 03 18:31:19 2015 +0900
@@ -3,6 +3,7 @@
 import java.util.List;
 
 import alice.codesegment.CloseEventCodeSegment;
+import alice.daemon.AliceDaemon;
 import alice.datasegment.CommandType;
 import alice.datasegment.DataSegment;
 import alice.datasegment.Receiver;
@@ -26,9 +27,9 @@
 
         if (list.contains(name))
             list.remove(name);
-        if (DataSegment.contains(name)) {
-            DataSegment.get(name).shutdown();
-            DataSegment.remove(name);
+        if (AliceDaemon.dataSegment.contains(name)) {
+            AliceDaemon.dataSegment.get(name).shutdown();
+            AliceDaemon.dataSegment.remove(name);
         }
         ListManager manager = info1.asClass(ListManager.class);
         manager.deleteAll(name);
--- a/src/main/java/alice/topology/node/IncomingConnectionInfo.java	Fri Jun 19 14:06:10 2015 +0900
+++ b/src/main/java/alice/topology/node/IncomingConnectionInfo.java	Mon Aug 03 18:31:19 2015 +0900
@@ -1,6 +1,7 @@
 package alice.topology.node;
 
 import alice.codesegment.CodeSegment;
+import alice.daemon.AliceDaemon;
 import alice.datasegment.CommandType;
 import alice.datasegment.DataSegment;
 import alice.datasegment.Receiver;
@@ -24,11 +25,11 @@
             ods.put("local", "configNodeNum", count);
         } else {
             HostMessage hostInfo = this.hostInfo.asClass(HostMessage.class);
-            if (DataSegment.contains(hostInfo.connectionName)) {
+            if (AliceDaemon.dataSegment.contains(hostInfo.connectionName)) {
                 // need to wait remove by DeleteConnection
                 ods.put("manager", absName, hostInfo);
             } else {
-                DataSegment.connect(hostInfo.connectionName, hostInfo.reverseName, hostInfo.name, hostInfo.port);
+                AliceDaemon.dataSegment.connect(hostInfo.connectionName, hostInfo.reverseName, hostInfo.name, hostInfo.port);
                 ods.put(hostInfo.connectionName, "reverseKey", hostInfo.reverseName);
                 count++;
 
--- a/src/main/java/alice/topology/node/IncomingReverseKey.java	Fri Jun 19 14:06:10 2015 +0900
+++ b/src/main/java/alice/topology/node/IncomingReverseKey.java	Mon Aug 03 18:31:19 2015 +0900
@@ -1,6 +1,7 @@
 package alice.topology.node;
 
 import alice.codesegment.CodeSegment;
+import alice.daemon.AliceDaemon;
 import alice.datasegment.CommandType;
 import alice.datasegment.DataSegment;
 import alice.datasegment.Receiver;
@@ -14,7 +15,7 @@
     public void run() {
         String reverseKey = this.reverseKey.asString();
         String from = this.reverseKey.from;
-        DataSegment.getAccept(from).setReverseKey(reverseKey);
+        AliceDaemon.dataSegment.getAccept(from).setReverseKey(reverseKey);
 
         int reverseCount = this.reverseCount.asInteger();
         reverseCount++;
--- a/src/main/java/alice/topology/node/PrepareToClose.java	Fri Jun 19 14:06:10 2015 +0900
+++ b/src/main/java/alice/topology/node/PrepareToClose.java	Mon Aug 03 18:31:19 2015 +0900
@@ -3,6 +3,7 @@
 import java.util.List;
 
 import alice.codesegment.CodeSegment;
+import alice.daemon.AliceDaemon;
 import alice.datasegment.CommandType;
 import alice.datasegment.DataSegment;
 import alice.datasegment.DataSegmentManager;
@@ -25,7 +26,7 @@
         List<String> list = info1.asClass(List.class);
         if (list.contains(managerKey)) {
             list.remove(managerKey);
-            DataSegmentManager manager = DataSegment.get(managerKey);
+            DataSegmentManager manager = AliceDaemon.dataSegment.get(managerKey);
             manager.setSendError(false);
 
             ods.put(managerKey, "_CLOSEREADY", managerKey);
--- a/src/main/java/alice/topology/node/StartTopologyNode.java	Fri Jun 19 14:06:10 2015 +0900
+++ b/src/main/java/alice/topology/node/StartTopologyNode.java	Mon Aug 03 18:31:19 2015 +0900
@@ -5,6 +5,7 @@
 import java.util.ArrayList;
 
 import alice.codesegment.CodeSegment;
+import alice.daemon.AliceDaemon;
 import alice.datasegment.DataSegment;
 import alice.topology.HostMessage;
 
@@ -20,7 +21,7 @@
 
     @Override
     public void run() {
-        DataSegment.connect("manager", "manager", conf.getManagerHostName(), conf.getManagerPort());
+        AliceDaemon.dataSegment.connect("manager", "manager", conf.getManagerHostName(), conf.getManagerPort());
         String localHostName = null;
         try {
             localHostName = InetAddress.getLocalHost().getHostName();
--- a/src/test/java/alice/daemon/MulticastStartCodeSegment.java	Fri Jun 19 14:06:10 2015 +0900
+++ b/src/test/java/alice/daemon/MulticastStartCodeSegment.java	Mon Aug 03 18:31:19 2015 +0900
@@ -13,7 +13,7 @@
 
     @Override
     public void run() {
-        DataSegment.connectMulticast("multicast",conf.MCSTADDR, conf.localPort, conf.nis, MulticastTest.type);
+        AliceDaemon.dataSegment.connectMulticast("multicast",conf.MCSTADDR, conf.localPort, conf.nis, MulticastTest.type);
         if (MulticastTest.type == SocketType.Both) {
             // in this case "multicast" key mean local.
             MulticastIncrement cs = new MulticastIncrement();
@@ -21,11 +21,11 @@
 
             ods.put("multicast", "num", 0);
         } else if (MulticastTest.type == SocketType.Receiver){
-            DataSegment.connectMulticast("multicast1", "224.0.0.2", conf.localPort+1, conf.nis, SocketType.Sender);
+            AliceDaemon.dataSegment.connectMulticast("multicast1", "224.0.0.2", conf.localPort+1, conf.nis, SocketType.Sender);
             ReceiveInteger cs = new ReceiveInteger();
             cs.num.setKey("num");
         } else if (MulticastTest.type == SocketType.Sender){
-            DataSegment.connectMulticast("multicast1", "224.0.0.2", conf.localPort+1, conf.nis, SocketType.Receiver);
+            AliceDaemon.dataSegment.connectMulticast("multicast1", "224.0.0.2", conf.localPort+1, conf.nis, SocketType.Receiver);
             ReceiveString cs = new ReceiveString();
             cs.str.setKey("str");