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;