Mercurial > hg > Database > Christie
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(); }