Mercurial > hg > Members > tatsuki > Alice
annotate src/alice/codesegment/InputDataSegment.java @ 198:f151dea22b2c working
add flip api
author | sugi |
---|---|
date | Tue, 19 Mar 2013 01:25:09 +0900 |
parents | a85ff8dc16c1 |
children | 15b68b65f8a4 |
rev | line source |
---|---|
3 | 1 package alice.codesegment; |
2 | |
3 import java.util.concurrent.atomic.AtomicInteger; | |
4 | |
198 | 5 import org.msgpack.type.Value; |
6 | |
32
2bfb796b0fa1
change method to create DataSegmentReceiver
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
28
diff
changeset
|
7 import alice.datasegment.CommandType; |
3 | 8 import alice.datasegment.DataSegment; |
44 | 9 import alice.datasegment.DataSegmentValue; |
33
20c67f673224
change name of DataSegmentReceiver
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
32
diff
changeset
|
10 import alice.datasegment.Receiver; |
3 | 11 |
57 | 12 /** |
13 * InputDataSegment Manager | |
14 * keep tracking unbound/bound count | |
15 * @author kazz | |
16 * | |
17 */ | |
3 | 18 public class InputDataSegment { |
19 | |
119 | 20 public CodeSegment cs; |
57 | 21 private AtomicInteger count = new AtomicInteger(1); // 1 for no input data segments |
22 private AtomicInteger keyCount = new AtomicInteger(0); // number of DataSegments | |
198 | 23 |
24 private DataSegmentValue dsv; | |
3 | 25 |
26 public InputDataSegment(CodeSegment cs) { | |
27 this.cs = cs; | |
28 } | |
29 | |
33
20c67f673224
change name of DataSegmentReceiver
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
32
diff
changeset
|
30 public void peek(Receiver receiver, String managerKey, String key) { |
18 | 31 peek(receiver, managerKey, key, 0); |
3 | 32 } |
33 | |
33
20c67f673224
change name of DataSegmentReceiver
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
32
diff
changeset
|
34 public void peek(Receiver receiver, String managerKey, String key, int index) { |
18 | 35 DataSegment.get(managerKey).peek(receiver, key, index, cs); |
3 | 36 } |
37 | |
65 | 38 public void peek(Receiver receiver, String key) { |
39 peek(receiver, key, 0); | |
40 } | |
41 | |
42 public void peek(Receiver receiver, String key, int index) { | |
43 DataSegment.getLocal().peek(receiver, key, index, cs); | |
44 } | |
45 | |
33
20c67f673224
change name of DataSegmentReceiver
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
32
diff
changeset
|
46 public void take(Receiver receiver, String managerKey, String key) { |
18 | 47 take(receiver, managerKey, key, 0); |
3 | 48 } |
49 | |
33
20c67f673224
change name of DataSegmentReceiver
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
32
diff
changeset
|
50 public void take(Receiver receiver, String managerKey, String key, int index) { |
18 | 51 DataSegment.get(managerKey).take(receiver, key, index, cs); |
3 | 52 } |
7 | 53 |
65 | 54 public void take(Receiver receiver, String key) { |
55 take(receiver, key, 0); | |
56 } | |
57 | |
58 public void take(Receiver receiver, String key, int index) { | |
59 DataSegment.getLocal().take(receiver, key, index, cs); | |
60 } | |
198 | 61 |
62 public void flip(Receiver receiver, String key){ | |
63 | |
64 } | |
65 | |
66 public void flip(Receiver receiver, Value val, Object obj){ | |
67 //int index = DataSegment.getLocal().getDataSegmentKey(receiver.key).getIndex(); | |
68 //dsv.setValue(index, val, obj); | |
69 DataSegment.getLocal().flip(receiver.key, val, obj, dsv); | |
70 | |
71 } | |
65 | 72 |
33
20c67f673224
change name of DataSegmentReceiver
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
32
diff
changeset
|
73 public void reply(Receiver receiver, DataSegmentValue val) { |
18 | 74 receiver.index = val.index; |
75 receiver.val = val.val; | |
28
98ab26e09a98
Configuration Manager work and implements reverseKey
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
19
diff
changeset
|
76 receiver.from = val.from; |
190 | 77 receiver.obj = val.obj; |
198 | 78 setDataSegmentValue(val); |
19 | 79 receive(); |
80 } | |
81 | |
82 public void regist() { | |
83 count.getAndIncrement(); | |
84 keyCount.getAndIncrement(); | |
9 | 85 } |
86 | |
19 | 87 public void setKey() { |
88 if (keyCount.decrementAndGet() == 0) { | |
89 receive(); | |
90 } | |
91 } | |
92 | |
93 public void receive() { | |
8 | 94 if (count.decrementAndGet() == 0) { |
57 | 95 CodeSegmentManager.submit(cs); |
8 | 96 } |
97 } | |
32
2bfb796b0fa1
change method to create DataSegmentReceiver
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
28
diff
changeset
|
98 |
57 | 99 /** |
100 * InputDataSegment factory | |
101 * @param type PEEK or TAKE | |
102 * @return Receiver of DataSegment reply | |
103 */ | |
33
20c67f673224
change name of DataSegmentReceiver
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
32
diff
changeset
|
104 public Receiver create(CommandType type) { |
20c67f673224
change name of DataSegmentReceiver
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
32
diff
changeset
|
105 return new Receiver(this, type); |
32
2bfb796b0fa1
change method to create DataSegmentReceiver
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
28
diff
changeset
|
106 } |
198 | 107 |
108 private void setDataSegmentValue(DataSegmentValue dsv){ | |
109 this.dsv = dsv; | |
110 } | |
18 | 111 |
3 | 112 } |