Mercurial > hg > Database > Christie
comparison 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 |
comparison
equal
deleted
inserted
replaced
21:5baccb8f7fbd | 22:77583ea56656 |
---|---|
1 package christie.daemon; | 1 package christie.daemon; |
2 | 2 |
3 | 3 |
4 import christie.codegear.CodeGearManager; | 4 import christie.codegear.CodeGearManager; |
5 import christie.datagear.Command; | 5 import christie.datagear.*; |
6 import christie.datagear.CommandType; | |
7 import christie.datagear.MessagePackDataGear; | |
8 import christie.datagear.RemoteDataGearManager; | |
9 | 6 |
10 import org.msgpack.MessagePack; | 7 import org.msgpack.MessagePack; |
11 import org.msgpack.unpacker.Unpacker; | 8 import org.msgpack.unpacker.Unpacker; |
12 | 9 |
13 import java.io.IOException; | 10 import java.io.IOException; |
65 | 62 |
66 break; | 63 break; |
67 | 64 |
68 case PEEK: | 65 case PEEK: |
69 case TAKE: | 66 case TAKE: |
70 //cmd = new Command(null, dg, null, null, null, connection); | 67 cmd = new Command(type, null, msg.cgmID, msg.dgmName, msg.key, null, null, connection); |
71 | 68 |
72 if (cgms.containsKey(msg.cgmID)){ | 69 if (cgms.containsKey(msg.cgmID)){ |
73 cgms.get(msg.cgmID).getLocalDGM().take(cmd); | 70 cgms.get(msg.cgmID).getLocalDGM().take(cmd); |
74 } else { | 71 } else { |
75 throw new IllegalArgumentException("DGM_ID:" + msg.cgmID + "is not found"); | 72 throw new IllegalArgumentException("DGM_ID:" + msg.cgmID + "is not found"); |
76 } | 73 } |
77 | 74 |
78 //connection.write(cmd); | |
79 | |
80 break; | 75 break; |
81 case REPLY://待っていたwaitListに渡してcsにセット | 76 case REPLY://待っていたwaitListに渡してcsにセット |
82 connection.socket.getInputStream().read(data); | 77 connection.socket.getInputStream().read(data); |
83 try { | 78 try { |
84 MessagePackDataGear dg = new MessagePackDataGear(data, Class.forName(msg.clazz)); | 79 MessagePackDataGear dg = new MessagePackDataGear(data, Class.forName(msg.clazz)); |
85 //waitListからcommandをとりだし値をセット | 80 |
86 //resolveWait(cmd); | 81 DataGearManager dgm = cgms.get(msg.cgmID).getDGM(msg.dgmName); |
82 Command cm = dgm.waitList.getAndRemoveCommand(msg.key); | |
83 cm.dg = dg; | |
84 dgm.runCommand(cm); | |
85 | |
87 } catch (ClassNotFoundException e) { | 86 } catch (ClassNotFoundException e) { |
88 e.printStackTrace(); | 87 e.printStackTrace(); |
89 } | 88 } |
90 | 89 |
91 break; | 90 break; |