Mercurial > hg > Database > Alice
annotate src/main/java/alice/daemon/IncomingTcpConnection.java @ 527:bfec2c3ff1b8 dispose
change unzip
author | Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp> |
---|---|
date | Thu, 30 Apr 2015 18:14:02 +0900 |
parents | 928907206d21 |
children | 6ebddfac7ff6 |
rev | line source |
---|---|
345 | 1 package alice.daemon; |
2 | |
3 import java.io.EOFException; | |
4 import java.io.IOException; | |
5 import java.nio.channels.ClosedChannelException; | |
6 | |
527 | 7 import alice.datasegment.*; |
345 | 8 import org.msgpack.unpacker.Unpacker; |
9 | |
10 import alice.codesegment.SingletonMessage; | |
11 import alice.topology.manager.keeparive.RespondData; | |
12 | |
13 public class IncomingTcpConnection extends Thread { | |
419 | 14 |
480 | 15 private Connection connection; |
16 protected DataSegmentManager manager; | |
17 protected String reverseKey; | |
419 | 18 private LocalDataSegmentManager lmanager = DataSegment.getLocal(); |
526
928907206d21
remove CompressedRDSM & CompressedLDSM class
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
525
diff
changeset
|
19 private LocalDataSegmentManager compressedlmanager = DataSegment.getCompressedLocal(); |
419 | 20 |
21 public IncomingTcpConnection(DataSegmentManager manager) { | |
22 this.manager = manager; | |
23 } | |
24 | |
25 public IncomingTcpConnection(Connection connection, DataSegmentManager manager, String reverseKey) { | |
26 this.manager = manager; | |
27 this.connection = connection; | |
28 this.reverseKey = reverseKey; | |
29 } | |
30 | |
31 public LocalDataSegmentManager getLocalDataSegmentManager(){ | |
32 return lmanager; | |
33 } | |
345 | 34 |
526
928907206d21
remove CompressedRDSM & CompressedLDSM class
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
525
diff
changeset
|
35 public LocalDataSegmentManager getCompressedLocalDataSegmentManager(){//追加 |
928907206d21
remove CompressedRDSM & CompressedLDSM class
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
525
diff
changeset
|
36 return compressedlmanager; |
928907206d21
remove CompressedRDSM & CompressedLDSM class
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
525
diff
changeset
|
37 } |
928907206d21
remove CompressedRDSM & CompressedLDSM class
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
525
diff
changeset
|
38 |
419 | 39 /** |
40 * pipeline thread for receiving | |
41 */ | |
42 public void run() { | |
43 Unpacker unpacker = null; | |
44 try { | |
445 | 45 unpacker = SingletonMessage.getInstance().createUnpacker(connection.socket.getInputStream()); |
419 | 46 } catch (IOException e) { |
47 e.printStackTrace(); | |
48 } | |
49 if (unpacker == null) { | |
50 return; | |
51 } | |
52 while (true) { | |
53 try { | |
447 | 54 Command cmd = null; |
458 | 55 ReceiveData rData = null; |
419 | 56 CommandMessage msg = unpacker.read(CommandMessage.class); |
57 CommandType type = CommandType.getCommandTypeFromId(msg.type); | |
58 switch (type) { | |
59 case UPDATE: | |
60 case PUT: | |
526
928907206d21
remove CompressedRDSM & CompressedLDSM class
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
525
diff
changeset
|
61 System.out.println("in TCP PUT"); |
525
30a74eee59c7
working TestRemoteAlice
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
524
diff
changeset
|
62 rData = new ReceiveData(unpacker.getSerializedByteArray(unpacker.readInt())); |
30a74eee59c7
working TestRemoteAlice
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
524
diff
changeset
|
63 rData.setCompressFlag(msg.compressed); |
526
928907206d21
remove CompressedRDSM & CompressedLDSM class
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
525
diff
changeset
|
64 |
488 | 65 if (msg.setTime) { |
66 rData.setTime = true; | |
67 rData.time = msg.time; | |
68 rData.depth = msg.depth; | |
69 } | |
526
928907206d21
remove CompressedRDSM & CompressedLDSM class
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
525
diff
changeset
|
70 |
458 | 71 cmd = new Command(type, null, null, rData, 0, 0, null, null, reverseKey); |
526
928907206d21
remove CompressedRDSM & CompressedLDSM class
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
525
diff
changeset
|
72 |
928907206d21
remove CompressedRDSM & CompressedLDSM class
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
525
diff
changeset
|
73 if (msg.compressed){ |
928907206d21
remove CompressedRDSM & CompressedLDSM class
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
525
diff
changeset
|
74 compressedlmanager.getDataSegmentKey(msg.key).runCommand(cmd); |
928907206d21
remove CompressedRDSM & CompressedLDSM class
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
525
diff
changeset
|
75 } else { |
928907206d21
remove CompressedRDSM & CompressedLDSM class
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
525
diff
changeset
|
76 lmanager.getDataSegmentKey(msg.key).runCommand(cmd); |
928907206d21
remove CompressedRDSM & CompressedLDSM class
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
525
diff
changeset
|
77 } |
928907206d21
remove CompressedRDSM & CompressedLDSM class
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
525
diff
changeset
|
78 |
419 | 79 break; |
80 case PEEK: | |
81 case TAKE: | |
526
928907206d21
remove CompressedRDSM & CompressedLDSM class
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
525
diff
changeset
|
82 System.out.println("in TCP TAKE"); |
446 | 83 cmd = new Command(type, null, null, null, msg.index, msg.seq, null, null, connection); |
449 | 84 cmd.setQuickFlag(msg.quickFlag); |
526
928907206d21
remove CompressedRDSM & CompressedLDSM class
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
525
diff
changeset
|
85 cmd.setCompressFlag(msg.compressed); |
928907206d21
remove CompressedRDSM & CompressedLDSM class
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
525
diff
changeset
|
86 |
928907206d21
remove CompressedRDSM & CompressedLDSM class
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
525
diff
changeset
|
87 if (msg.compressed) { |
928907206d21
remove CompressedRDSM & CompressedLDSM class
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
525
diff
changeset
|
88 compressedlmanager.getDataSegmentKey(msg.key).runCommand(cmd); |
928907206d21
remove CompressedRDSM & CompressedLDSM class
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
525
diff
changeset
|
89 } else { |
928907206d21
remove CompressedRDSM & CompressedLDSM class
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
525
diff
changeset
|
90 lmanager.getDataSegmentKey(msg.key).runCommand(cmd); |
928907206d21
remove CompressedRDSM & CompressedLDSM class
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
525
diff
changeset
|
91 } |
928907206d21
remove CompressedRDSM & CompressedLDSM class
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
525
diff
changeset
|
92 |
467 | 93 break; |
419 | 94 case REMOVE: |
446 | 95 cmd = new Command(type, null, null, null, 0, 0, null, null, ""); |
96 lmanager.getDataSegmentKey(msg.key).runCommand(cmd); | |
419 | 97 break; |
98 case REPLY: | |
526
928907206d21
remove CompressedRDSM & CompressedLDSM class
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
525
diff
changeset
|
99 System.out.println("in TCP REPLY"); |
446 | 100 cmd = manager.getAndRemoveCmd(msg.seq); |
526
928907206d21
remove CompressedRDSM & CompressedLDSM class
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
525
diff
changeset
|
101 |
527 | 102 rData = new ReceiveData(unpacker.getSerializedByteArray(unpacker.readInt()));//ここのコンストラクタでx |
525
30a74eee59c7
working TestRemoteAlice
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
524
diff
changeset
|
103 rData.setCompressFlag(msg.compressed); |
526
928907206d21
remove CompressedRDSM & CompressedLDSM class
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
525
diff
changeset
|
104 |
467 | 105 Command rCmd = new Command(type, null, null, rData, msg.index, msg.seq, null, null, ""); |
452 | 106 cmd.cs.ids.reply(cmd.receiver, rCmd); |
419 | 107 break; |
108 case PING: | |
471
be0b61986ff7
checking having DataSegmentManger before get DataSegmentManager
sugi
parents:
467
diff
changeset
|
109 if (DataSegment.contains(reverseKey)) |
be0b61986ff7
checking having DataSegmentManger before get DataSegmentManager
sugi
parents:
467
diff
changeset
|
110 DataSegment.get(reverseKey).response(msg.key); |
419 | 111 break; |
112 case RESPONSE: | |
525
30a74eee59c7
working TestRemoteAlice
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
524
diff
changeset
|
113 rData = new ReceiveData(new RespondData(reverseKey, System.currentTimeMillis())); |
527 | 114 DataSegment.getLocal().put(msg.key, rData, null); |
419 | 115 break; |
116 default: | |
117 break; | |
118 } | |
119 } catch (ClosedChannelException e) { | |
120 return; | |
121 } catch (EOFException e) { | |
122 return; | |
123 } catch (IOException e) { | |
478 | 124 return; |
419 | 125 } |
126 } | |
443 | 127 } |
480 | 128 |
129 public void setReverseKey(String name) { | |
130 this.reverseKey = name; | |
131 setName(name+"-IncomingTcp"); | |
132 } | |
345 | 133 } |