annotate src/alice/codesegment/InputDataSegment.java @ 19:e7867328a2fb

change execute() API
author kazz <kazz@cr.ie.u-ryukyu.ac.jp>
date Sun, 15 Jan 2012 17:57:05 +0900
parents 72dd27d952b0
children 98ab26e09a98
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3
91057e15065f add DataSegment API and CodeSegment
one
parents:
diff changeset
1 package alice.codesegment;
91057e15065f add DataSegment API and CodeSegment
one
parents:
diff changeset
2
91057e15065f add DataSegment API and CodeSegment
one
parents:
diff changeset
3 import java.util.concurrent.atomic.AtomicInteger;
91057e15065f add DataSegment API and CodeSegment
one
parents:
diff changeset
4
91057e15065f add DataSegment API and CodeSegment
one
parents:
diff changeset
5 import alice.datasegment.DataSegment;
18
72dd27d952b0 change InputDataSegment API
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
6 import alice.datasegment.DataSegmentReceiver;
3
91057e15065f add DataSegment API and CodeSegment
one
parents:
diff changeset
7 import alice.datasegment.DataSegmentValue;
91057e15065f add DataSegment API and CodeSegment
one
parents:
diff changeset
8
91057e15065f add DataSegment API and CodeSegment
one
parents:
diff changeset
9 public class InputDataSegment {
91057e15065f add DataSegment API and CodeSegment
one
parents:
diff changeset
10
91057e15065f add DataSegment API and CodeSegment
one
parents:
diff changeset
11 private CodeSegment cs;
19
e7867328a2fb change execute() API
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
12 private AtomicInteger count = new AtomicInteger(1); // for no input data segments
e7867328a2fb change execute() API
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
13 private AtomicInteger keyCount = new AtomicInteger(0);
3
91057e15065f add DataSegment API and CodeSegment
one
parents:
diff changeset
14
91057e15065f add DataSegment API and CodeSegment
one
parents:
diff changeset
15 public InputDataSegment(CodeSegment cs) {
91057e15065f add DataSegment API and CodeSegment
one
parents:
diff changeset
16 this.cs = cs;
91057e15065f add DataSegment API and CodeSegment
one
parents:
diff changeset
17 }
91057e15065f add DataSegment API and CodeSegment
one
parents:
diff changeset
18
18
72dd27d952b0 change InputDataSegment API
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
19 public void peek(DataSegmentReceiver receiver, String managerKey, String key) {
72dd27d952b0 change InputDataSegment API
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
20 peek(receiver, managerKey, key, 0);
3
91057e15065f add DataSegment API and CodeSegment
one
parents:
diff changeset
21 }
91057e15065f add DataSegment API and CodeSegment
one
parents:
diff changeset
22
18
72dd27d952b0 change InputDataSegment API
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
23 public void peek(DataSegmentReceiver receiver, String managerKey, String key, int index) {
72dd27d952b0 change InputDataSegment API
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
24 DataSegment.get(managerKey).peek(receiver, key, index, cs);
3
91057e15065f add DataSegment API and CodeSegment
one
parents:
diff changeset
25 }
91057e15065f add DataSegment API and CodeSegment
one
parents:
diff changeset
26
18
72dd27d952b0 change InputDataSegment API
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
27 public void take(DataSegmentReceiver receiver, String managerKey, String key) {
72dd27d952b0 change InputDataSegment API
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
28 take(receiver, managerKey, key, 0);
3
91057e15065f add DataSegment API and CodeSegment
one
parents:
diff changeset
29 }
91057e15065f add DataSegment API and CodeSegment
one
parents:
diff changeset
30
18
72dd27d952b0 change InputDataSegment API
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
31 public void take(DataSegmentReceiver receiver, String managerKey, String key, int index) {
72dd27d952b0 change InputDataSegment API
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
32 DataSegment.get(managerKey).take(receiver, key, index, cs);
3
91057e15065f add DataSegment API and CodeSegment
one
parents:
diff changeset
33 }
7
352eb19d837d implements reply of LocalDataSegment
one
parents: 5
diff changeset
34
18
72dd27d952b0 change InputDataSegment API
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
35 public void reply(DataSegmentReceiver receiver, DataSegmentValue val) {
72dd27d952b0 change InputDataSegment API
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
36 receiver.index = val.index;
72dd27d952b0 change InputDataSegment API
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
37 receiver.val = val.val;
19
e7867328a2fb change execute() API
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
38 receive();
e7867328a2fb change execute() API
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
39 }
e7867328a2fb change execute() API
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
40
e7867328a2fb change execute() API
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
41 public void regist() {
e7867328a2fb change execute() API
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
42 count.getAndIncrement();
e7867328a2fb change execute() API
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
43 keyCount.getAndIncrement();
9
22afbb2919f1 execute() api
one
parents: 8
diff changeset
44 }
22afbb2919f1 execute() api
one
parents: 8
diff changeset
45
19
e7867328a2fb change execute() API
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
46 public void setKey() {
e7867328a2fb change execute() API
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
47 if (keyCount.decrementAndGet() == 0) {
e7867328a2fb change execute() API
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
48 receive();
e7867328a2fb change execute() API
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
49 }
e7867328a2fb change execute() API
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
50 }
e7867328a2fb change execute() API
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
51
e7867328a2fb change execute() API
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
52 public void receive() {
8
78b415d019de Local DS and CS work! maybe...
one
parents: 7
diff changeset
53 if (count.decrementAndGet() == 0) {
78b415d019de Local DS and CS work! maybe...
one
parents: 7
diff changeset
54 try {
78b415d019de Local DS and CS work! maybe...
one
parents: 7
diff changeset
55 CodeSegmentManager.get().readyQueue.put(cs);
78b415d019de Local DS and CS work! maybe...
one
parents: 7
diff changeset
56 } catch (InterruptedException e) {
78b415d019de Local DS and CS work! maybe...
one
parents: 7
diff changeset
57 e.printStackTrace();
78b415d019de Local DS and CS work! maybe...
one
parents: 7
diff changeset
58 }
78b415d019de Local DS and CS work! maybe...
one
parents: 7
diff changeset
59 }
78b415d019de Local DS and CS work! maybe...
one
parents: 7
diff changeset
60 }
18
72dd27d952b0 change InputDataSegment API
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
61
3
91057e15065f add DataSegment API and CodeSegment
one
parents:
diff changeset
62 }