annotate src/alice/codesegment/InputDataSegment.java @ 39:3155337e754e

add logger
author kazz <kazz@cr.ie.u-ryukyu.ac.jp>
date Fri, 27 Jan 2012 16:57:26 +0900
parents 20c67f673224
children 73158dc54c59
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
32
2bfb796b0fa1 change method to create DataSegmentReceiver
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
5 import alice.datasegment.CommandType;
3
91057e15065f add DataSegment API and CodeSegment
one
parents:
diff changeset
6 import alice.datasegment.DataSegment;
33
20c67f673224 change name of DataSegmentReceiver
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents: 32
diff changeset
7 import alice.datasegment.Receiver;
3
91057e15065f add DataSegment API and CodeSegment
one
parents:
diff changeset
8 import alice.datasegment.DataSegmentValue;
91057e15065f add DataSegment API and CodeSegment
one
parents:
diff changeset
9
91057e15065f add DataSegment API and CodeSegment
one
parents:
diff changeset
10 public class InputDataSegment {
91057e15065f add DataSegment API and CodeSegment
one
parents:
diff changeset
11
91057e15065f add DataSegment API and CodeSegment
one
parents:
diff changeset
12 private CodeSegment cs;
19
e7867328a2fb change execute() API
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
13 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
14 private AtomicInteger keyCount = new AtomicInteger(0);
3
91057e15065f add DataSegment API and CodeSegment
one
parents:
diff changeset
15
91057e15065f add DataSegment API and CodeSegment
one
parents:
diff changeset
16 public InputDataSegment(CodeSegment cs) {
91057e15065f add DataSegment API and CodeSegment
one
parents:
diff changeset
17 this.cs = cs;
91057e15065f add DataSegment API and CodeSegment
one
parents:
diff changeset
18 }
91057e15065f add DataSegment API and CodeSegment
one
parents:
diff changeset
19
33
20c67f673224 change name of DataSegmentReceiver
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents: 32
diff changeset
20 public void peek(Receiver receiver, String managerKey, String key) {
18
72dd27d952b0 change InputDataSegment API
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
21 peek(receiver, managerKey, key, 0);
3
91057e15065f add DataSegment API and CodeSegment
one
parents:
diff changeset
22 }
91057e15065f add DataSegment API and CodeSegment
one
parents:
diff changeset
23
33
20c67f673224 change name of DataSegmentReceiver
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents: 32
diff changeset
24 public void peek(Receiver receiver, String managerKey, String key, int index) {
18
72dd27d952b0 change InputDataSegment API
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
25 DataSegment.get(managerKey).peek(receiver, key, index, cs);
3
91057e15065f add DataSegment API and CodeSegment
one
parents:
diff changeset
26 }
91057e15065f add DataSegment API and CodeSegment
one
parents:
diff changeset
27
33
20c67f673224 change name of DataSegmentReceiver
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents: 32
diff changeset
28 public void take(Receiver receiver, String managerKey, String key) {
18
72dd27d952b0 change InputDataSegment API
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
29 take(receiver, managerKey, key, 0);
3
91057e15065f add DataSegment API and CodeSegment
one
parents:
diff changeset
30 }
91057e15065f add DataSegment API and CodeSegment
one
parents:
diff changeset
31
33
20c67f673224 change name of DataSegmentReceiver
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents: 32
diff changeset
32 public void take(Receiver receiver, String managerKey, String key, int index) {
18
72dd27d952b0 change InputDataSegment API
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
33 DataSegment.get(managerKey).take(receiver, key, index, cs);
3
91057e15065f add DataSegment API and CodeSegment
one
parents:
diff changeset
34 }
7
352eb19d837d implements reply of LocalDataSegment
one
parents: 5
diff changeset
35
33
20c67f673224 change name of DataSegmentReceiver
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents: 32
diff changeset
36 public void reply(Receiver receiver, DataSegmentValue val) {
18
72dd27d952b0 change InputDataSegment API
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
37 receiver.index = val.index;
72dd27d952b0 change InputDataSegment API
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
38 receiver.val = val.val;
28
98ab26e09a98 Configuration Manager work and implements reverseKey
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents: 19
diff changeset
39 receiver.from = val.from;
19
e7867328a2fb change execute() API
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
40 receive();
e7867328a2fb change execute() API
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
41 }
e7867328a2fb change execute() API
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
42
e7867328a2fb change execute() API
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
43 public void regist() {
e7867328a2fb change execute() API
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
44 count.getAndIncrement();
e7867328a2fb change execute() API
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
45 keyCount.getAndIncrement();
9
22afbb2919f1 execute() api
one
parents: 8
diff changeset
46 }
22afbb2919f1 execute() api
one
parents: 8
diff changeset
47
19
e7867328a2fb change execute() API
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
48 public void setKey() {
e7867328a2fb change execute() API
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
49 if (keyCount.decrementAndGet() == 0) {
e7867328a2fb change execute() API
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
50 receive();
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 }
e7867328a2fb change execute() API
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
53
e7867328a2fb change execute() API
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
54 public void receive() {
8
78b415d019de Local DS and CS work! maybe...
one
parents: 7
diff changeset
55 if (count.decrementAndGet() == 0) {
78b415d019de Local DS and CS work! maybe...
one
parents: 7
diff changeset
56 try {
78b415d019de Local DS and CS work! maybe...
one
parents: 7
diff changeset
57 CodeSegmentManager.get().readyQueue.put(cs);
78b415d019de Local DS and CS work! maybe...
one
parents: 7
diff changeset
58 } catch (InterruptedException e) {
78b415d019de Local DS and CS work! maybe...
one
parents: 7
diff changeset
59 e.printStackTrace();
78b415d019de Local DS and CS work! maybe...
one
parents: 7
diff changeset
60 }
78b415d019de Local DS and CS work! maybe...
one
parents: 7
diff changeset
61 }
78b415d019de Local DS and CS work! maybe...
one
parents: 7
diff changeset
62 }
32
2bfb796b0fa1 change method to create DataSegmentReceiver
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
63
33
20c67f673224 change name of DataSegmentReceiver
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents: 32
diff changeset
64 public Receiver create(CommandType type) {
20c67f673224 change name of DataSegmentReceiver
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents: 32
diff changeset
65 return new Receiver(this, type);
32
2bfb796b0fa1 change method to create DataSegmentReceiver
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents: 28
diff changeset
66 }
18
72dd27d952b0 change InputDataSegment API
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
67
3
91057e15065f add DataSegment API and CodeSegment
one
parents:
diff changeset
68 }