Mercurial > hg > Database > Alice
annotate src/main/java/alice/datasegment/Receiver.java @ 651:058bff2123c8
fix getValue
author | suruga |
---|---|
date | Wed, 07 Feb 2018 19:02:56 +0900 |
parents | 33f300d0720a |
children | fb1ddc5696ca |
rev | line source |
---|---|
345 | 1 package alice.datasegment; |
2 | |
3 | |
4 import alice.codesegment.InputDataSegment; | |
636
33f300d0720a
running CodeSegment by Annotation without create Receiver :D
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
525
diff
changeset
|
5 import javassist.compiler.ast.ASTree; |
651 | 6 import org.msgpack.type.NilValue; |
7 import org.msgpack.type.Value; | |
8 import org.omg.CORBA.Object; | |
345 | 9 |
10 /** | |
523
145c425db88d
add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
458
diff
changeset
|
11 * idsコマンド(create, setKey)の処理をする。コマンドの定義はids/LDSM内にある。 |
345 | 12 * MessagePack implementation and DataSegment Receiver |
13 * @author kazz | |
14 * | |
15 */ | |
16 public class Receiver { | |
452 | 17 private ReceiveData data; |
417 | 18 public InputDataSegment ids; |
19 public int index; | |
20 public String from; | |
21 public CommandType type; | |
525
30a74eee59c7
working TestRemoteAlice
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
523
diff
changeset
|
22 public String managerKey;//DSMを一意に特定。localかremoteか、どのremoteからか。 |
417 | 23 public String key; |
523
145c425db88d
add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
458
diff
changeset
|
24 public boolean compressedFlag = false; |
417 | 25 |
26 public Receiver(InputDataSegment ids, CommandType type) { | |
27 this.ids = ids; | |
28 this.type = type; | |
29 ids.register(); | |
523
145c425db88d
add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
458
diff
changeset
|
30 } |
417 | 31 |
523
145c425db88d
add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
458
diff
changeset
|
32 public Receiver(InputDataSegment ids, CommandType type, boolean compressedFlag) { |
145c425db88d
add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
458
diff
changeset
|
33 this.ids = ids; |
145c425db88d
add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
458
diff
changeset
|
34 this.type = type; |
145c425db88d
add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
458
diff
changeset
|
35 ids.register(); |
145c425db88d
add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
458
diff
changeset
|
36 this.compressedFlag = compressedFlag; |
417 | 37 } |
38 | |
39 public void setQuickKey(String managerKey, String key){ | |
40 setQuickKey(managerKey, key, 0); | |
523
145c425db88d
add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
458
diff
changeset
|
41 }//? |
345 | 42 |
417 | 43 public void setQuickKey(String managerKey, String key, int index) { |
44 this.managerKey = managerKey; | |
45 this.key = key; | |
46 switch (type) { | |
47 case PEEK: | |
48 ids.quickPeek(this); | |
49 break; | |
50 case TAKE: | |
51 ids.quickTake(this); | |
52 break; | |
53 default: | |
54 break; | |
55 } | |
56 ids.setKey(); | |
57 } | |
58 | |
59 public void setKey(String managerKey, String key) { | |
60 setKey(managerKey, key, 0); | |
61 } | |
345 | 62 |
417 | 63 public void setKey(String managerKey, String key, int index) { |
64 this.managerKey = managerKey; | |
65 this.key = key; | |
66 this.index = index; | |
67 switch (type) { | |
68 case PEEK: | |
69 ids.peek(this); | |
70 break; | |
71 case TAKE: | |
72 ids.take(this); | |
73 break; | |
74 default: | |
75 break; | |
76 } | |
77 ids.setKey(); | |
78 } | |
79 | |
80 public void setKey(String key) { | |
81 setKey(key, 0); | |
82 } | |
345 | 83 |
417 | 84 public void setKey(String key, int index) { |
85 this.key = key; | |
86 this.index = index; | |
87 switch (type) { | |
88 case PEEK: | |
89 ids.peek(this); | |
90 break; | |
91 case TAKE: | |
92 ids.take(this); | |
93 break; | |
94 default: | |
95 break; | |
96 } | |
97 ids.setKey(); | |
98 } | |
345 | 99 |
523
145c425db88d
add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
458
diff
changeset
|
100 //以下各型でDS本体を受け取る |
452 | 101 public void setData(ReceiveData r) { |
417 | 102 data = r; |
103 } | |
345 | 104 |
417 | 105 public int asInteger() { |
106 return data.asInteger(); | |
107 } | |
108 | |
109 public String asString() { | |
110 return data.asString(); | |
111 } | |
345 | 112 |
417 | 113 public <T> T asClass(Class<T> clazz) { |
114 return data.asClass(clazz); | |
115 } | |
345 | 116 |
417 | 117 public Object getObj() { |
118 return data.getObj(); | |
119 } | |
120 | |
651 | 121 public Value getVal() { |
122 Value obj = data.getVal(); | |
123 if (obj.getClass() == NilValue.class) | |
124 return null; | |
125 else | |
126 return obj; | |
417 | 127 } |
128 | |
458 | 129 public ReceiveData getReceiveData() { |
130 return data; | |
131 } | |
525
30a74eee59c7
working TestRemoteAlice
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
523
diff
changeset
|
132 |
30a74eee59c7
working TestRemoteAlice
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
523
diff
changeset
|
133 public boolean isCompressed(){ |
30a74eee59c7
working TestRemoteAlice
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
523
diff
changeset
|
134 return data.compressed(); |
30a74eee59c7
working TestRemoteAlice
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
523
diff
changeset
|
135 } |
345 | 136 } |