annotate src/main/java/alice/codesegment/InputDataSegment.java @ 523:145c425db88d dispose

add CompressedLDSM
author Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
date Thu, 09 Apr 2015 18:36:26 +0900
parents 549cc29aca59
children 30a74eee59c7
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.codesegment;
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
2
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
3 import java.util.concurrent.atomic.AtomicInteger;
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
4
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
5 import alice.datasegment.Command;
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
6 import alice.datasegment.CommandType;
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
7 import alice.datasegment.DataSegment;
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
8 import alice.datasegment.Receiver;
455
b004f62b83e5 refactor (remove quick method from DataSegmentManager and use flag)
sugi
parents: 452
diff changeset
9 import alice.datasegment.SendOption;
345
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
10
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
11 /**
523
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 481
diff changeset
12 * RemoteかLocalかで分けて処理する。ここに圧縮DSMへ投げる処理を追加。
345
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
13 * InputDataSegment Manager
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
14 * keep tracking unbound/bound count
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
15 * @author kazz
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
16 *
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
17 */
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
18 public class InputDataSegment {
417
aadea6a59376 create MetaCodeSegment use reflection
sugi
parents: 345
diff changeset
19
aadea6a59376 create MetaCodeSegment use reflection
sugi
parents: 345
diff changeset
20 public CodeSegment cs;
aadea6a59376 create MetaCodeSegment use reflection
sugi
parents: 345
diff changeset
21 private AtomicInteger count = new AtomicInteger(1); // 1 for no input data segments
aadea6a59376 create MetaCodeSegment use reflection
sugi
parents: 345
diff changeset
22 private AtomicInteger keyCount = new AtomicInteger(0); // number of DataSegments
523
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 481
diff changeset
23
417
aadea6a59376 create MetaCodeSegment use reflection
sugi
parents: 345
diff changeset
24 public InputDataSegment(CodeSegment cs) {
aadea6a59376 create MetaCodeSegment use reflection
sugi
parents: 345
diff changeset
25 this.cs = cs;
aadea6a59376 create MetaCodeSegment use reflection
sugi
parents: 345
diff changeset
26 }
aadea6a59376 create MetaCodeSegment use reflection
sugi
parents: 345
diff changeset
27
aadea6a59376 create MetaCodeSegment use reflection
sugi
parents: 345
diff changeset
28 public void init(){
aadea6a59376 create MetaCodeSegment use reflection
sugi
parents: 345
diff changeset
29 count = new AtomicInteger(1);
aadea6a59376 create MetaCodeSegment use reflection
sugi
parents: 345
diff changeset
30 keyCount = new AtomicInteger(0);
aadea6a59376 create MetaCodeSegment use reflection
sugi
parents: 345
diff changeset
31 }
aadea6a59376 create MetaCodeSegment use reflection
sugi
parents: 345
diff changeset
32
523
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 481
diff changeset
33 public void quickPeek(Receiver receiver) {//SEDAで実行
481
549cc29aca59 change access type private
sugi
parents: 471
diff changeset
34 cs.register(receiver);
523
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 481
diff changeset
35
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 481
diff changeset
36 if (receiver.compressedFlag){
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 481
diff changeset
37 if (receiver.managerKey == null){//localの場合
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 481
diff changeset
38 DataSegment.getCompressedLocal().peek(receiver, cs, true);
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 481
diff changeset
39 } else {
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 481
diff changeset
40 if (DataSegment.contains(receiver.managerKey)) {//remoteの場合
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 481
diff changeset
41 DataSegment.get(receiver.managerKey).peek(receiver, cs, true);//remoteはあとで考える。DataSegment.connect
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 481
diff changeset
42 }
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 481
diff changeset
43 }
417
aadea6a59376 create MetaCodeSegment use reflection
sugi
parents: 345
diff changeset
44 } else {
523
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 481
diff changeset
45 if (receiver.managerKey == null){
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 481
diff changeset
46 DataSegment.getLocal().peek(receiver, cs, true);
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 481
diff changeset
47 } else {
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 481
diff changeset
48 if (DataSegment.contains(receiver.managerKey)) {
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 481
diff changeset
49 DataSegment.get(receiver.managerKey).peek(receiver, cs, true);
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 481
diff changeset
50 }
471
be0b61986ff7 checking having DataSegmentManger before get DataSegmentManager
sugi
parents: 458
diff changeset
51 }
455
b004f62b83e5 refactor (remove quick method from DataSegmentManager and use flag)
sugi
parents: 452
diff changeset
52 }
523
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 481
diff changeset
53
455
b004f62b83e5 refactor (remove quick method from DataSegmentManager and use flag)
sugi
parents: 452
diff changeset
54 }
b004f62b83e5 refactor (remove quick method from DataSegmentManager and use flag)
sugi
parents: 452
diff changeset
55
b004f62b83e5 refactor (remove quick method from DataSegmentManager and use flag)
sugi
parents: 452
diff changeset
56
b004f62b83e5 refactor (remove quick method from DataSegmentManager and use flag)
sugi
parents: 452
diff changeset
57 public void peek(Receiver receiver) {
481
549cc29aca59 change access type private
sugi
parents: 471
diff changeset
58 cs.register(receiver);
523
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 481
diff changeset
59
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 481
diff changeset
60 if (receiver.compressedFlag){
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 481
diff changeset
61 if (receiver.managerKey==null){
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 481
diff changeset
62 DataSegment.getCompressedLocal().peek(receiver, cs, false);
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 481
diff changeset
63 } else {
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 481
diff changeset
64 if (DataSegment.contains(receiver.managerKey)) {
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 481
diff changeset
65 DataSegment.get(receiver.managerKey).peek(receiver, cs, false);
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 481
diff changeset
66 }
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 481
diff changeset
67 }
455
b004f62b83e5 refactor (remove quick method from DataSegmentManager and use flag)
sugi
parents: 452
diff changeset
68 } else {
523
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 481
diff changeset
69 if (receiver.managerKey==null){
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 481
diff changeset
70 DataSegment.getLocal().peek(receiver, cs, false);
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 481
diff changeset
71 } else {
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 481
diff changeset
72 if (DataSegment.contains(receiver.managerKey)) {
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 481
diff changeset
73 DataSegment.get(receiver.managerKey).peek(receiver, cs, false);
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 481
diff changeset
74 }
471
be0b61986ff7 checking having DataSegmentManger before get DataSegmentManager
sugi
parents: 458
diff changeset
75 }
417
aadea6a59376 create MetaCodeSegment use reflection
sugi
parents: 345
diff changeset
76 }
523
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 481
diff changeset
77
417
aadea6a59376 create MetaCodeSegment use reflection
sugi
parents: 345
diff changeset
78 }
aadea6a59376 create MetaCodeSegment use reflection
sugi
parents: 345
diff changeset
79
aadea6a59376 create MetaCodeSegment use reflection
sugi
parents: 345
diff changeset
80 public void quickTake(Receiver receiver) {
481
549cc29aca59 change access type private
sugi
parents: 471
diff changeset
81 cs.register(receiver);
417
aadea6a59376 create MetaCodeSegment use reflection
sugi
parents: 345
diff changeset
82 if (receiver.managerKey==null){
523
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 481
diff changeset
83 DataSegment.getLocal().take(receiver, cs, true);
417
aadea6a59376 create MetaCodeSegment use reflection
sugi
parents: 345
diff changeset
84 } else {
471
be0b61986ff7 checking having DataSegmentManger before get DataSegmentManager
sugi
parents: 458
diff changeset
85 if (DataSegment.contains(receiver.managerKey)) {
523
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 481
diff changeset
86 DataSegment.get(receiver.managerKey).take(receiver, cs, true);
471
be0b61986ff7 checking having DataSegmentManger before get DataSegmentManager
sugi
parents: 458
diff changeset
87 }
417
aadea6a59376 create MetaCodeSegment use reflection
sugi
parents: 345
diff changeset
88 }
aadea6a59376 create MetaCodeSegment use reflection
sugi
parents: 345
diff changeset
89 }
aadea6a59376 create MetaCodeSegment use reflection
sugi
parents: 345
diff changeset
90
aadea6a59376 create MetaCodeSegment use reflection
sugi
parents: 345
diff changeset
91 public void take(Receiver receiver) {
481
549cc29aca59 change access type private
sugi
parents: 471
diff changeset
92 cs.register(receiver);
417
aadea6a59376 create MetaCodeSegment use reflection
sugi
parents: 345
diff changeset
93 if (receiver.managerKey==null){
523
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 481
diff changeset
94 DataSegment.getLocal().take(receiver, cs, false);
417
aadea6a59376 create MetaCodeSegment use reflection
sugi
parents: 345
diff changeset
95 } else {
471
be0b61986ff7 checking having DataSegmentManger before get DataSegmentManager
sugi
parents: 458
diff changeset
96 if (DataSegment.contains(receiver.managerKey)) {
523
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 481
diff changeset
97 DataSegment.get(receiver.managerKey).take(receiver, cs, false);
471
be0b61986ff7 checking having DataSegmentManger before get DataSegmentManager
sugi
parents: 458
diff changeset
98 }
417
aadea6a59376 create MetaCodeSegment use reflection
sugi
parents: 345
diff changeset
99 }
aadea6a59376 create MetaCodeSegment use reflection
sugi
parents: 345
diff changeset
100 }
345
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
101
417
aadea6a59376 create MetaCodeSegment use reflection
sugi
parents: 345
diff changeset
102 public void reply(Receiver receiver, Command reply) {
aadea6a59376 create MetaCodeSegment use reflection
sugi
parents: 345
diff changeset
103 receiver.index = reply.index;
471
be0b61986ff7 checking having DataSegmentManger before get DataSegmentManager
sugi
parents: 458
diff changeset
104 receiver.from = reply.reverseKey;
458
bcf6f4a6fcd0 need set Meta DataSegment PUT API
sugi
parents: 455
diff changeset
105 receiver.setData(reply.rData);
417
aadea6a59376 create MetaCodeSegment use reflection
sugi
parents: 345
diff changeset
106 receive();
aadea6a59376 create MetaCodeSegment use reflection
sugi
parents: 345
diff changeset
107 }
aadea6a59376 create MetaCodeSegment use reflection
sugi
parents: 345
diff changeset
108
aadea6a59376 create MetaCodeSegment use reflection
sugi
parents: 345
diff changeset
109 public void register() {
aadea6a59376 create MetaCodeSegment use reflection
sugi
parents: 345
diff changeset
110 count.getAndIncrement();
aadea6a59376 create MetaCodeSegment use reflection
sugi
parents: 345
diff changeset
111 keyCount.getAndIncrement();
aadea6a59376 create MetaCodeSegment use reflection
sugi
parents: 345
diff changeset
112 }
345
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
113
417
aadea6a59376 create MetaCodeSegment use reflection
sugi
parents: 345
diff changeset
114 public void setKey() {
aadea6a59376 create MetaCodeSegment use reflection
sugi
parents: 345
diff changeset
115 if (keyCount.decrementAndGet() == 0) {
aadea6a59376 create MetaCodeSegment use reflection
sugi
parents: 345
diff changeset
116 receive();
aadea6a59376 create MetaCodeSegment use reflection
sugi
parents: 345
diff changeset
117 }
aadea6a59376 create MetaCodeSegment use reflection
sugi
parents: 345
diff changeset
118 }
aadea6a59376 create MetaCodeSegment use reflection
sugi
parents: 345
diff changeset
119
aadea6a59376 create MetaCodeSegment use reflection
sugi
parents: 345
diff changeset
120 public void receive() {
aadea6a59376 create MetaCodeSegment use reflection
sugi
parents: 345
diff changeset
121 if (count.decrementAndGet() == 0) {
aadea6a59376 create MetaCodeSegment use reflection
sugi
parents: 345
diff changeset
122 CodeSegmentManager.submit(cs);
aadea6a59376 create MetaCodeSegment use reflection
sugi
parents: 345
diff changeset
123 }
aadea6a59376 create MetaCodeSegment use reflection
sugi
parents: 345
diff changeset
124 }
345
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
125
417
aadea6a59376 create MetaCodeSegment use reflection
sugi
parents: 345
diff changeset
126 /**
aadea6a59376 create MetaCodeSegment use reflection
sugi
parents: 345
diff changeset
127 * InputDataSegment factory
aadea6a59376 create MetaCodeSegment use reflection
sugi
parents: 345
diff changeset
128 * @param type PEEK or TAKE
471
be0b61986ff7 checking having DataSegmentManger before get DataSegmentManager
sugi
parents: 458
diff changeset
129 * @return Receiver of DataSegment reply
417
aadea6a59376 create MetaCodeSegment use reflection
sugi
parents: 345
diff changeset
130 */
aadea6a59376 create MetaCodeSegment use reflection
sugi
parents: 345
diff changeset
131 public Receiver create(CommandType type) {
aadea6a59376 create MetaCodeSegment use reflection
sugi
parents: 345
diff changeset
132 return new Receiver(this, type);
523
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 481
diff changeset
133 }//Receiverを作成
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 481
diff changeset
134 public Receiver create(CommandType type, boolean compressFlag) {//追加
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 481
diff changeset
135 return new Receiver(this, type, compressFlag);
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 481
diff changeset
136 }//Receiverを作成
417
aadea6a59376 create MetaCodeSegment use reflection
sugi
parents: 345
diff changeset
137
aadea6a59376 create MetaCodeSegment use reflection
sugi
parents: 345
diff changeset
138 public void recommand(Receiver receiver) {
aadea6a59376 create MetaCodeSegment use reflection
sugi
parents: 345
diff changeset
139 // TODO why only local?
aadea6a59376 create MetaCodeSegment use reflection
sugi
parents: 345
diff changeset
140 DataSegment.getLocal().recommand(receiver, cs);
aadea6a59376 create MetaCodeSegment use reflection
sugi
parents: 345
diff changeset
141 }
aadea6a59376 create MetaCodeSegment use reflection
sugi
parents: 345
diff changeset
142
aadea6a59376 create MetaCodeSegment use reflection
sugi
parents: 345
diff changeset
143 public void setCounter(int cnt){
aadea6a59376 create MetaCodeSegment use reflection
sugi
parents: 345
diff changeset
144 count.set(cnt);
aadea6a59376 create MetaCodeSegment use reflection
sugi
parents: 345
diff changeset
145 }
345
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
146 }