Mercurial > hg > Database > Alice
annotate src/main/java/alice/codesegment/OutputDataSegment.java @ 538:8c17a9e66cc7 dispose work-compressedDSM
Compressed LDSM refactoring & flip refactoring
author | Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp> |
---|---|
date | Fri, 19 Jun 2015 14:06:10 +0900 |
parents | b3c9554ccb1b |
children | 0832af83583f ef3dc954eb43 3284428f525e |
rev | line source |
---|---|
345 | 1 package alice.codesegment; |
2 | |
386 | 3 import alice.datasegment.CommandType; |
345 | 4 import alice.datasegment.DataSegment; |
458 | 5 import alice.datasegment.ReceiveData; |
345 | 6 import alice.datasegment.Receiver; |
455
b004f62b83e5
refactor (remove quick method from DataSegmentManager and use flag)
sugi
parents:
419
diff
changeset
|
7 import alice.datasegment.SendOption; |
345 | 8 |
9 public class OutputDataSegment { | |
10 | |
419 | 11 /** |
12 * for local | |
13 */ | |
14 | |
523
145c425db88d
add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
521
diff
changeset
|
15 /** |
145c425db88d
add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
521
diff
changeset
|
16 * input→ds変更→outputのときコピーを防ぐ |
145c425db88d
add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
521
diff
changeset
|
17 */ |
419 | 18 public void flip(Receiver receiver) { |
525
30a74eee59c7
working TestRemoteAlice
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
523
diff
changeset
|
19 if (receiver.isCompressed()){ |
533
b3c9554ccb1b
change compressed API to set data specified DSM name
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
530
diff
changeset
|
20 DataSegment.getCompressedLocal().put(receiver.key, receiver.getReceiveData(), false); |
525
30a74eee59c7
working TestRemoteAlice
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
523
diff
changeset
|
21 } else { |
533
b3c9554ccb1b
change compressed API to set data specified DSM name
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
530
diff
changeset
|
22 DataSegment.getLocal().put(receiver.key, receiver.getReceiveData(), false); |
525
30a74eee59c7
working TestRemoteAlice
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
523
diff
changeset
|
23 } |
419 | 24 } |
345 | 25 |
538
8c17a9e66cc7
Compressed LDSM refactoring & flip refactoring
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
533
diff
changeset
|
26 public void flip(String managerKey, String key, Receiver receiver){ |
8c17a9e66cc7
Compressed LDSM refactoring & flip refactoring
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
533
diff
changeset
|
27 if (receiver.isCompressed()){ |
8c17a9e66cc7
Compressed LDSM refactoring & flip refactoring
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
533
diff
changeset
|
28 DataSegment.get("compressed" + managerKey).put(key, receiver.getReceiveData(), false); |
8c17a9e66cc7
Compressed LDSM refactoring & flip refactoring
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
533
diff
changeset
|
29 } else { |
8c17a9e66cc7
Compressed LDSM refactoring & flip refactoring
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
533
diff
changeset
|
30 DataSegment.get(managerKey).put(key, receiver.getReceiveData(), false); |
8c17a9e66cc7
Compressed LDSM refactoring & flip refactoring
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
533
diff
changeset
|
31 } |
8c17a9e66cc7
Compressed LDSM refactoring & flip refactoring
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
533
diff
changeset
|
32 |
8c17a9e66cc7
Compressed LDSM refactoring & flip refactoring
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
533
diff
changeset
|
33 } |
8c17a9e66cc7
Compressed LDSM refactoring & flip refactoring
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
533
diff
changeset
|
34 |
8c17a9e66cc7
Compressed LDSM refactoring & flip refactoring
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
533
diff
changeset
|
35 public void flip(Receiver receiver, CommandType type) { |
419 | 36 switch (type) { |
533
b3c9554ccb1b
change compressed API to set data specified DSM name
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
530
diff
changeset
|
37 case PUT: |
b3c9554ccb1b
change compressed API to set data specified DSM name
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
530
diff
changeset
|
38 if (receiver.isCompressed()){ |
b3c9554ccb1b
change compressed API to set data specified DSM name
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
530
diff
changeset
|
39 DataSegment.getCompressedLocal().put(receiver.key, receiver.getReceiveData(), false);//localなら全部false。 |
b3c9554ccb1b
change compressed API to set data specified DSM name
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
530
diff
changeset
|
40 } else { |
b3c9554ccb1b
change compressed API to set data specified DSM name
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
530
diff
changeset
|
41 DataSegment.getLocal().put(receiver.key, receiver.getReceiveData(), false); |
b3c9554ccb1b
change compressed API to set data specified DSM name
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
530
diff
changeset
|
42 } |
b3c9554ccb1b
change compressed API to set data specified DSM name
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
530
diff
changeset
|
43 break; |
b3c9554ccb1b
change compressed API to set data specified DSM name
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
530
diff
changeset
|
44 case UPDATE: |
b3c9554ccb1b
change compressed API to set data specified DSM name
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
530
diff
changeset
|
45 if (receiver.isCompressed()){ |
b3c9554ccb1b
change compressed API to set data specified DSM name
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
530
diff
changeset
|
46 DataSegment.getCompressedLocal().update(receiver.key, receiver.getReceiveData(), false); |
b3c9554ccb1b
change compressed API to set data specified DSM name
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
530
diff
changeset
|
47 } else { |
b3c9554ccb1b
change compressed API to set data specified DSM name
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
530
diff
changeset
|
48 DataSegment.getLocal().update(receiver.key, receiver.getReceiveData(), false); |
b3c9554ccb1b
change compressed API to set data specified DSM name
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
530
diff
changeset
|
49 } |
525
30a74eee59c7
working TestRemoteAlice
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
523
diff
changeset
|
50 |
533
b3c9554ccb1b
change compressed API to set data specified DSM name
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
530
diff
changeset
|
51 break; |
b3c9554ccb1b
change compressed API to set data specified DSM name
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
530
diff
changeset
|
52 default: |
b3c9554ccb1b
change compressed API to set data specified DSM name
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
530
diff
changeset
|
53 break; |
419 | 54 } |
55 } | |
345 | 56 |
459 | 57 public void put(String key, ReceiveData rData) { |
533
b3c9554ccb1b
change compressed API to set data specified DSM name
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
530
diff
changeset
|
58 DataSegment.getLocal().put(key, rData, false); |
459 | 59 } |
467 | 60 |
419 | 61 public void put(String key, Object val) { |
525
30a74eee59c7
working TestRemoteAlice
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
523
diff
changeset
|
62 ReceiveData rData = new ReceiveData(val); |
533
b3c9554ccb1b
change compressed API to set data specified DSM name
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
530
diff
changeset
|
63 DataSegment.getLocal().put(key, rData, false); |
419 | 64 } |
345 | 65 |
419 | 66 public void update(String key, Object val) { |
525
30a74eee59c7
working TestRemoteAlice
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
523
diff
changeset
|
67 ReceiveData rData = new ReceiveData(val); |
533
b3c9554ccb1b
change compressed API to set data specified DSM name
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
530
diff
changeset
|
68 DataSegment.getLocal().update(key, rData, false); |
419 | 69 } |
345 | 70 |
419 | 71 /** |
72 * for remote | |
73 */ | |
459 | 74 public void put(String managerKey, String key, ReceiveData rData) { |
533
b3c9554ccb1b
change compressed API to set data specified DSM name
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
530
diff
changeset
|
75 DataSegment.get(managerKey).put(key, rData, false); |
525
30a74eee59c7
working TestRemoteAlice
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
523
diff
changeset
|
76 } |
30a74eee59c7
working TestRemoteAlice
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
523
diff
changeset
|
77 |
533
b3c9554ccb1b
change compressed API to set data specified DSM name
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
530
diff
changeset
|
78 public void put(String managerKey, String key, Object val) {//追加 |
526
928907206d21
remove CompressedRDSM & CompressedLDSM class
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
525
diff
changeset
|
79 ReceiveData rData = new ReceiveData(val); |
533
b3c9554ccb1b
change compressed API to set data specified DSM name
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
530
diff
changeset
|
80 DataSegment.get(managerKey).put(key, rData, false); |
419 | 81 } |
467 | 82 |
459 | 83 public void quickPut(String managerKey, String key, ReceiveData rData) { |
533
b3c9554ccb1b
change compressed API to set data specified DSM name
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
530
diff
changeset
|
84 DataSegment.get(managerKey).put(key, rData, true); |
459 | 85 } |
345 | 86 |
419 | 87 public void quickPut(String managerKey, String key, Object val) { |
533
b3c9554ccb1b
change compressed API to set data specified DSM name
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
530
diff
changeset
|
88 ReceiveData rData = new ReceiveData(val); |
b3c9554ccb1b
change compressed API to set data specified DSM name
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
530
diff
changeset
|
89 DataSegment.get(managerKey).put(key, rData, true); |
419 | 90 } |
467 | 91 |
459 | 92 public void update(String managerKey, String key, ReceiveData rData) { |
533
b3c9554ccb1b
change compressed API to set data specified DSM name
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
530
diff
changeset
|
93 DataSegment.get(managerKey).update(key, rData, false); |
459 | 94 } |
345 | 95 |
419 | 96 public void update(String managerKey, String key, Object val) { |
527 | 97 ReceiveData rData = new ReceiveData(val); |
533
b3c9554ccb1b
change compressed API to set data specified DSM name
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
530
diff
changeset
|
98 DataSegment.get(managerKey).update(key, rData, false); |
419 | 99 } |
467 | 100 |
459 | 101 public void quickUpdate(String managerKey, String key, ReceiveData rData) { |
533
b3c9554ccb1b
change compressed API to set data specified DSM name
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
530
diff
changeset
|
102 DataSegment.get(managerKey).update(key, rData, true); |
459 | 103 } |
345 | 104 |
533
b3c9554ccb1b
change compressed API to set data specified DSM name
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
530
diff
changeset
|
105 public void quickUpdate(String managerKey, String key, Object val, boolean cFlag) { |
b3c9554ccb1b
change compressed API to set data specified DSM name
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
530
diff
changeset
|
106 ReceiveData rData = new ReceiveData(val); |
b3c9554ccb1b
change compressed API to set data specified DSM name
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
530
diff
changeset
|
107 DataSegment.get(managerKey).update(key, rData, true); |
419 | 108 } |
345 | 109 |
419 | 110 /** |
111 * kill the Alice process after send other messages. | |
467 | 112 * |
419 | 113 * @param managerKey |
114 */ | |
345 | 115 |
419 | 116 public void finish(String managerKey) { |
471
be0b61986ff7
checking having DataSegmentManger before get DataSegmentManager
sugi
parents:
467
diff
changeset
|
117 if (DataSegment.contains(managerKey)) |
be0b61986ff7
checking having DataSegmentManger before get DataSegmentManager
sugi
parents:
467
diff
changeset
|
118 DataSegment.get(managerKey).finish(); |
419 | 119 } |
345 | 120 |
419 | 121 /** |
122 * close socket for RemoteDataSegment after send other messages. | |
467 | 123 * |
419 | 124 * @param managerKey |
125 */ | |
345 | 126 |
419 | 127 public void close(String managerKey) { |
471
be0b61986ff7
checking having DataSegmentManger before get DataSegmentManager
sugi
parents:
467
diff
changeset
|
128 if (DataSegment.contains(managerKey)) |
be0b61986ff7
checking having DataSegmentManger before get DataSegmentManager
sugi
parents:
467
diff
changeset
|
129 DataSegment.get(managerKey).close(); |
419 | 130 } |
345 | 131 |
419 | 132 /** |
133 * "key" is not remote DataSegment's key. | |
467 | 134 * "Ping Response" return in this "key" |
135 * | |
419 | 136 * @param managerKey |
523
145c425db88d
add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
521
diff
changeset
|
137 * @param returnKey |
419 | 138 */ |
139 public void ping(String managerKey, String returnKey) { | |
471
be0b61986ff7
checking having DataSegmentManger before get DataSegmentManager
sugi
parents:
467
diff
changeset
|
140 if (DataSegment.contains(managerKey)) |
be0b61986ff7
checking having DataSegmentManger before get DataSegmentManager
sugi
parents:
467
diff
changeset
|
141 DataSegment.get(managerKey).ping(returnKey); |
419 | 142 } |
345 | 143 |
144 } |