annotate src/main/java/alice/daemon/IncomingTcpConnection.java @ 600:0564f38e9bfe dispose

change allow using ids only peek from Normal Code Segment
author Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
date Tue, 16 Feb 2016 19:12:52 +0900
parents 3284428f525e
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
345
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
1 package alice.daemon;
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
2
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
3 import java.io.EOFException;
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
4 import java.io.IOException;
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
5 import java.nio.channels.ClosedChannelException;
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
6
527
bfec2c3ff1b8 change unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 526
diff changeset
7 import alice.datasegment.*;
528
6ebddfac7ff6 delete RecieveData.setCompressFlag
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents: 527
diff changeset
8 import org.msgpack.MessagePack;
345
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
9 import org.msgpack.unpacker.Unpacker;
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
10
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
11 import alice.topology.manager.keeparive.RespondData;
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
12
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
13 public class IncomingTcpConnection extends Thread {
419
aefbe41fcf12 change tab to space
sugi
parents: 417
diff changeset
14
480
c06070403ed4 named IncomingTcp and OutboundTcp Thread
sugi
parents: 478
diff changeset
15 private Connection connection;
c06070403ed4 named IncomingTcp and OutboundTcp Thread
sugi
parents: 478
diff changeset
16 protected DataSegmentManager manager;
c06070403ed4 named IncomingTcp and OutboundTcp Thread
sugi
parents: 478
diff changeset
17 protected String reverseKey;
419
aefbe41fcf12 change tab to space
sugi
parents: 417
diff changeset
18 private LocalDataSegmentManager lmanager = DataSegment.getLocal();
599
3284428f525e add MetaCodeSegment & MetaDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 574
diff changeset
19 private LocalDataSegmentManager metalmanager = DataSegment.getMetaLocal();
529
cb7c31848d16 add CompressedDSMs
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 528
diff changeset
20 private CompressedLocalDataSegmentManager compressedlmanager = DataSegment.getCompressedLocal();
599
3284428f525e add MetaCodeSegment & MetaDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 574
diff changeset
21 private CompressedLocalDataSegmentManager compressedmetalmanager = DataSegment.getCompressedMetaLocal();
528
6ebddfac7ff6 delete RecieveData.setCompressFlag
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents: 527
diff changeset
22 private static final MessagePack packer = new MessagePack();
419
aefbe41fcf12 change tab to space
sugi
parents: 417
diff changeset
23
aefbe41fcf12 change tab to space
sugi
parents: 417
diff changeset
24 public IncomingTcpConnection(DataSegmentManager manager) {
aefbe41fcf12 change tab to space
sugi
parents: 417
diff changeset
25 this.manager = manager;
aefbe41fcf12 change tab to space
sugi
parents: 417
diff changeset
26 }
aefbe41fcf12 change tab to space
sugi
parents: 417
diff changeset
27
aefbe41fcf12 change tab to space
sugi
parents: 417
diff changeset
28 public IncomingTcpConnection(Connection connection, DataSegmentManager manager, String reverseKey) {
aefbe41fcf12 change tab to space
sugi
parents: 417
diff changeset
29 this.manager = manager;
aefbe41fcf12 change tab to space
sugi
parents: 417
diff changeset
30 this.connection = connection;
aefbe41fcf12 change tab to space
sugi
parents: 417
diff changeset
31 this.reverseKey = reverseKey;
aefbe41fcf12 change tab to space
sugi
parents: 417
diff changeset
32 }
aefbe41fcf12 change tab to space
sugi
parents: 417
diff changeset
33
aefbe41fcf12 change tab to space
sugi
parents: 417
diff changeset
34 public LocalDataSegmentManager getLocalDataSegmentManager(){
aefbe41fcf12 change tab to space
sugi
parents: 417
diff changeset
35 return lmanager;
aefbe41fcf12 change tab to space
sugi
parents: 417
diff changeset
36 }
345
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
37
529
cb7c31848d16 add CompressedDSMs
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 528
diff changeset
38 public CompressedLocalDataSegmentManager getCompressedLocalDataSegmentManager(){
cb7c31848d16 add CompressedDSMs
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 528
diff changeset
39 return compressedlmanager;
cb7c31848d16 add CompressedDSMs
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 528
diff changeset
40 }
cb7c31848d16 add CompressedDSMs
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 528
diff changeset
41
419
aefbe41fcf12 change tab to space
sugi
parents: 417
diff changeset
42 /**
aefbe41fcf12 change tab to space
sugi
parents: 417
diff changeset
43 * pipeline thread for receiving
aefbe41fcf12 change tab to space
sugi
parents: 417
diff changeset
44 */
aefbe41fcf12 change tab to space
sugi
parents: 417
diff changeset
45 public void run() {
aefbe41fcf12 change tab to space
sugi
parents: 417
diff changeset
46 Unpacker unpacker = null;
aefbe41fcf12 change tab to space
sugi
parents: 417
diff changeset
47 try {
528
6ebddfac7ff6 delete RecieveData.setCompressFlag
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents: 527
diff changeset
48 unpacker = packer.createUnpacker(connection.socket.getInputStream());
419
aefbe41fcf12 change tab to space
sugi
parents: 417
diff changeset
49 } catch (IOException e) {
aefbe41fcf12 change tab to space
sugi
parents: 417
diff changeset
50 e.printStackTrace();
aefbe41fcf12 change tab to space
sugi
parents: 417
diff changeset
51 }
aefbe41fcf12 change tab to space
sugi
parents: 417
diff changeset
52 if (unpacker == null) {
aefbe41fcf12 change tab to space
sugi
parents: 417
diff changeset
53 return;
aefbe41fcf12 change tab to space
sugi
parents: 417
diff changeset
54 }
aefbe41fcf12 change tab to space
sugi
parents: 417
diff changeset
55 while (true) {
aefbe41fcf12 change tab to space
sugi
parents: 417
diff changeset
56 try {
447
d30451d1882f fix IncomingUdpConnection and passed UdpTest
sugi
parents: 446
diff changeset
57 Command cmd = null;
458
bcf6f4a6fcd0 need set Meta DataSegment PUT API
sugi
parents: 455
diff changeset
58 ReceiveData rData = null;
530
4aeebea0c9b5 can't unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 529
diff changeset
59 CommandMessage msg = unpacker.read(CommandMessage.class);///read header
419
aefbe41fcf12 change tab to space
sugi
parents: 417
diff changeset
60 CommandType type = CommandType.getCommandTypeFromId(msg.type);
aefbe41fcf12 change tab to space
sugi
parents: 417
diff changeset
61 switch (type) {
aefbe41fcf12 change tab to space
sugi
parents: 417
diff changeset
62 case UPDATE:
aefbe41fcf12 change tab to space
sugi
parents: 417
diff changeset
63 case PUT:
555
2af387211a85 add zippedDataSize to ReceiveData
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 554
diff changeset
64 int dataSize = unpacker.readInt();
574
ea21af9a4762 delete serializeFlag, fix MessagePack pack&unpack
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 561
diff changeset
65 rData = new ReceiveData(unpacker.getSerializedByteArray(dataSize), msg.compressed, msg.dataSize);
599
3284428f525e add MetaCodeSegment & MetaDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 574
diff changeset
66 rData.setMeta(msg.meta);
526
928907206d21 remove CompressedRDSM & CompressedLDSM class
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 525
diff changeset
67
488
7ef0ebb40c9b add measurement data in protocol
sugi
parents: 480
diff changeset
68 if (msg.setTime) {
554
1dc473a637c6 add setter/getter to setTime of ReceivedData
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 533
diff changeset
69 rData.setTimes(msg.time, true, msg.depth);
560
72ef96ba4195 add zeppedDataSize in CommandMessage
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 555
diff changeset
70 }
561
f1777341c5a2 add setZipped to CommandMessage&ReceiveData
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 560
diff changeset
71 if (msg.setZepped){
f1777341c5a2 add setZipped to CommandMessage&ReceiveData
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 560
diff changeset
72 rData.setZipped(msg.zippedDataSize, true);
560
72ef96ba4195 add zeppedDataSize in CommandMessage
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 555
diff changeset
73 } else {
561
f1777341c5a2 add setZipped to CommandMessage&ReceiveData
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 560
diff changeset
74 rData.setZipped(dataSize, true);
488
7ef0ebb40c9b add measurement data in protocol
sugi
parents: 480
diff changeset
75 }
526
928907206d21 remove CompressedRDSM & CompressedLDSM class
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 525
diff changeset
76
458
bcf6f4a6fcd0 need set Meta DataSegment PUT API
sugi
parents: 455
diff changeset
77 cmd = new Command(type, null, null, rData, 0, 0, null, null, reverseKey);
530
4aeebea0c9b5 can't unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 529
diff changeset
78 cmd.setCompressFlag(msg.compressed);
526
928907206d21 remove CompressedRDSM & CompressedLDSM class
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 525
diff changeset
79
600
0564f38e9bfe change allow using ids only peek from Normal Code Segment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 599
diff changeset
80 runCommand(msg, cmd);
526
928907206d21 remove CompressedRDSM & CompressedLDSM class
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 525
diff changeset
81
419
aefbe41fcf12 change tab to space
sugi
parents: 417
diff changeset
82 break;
aefbe41fcf12 change tab to space
sugi
parents: 417
diff changeset
83 case PEEK:
aefbe41fcf12 change tab to space
sugi
parents: 417
diff changeset
84 case TAKE:
446
a91890dff56e refactor
sugi
parents: 445
diff changeset
85 cmd = new Command(type, null, null, null, msg.index, msg.seq, null, null, connection);
530
4aeebea0c9b5 can't unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 529
diff changeset
86 cmd.setCompressFlag(msg.compressed);
526
928907206d21 remove CompressedRDSM & CompressedLDSM class
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 525
diff changeset
87
600
0564f38e9bfe change allow using ids only peek from Normal Code Segment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 599
diff changeset
88 runCommand(msg, cmd);
526
928907206d21 remove CompressedRDSM & CompressedLDSM class
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 525
diff changeset
89
467
6e304a7a60e7 remove white space
sugi
parents: 459
diff changeset
90 break;
419
aefbe41fcf12 change tab to space
sugi
parents: 417
diff changeset
91 case REMOVE:
446
a91890dff56e refactor
sugi
parents: 445
diff changeset
92 cmd = new Command(type, null, null, null, 0, 0, null, null, "");
530
4aeebea0c9b5 can't unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 529
diff changeset
93 lmanager.getDataSegmentKey(msg.key).runCommand(cmd);//ToDo:fix
419
aefbe41fcf12 change tab to space
sugi
parents: 417
diff changeset
94 break;
aefbe41fcf12 change tab to space
sugi
parents: 417
diff changeset
95 case REPLY:
446
a91890dff56e refactor
sugi
parents: 445
diff changeset
96 cmd = manager.getAndRemoveCmd(msg.seq);
533
b3c9554ccb1b change compressed API to set data specified DSM name
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 532
diff changeset
97
574
ea21af9a4762 delete serializeFlag, fix MessagePack pack&unpack
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 561
diff changeset
98 rData = new ReceiveData(unpacker.getSerializedByteArray(unpacker.readInt()), msg.compressed, msg.dataSize);
526
928907206d21 remove CompressedRDSM & CompressedLDSM class
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 525
diff changeset
99
467
6e304a7a60e7 remove white space
sugi
parents: 459
diff changeset
100 Command rCmd = new Command(type, null, null, rData, msg.index, msg.seq, null, null, "");
530
4aeebea0c9b5 can't unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 529
diff changeset
101 cmd.setCompressFlag(msg.compressed);
452
f68d103498e0 refactor (InputDataSegment holder class changed)
sugi
parents: 449
diff changeset
102 cmd.cs.ids.reply(cmd.receiver, rCmd);
419
aefbe41fcf12 change tab to space
sugi
parents: 417
diff changeset
103 break;
aefbe41fcf12 change tab to space
sugi
parents: 417
diff changeset
104 case PING:
471
be0b61986ff7 checking having DataSegmentManger before get DataSegmentManager
sugi
parents: 467
diff changeset
105 if (DataSegment.contains(reverseKey))
be0b61986ff7 checking having DataSegmentManger before get DataSegmentManager
sugi
parents: 467
diff changeset
106 DataSegment.get(reverseKey).response(msg.key);
419
aefbe41fcf12 change tab to space
sugi
parents: 417
diff changeset
107 break;
aefbe41fcf12 change tab to space
sugi
parents: 417
diff changeset
108 case RESPONSE:
525
30a74eee59c7 working TestRemoteAlice
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 524
diff changeset
109 rData = new ReceiveData(new RespondData(reverseKey, System.currentTimeMillis()));
533
b3c9554ccb1b change compressed API to set data specified DSM name
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 532
diff changeset
110 DataSegment.getLocal().put(msg.key, rData, false);
419
aefbe41fcf12 change tab to space
sugi
parents: 417
diff changeset
111 break;
aefbe41fcf12 change tab to space
sugi
parents: 417
diff changeset
112 default:
aefbe41fcf12 change tab to space
sugi
parents: 417
diff changeset
113 break;
aefbe41fcf12 change tab to space
sugi
parents: 417
diff changeset
114 }
aefbe41fcf12 change tab to space
sugi
parents: 417
diff changeset
115 } catch (ClosedChannelException e) {
aefbe41fcf12 change tab to space
sugi
parents: 417
diff changeset
116 return;
aefbe41fcf12 change tab to space
sugi
parents: 417
diff changeset
117 } catch (EOFException e) {
aefbe41fcf12 change tab to space
sugi
parents: 417
diff changeset
118 return;
aefbe41fcf12 change tab to space
sugi
parents: 417
diff changeset
119 } catch (IOException e) {
478
cf345b10a21a bug fix
sugi
parents: 471
diff changeset
120 return;
419
aefbe41fcf12 change tab to space
sugi
parents: 417
diff changeset
121 }
aefbe41fcf12 change tab to space
sugi
parents: 417
diff changeset
122 }
443
2f2623484b77 change protocol
sugi
parents: 419
diff changeset
123 }
480
c06070403ed4 named IncomingTcp and OutboundTcp Thread
sugi
parents: 478
diff changeset
124
600
0564f38e9bfe change allow using ids only peek from Normal Code Segment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 599
diff changeset
125 private void runCommand(CommandMessage msg, Command cmd) {
0564f38e9bfe change allow using ids only peek from Normal Code Segment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 599
diff changeset
126 if (msg.meta){
0564f38e9bfe change allow using ids only peek from Normal Code Segment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 599
diff changeset
127 if (msg.compressed){
0564f38e9bfe change allow using ids only peek from Normal Code Segment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 599
diff changeset
128 compressedmetalmanager.getDataSegmentKey(msg.key).runCommand(cmd);
0564f38e9bfe change allow using ids only peek from Normal Code Segment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 599
diff changeset
129 } else {
0564f38e9bfe change allow using ids only peek from Normal Code Segment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 599
diff changeset
130 metalmanager.getDataSegmentKey(msg.key).runCommand(cmd);
0564f38e9bfe change allow using ids only peek from Normal Code Segment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 599
diff changeset
131 }
0564f38e9bfe change allow using ids only peek from Normal Code Segment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 599
diff changeset
132 } else {
0564f38e9bfe change allow using ids only peek from Normal Code Segment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 599
diff changeset
133 if (msg.compressed){
0564f38e9bfe change allow using ids only peek from Normal Code Segment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 599
diff changeset
134 compressedlmanager.getDataSegmentKey(msg.key).runCommand(cmd);
0564f38e9bfe change allow using ids only peek from Normal Code Segment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 599
diff changeset
135 } else {
0564f38e9bfe change allow using ids only peek from Normal Code Segment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 599
diff changeset
136 lmanager.getDataSegmentKey(msg.key).runCommand(cmd);
0564f38e9bfe change allow using ids only peek from Normal Code Segment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 599
diff changeset
137 }
0564f38e9bfe change allow using ids only peek from Normal Code Segment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 599
diff changeset
138 }
0564f38e9bfe change allow using ids only peek from Normal Code Segment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 599
diff changeset
139 }
0564f38e9bfe change allow using ids only peek from Normal Code Segment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 599
diff changeset
140
480
c06070403ed4 named IncomingTcp and OutboundTcp Thread
sugi
parents: 478
diff changeset
141 public void setReverseKey(String name) {
c06070403ed4 named IncomingTcp and OutboundTcp Thread
sugi
parents: 478
diff changeset
142 this.reverseKey = name;
c06070403ed4 named IncomingTcp and OutboundTcp Thread
sugi
parents: 478
diff changeset
143 setName(name+"-IncomingTcp");
c06070403ed4 named IncomingTcp and OutboundTcp Thread
sugi
parents: 478
diff changeset
144 }
345
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
145 }