diff src/main/java/christie/daemon/IncomingTcpConnection.java @ 22:77583ea56656

add WaitList and implement RemoteTake but not work
author Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
date Tue, 23 Jan 2018 22:02:54 +0900
parents 5baccb8f7fbd
children 695705dba324
line wrap: on
line diff
--- a/src/main/java/christie/daemon/IncomingTcpConnection.java	Mon Jan 22 23:22:09 2018 +0900
+++ b/src/main/java/christie/daemon/IncomingTcpConnection.java	Tue Jan 23 22:02:54 2018 +0900
@@ -2,10 +2,7 @@
 
 
 import christie.codegear.CodeGearManager;
-import christie.datagear.Command;
-import christie.datagear.CommandType;
-import christie.datagear.MessagePackDataGear;
-import christie.datagear.RemoteDataGearManager;
+import christie.datagear.*;
 
 import org.msgpack.MessagePack;
 import org.msgpack.unpacker.Unpacker;
@@ -67,7 +64,7 @@
 
                     case PEEK:
                     case TAKE:
-                        //cmd = new Command(null, dg, null, null, null, connection);
+                        cmd = new Command(type, null, msg.cgmID, msg.dgmName, msg.key, null, null, connection);
 
                         if (cgms.containsKey(msg.cgmID)){
                             cgms.get(msg.cgmID).getLocalDGM().take(cmd);
@@ -75,15 +72,17 @@
                             throw new IllegalArgumentException("DGM_ID:" + msg.cgmID + "is not found");
                         }
 
-                        //connection.write(cmd);
-
                         break;
                     case REPLY://待っていたwaitListに渡してcsにセット
                         connection.socket.getInputStream().read(data);
                         try {
                             MessagePackDataGear dg = new MessagePackDataGear(data, Class.forName(msg.clazz));
-                            //waitListからcommandをとりだし値をセット
-                            //resolveWait(cmd);
+
+                            DataGearManager dgm = cgms.get(msg.cgmID).getDGM(msg.dgmName);
+                            Command cm = dgm.waitList.getAndRemoveCommand(msg.key);
+                            cm.dg = dg;
+                            dgm.runCommand(cm);
+
                         } catch (ClassNotFoundException e) {
                             e.printStackTrace();
                         }