annotate src/main/java/alice/datasegment/ReceiveData.java @ 531:b6049fb123d8 dispose

resolve unzip, working TestRemoteAlice
author Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
date Sun, 03 May 2015 15:58:31 +0900
parents 4aeebea0c9b5
children 33f981dd91d2
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
452
f68d103498e0 refactor (InputDataSegment holder class changed)
sugi
parents:
diff changeset
1 package alice.datasegment;
f68d103498e0 refactor (InputDataSegment holder class changed)
sugi
parents:
diff changeset
2
525
30a74eee59c7 working TestRemoteAlice
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 523
diff changeset
3 import java.io.*;
523
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
4 import java.nio.ByteBuffer;
527
bfec2c3ff1b8 change unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 526
diff changeset
5 import java.util.LinkedList;
523
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
6 import java.util.zip.*;
464
8434ff6a4b27 use InflaterOutputStream
sugi
parents: 463
diff changeset
7
527
bfec2c3ff1b8 change unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 526
diff changeset
8 import org.msgpack.MessagePack;
452
f68d103498e0 refactor (InputDataSegment holder class changed)
sugi
parents:
diff changeset
9 import org.msgpack.type.Value;
f68d103498e0 refactor (InputDataSegment holder class changed)
sugi
parents:
diff changeset
10
526
928907206d21 remove CompressedRDSM & CompressedLDSM class
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 525
diff changeset
11
523
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
12 /**
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
13 * 送られてきたDSを一時的に取っておくクラス。inputでも使用。
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
14 */
452
f68d103498e0 refactor (InputDataSegment holder class changed)
sugi
parents:
diff changeset
15 public class ReceiveData {
527
bfec2c3ff1b8 change unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 526
diff changeset
16 private Object val;//for Object DS
bfec2c3ff1b8 change unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 526
diff changeset
17 private byte[] messagePack;//for byteArray(serialized) DS
bfec2c3ff1b8 change unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 526
diff changeset
18 private byte[] zMessagePack;//for byteArray(compressed) DS
530
4aeebea0c9b5 can't unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 529
diff changeset
19 private int dataSize;
523
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
20 private Class<?> clazz;
467
6e304a7a60e7 remove white space
sugi
parents: 464
diff changeset
21
523
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
22 public long time;//測定用
488
7ef0ebb40c9b add measurement data in protocol
sugi
parents: 467
diff changeset
23 public boolean setTime = false;
7ef0ebb40c9b add measurement data in protocol
sugi
parents: 467
diff changeset
24 public int depth = 1;
7ef0ebb40c9b add measurement data in protocol
sugi
parents: 467
diff changeset
25
528
6ebddfac7ff6 delete RecieveData.setCompressFlag
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents: 527
diff changeset
26 private static final MessagePack packer = new MessagePack();
527
bfec2c3ff1b8 change unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 526
diff changeset
27
523
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
28 /**
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
29 * コンストラクタ。Object型のDSと圧縮のメタ情報を受け取る。
525
30a74eee59c7 working TestRemoteAlice
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 523
diff changeset
30 * put/update/reply用?
523
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
31 * @param obj DS本体(Object)
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
32 */
525
30a74eee59c7 working TestRemoteAlice
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 523
diff changeset
33 public ReceiveData(Object obj) {
526
928907206d21 remove CompressedRDSM & CompressedLDSM class
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 525
diff changeset
34 clazz = obj.getClass();
457
41d80f5e1fb2 add flag
sugi
parents: 452
diff changeset
35 val = obj;
452
f68d103498e0 refactor (InputDataSegment holder class changed)
sugi
parents:
diff changeset
36 }
463
f1293bbad9ac reuse inflater instance
sugi
parents: 461
diff changeset
37
523
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
38 /**
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
39 * コンストラクタ。byteArray型のDSと圧縮のメタ情報を受け取り、byteArrayフラグを立てる。
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
40 *
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
41 * @param messagePack DS本体(byteArray)
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
42 */
530
4aeebea0c9b5 can't unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 529
diff changeset
43 public ReceiveData(byte[] messagePack, boolean compressed, int datasize) {
4aeebea0c9b5 can't unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 529
diff changeset
44 this.dataSize = datasize;
528
6ebddfac7ff6 delete RecieveData.setCompressFlag
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents: 527
diff changeset
45 if (compressed){
523
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
46 this.zMessagePack = messagePack;
452
f68d103498e0 refactor (InputDataSegment holder class changed)
sugi
parents:
diff changeset
47 } else {
523
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
48 this.messagePack = messagePack;
452
f68d103498e0 refactor (InputDataSegment holder class changed)
sugi
parents:
diff changeset
49 }
523
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
50 }
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
51
525
30a74eee59c7 working TestRemoteAlice
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 523
diff changeset
52 public boolean isByteArray(){
30a74eee59c7 working TestRemoteAlice
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 523
diff changeset
53 return messagePack != null | zMessagePack != null;
452
f68d103498e0 refactor (InputDataSegment holder class changed)
sugi
parents:
diff changeset
54 }
463
f1293bbad9ac reuse inflater instance
sugi
parents: 461
diff changeset
55
525
30a74eee59c7 working TestRemoteAlice
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 523
diff changeset
56 public boolean compressed(){
523
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
57 return zMessagePack != null;
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
58 }
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
59
525
30a74eee59c7 working TestRemoteAlice
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 523
diff changeset
60 public boolean serialized(){
526
928907206d21 remove CompressedRDSM & CompressedLDSM class
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 525
diff changeset
61 return val == null;
523
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
62 }
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
63
527
bfec2c3ff1b8 change unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 526
diff changeset
64 public Object getObj(){
523
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
65 return asClass(Object.class);
452
f68d103498e0 refactor (InputDataSegment holder class changed)
sugi
parents:
diff changeset
66 }
463
f1293bbad9ac reuse inflater instance
sugi
parents: 461
diff changeset
67
527
bfec2c3ff1b8 change unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 526
diff changeset
68 public String asString(){
523
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
69 return asClass(String.class);
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
70 }
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
71
528
6ebddfac7ff6 delete RecieveData.setCompressFlag
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents: 527
diff changeset
72 public int asInteger() {
523
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
73 return asClass(Integer.class);
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
74 }
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
75
528
6ebddfac7ff6 delete RecieveData.setCompressFlag
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents: 527
diff changeset
76 public Float asFloat() {
523
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
77 return asClass(Float.class);
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
78 }
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
79
527
bfec2c3ff1b8 change unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 526
diff changeset
80 public Value getVal(){///get DS as Value type
bfec2c3ff1b8 change unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 526
diff changeset
81 if (val == null){///val != null
452
f68d103498e0 refactor (InputDataSegment holder class changed)
sugi
parents:
diff changeset
82 return asClass(Value.class);
527
bfec2c3ff1b8 change unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 526
diff changeset
83 } else {
452
f68d103498e0 refactor (InputDataSegment holder class changed)
sugi
parents:
diff changeset
84 try {
528
6ebddfac7ff6 delete RecieveData.setCompressFlag
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents: 527
diff changeset
85 return packer.unconvert(val);///convert to Value type by MassagePack
452
f68d103498e0 refactor (InputDataSegment holder class changed)
sugi
parents:
diff changeset
86 } catch (IOException e) {
f68d103498e0 refactor (InputDataSegment holder class changed)
sugi
parents:
diff changeset
87 e.printStackTrace();
f68d103498e0 refactor (InputDataSegment holder class changed)
sugi
parents:
diff changeset
88 }
f68d103498e0 refactor (InputDataSegment holder class changed)
sugi
parents:
diff changeset
89 return null;
f68d103498e0 refactor (InputDataSegment holder class changed)
sugi
parents:
diff changeset
90 }
f68d103498e0 refactor (InputDataSegment holder class changed)
sugi
parents:
diff changeset
91 }
463
f1293bbad9ac reuse inflater instance
sugi
parents: 461
diff changeset
92
523
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
93 /**
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
94 * DSを任意の型で取得するメソッド。
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
95 * DSがbyteArrayでなければ指定された型に変換して返す。
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
96 * DSがbyteArrayなら解凍状態にして指定された型に変換して返す。
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
97 *
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
98 * @param clazz
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
99 * @param <T>
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
100 * @return
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
101 */
527
bfec2c3ff1b8 change unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 526
diff changeset
102 public <T> T asClass(Class<T> clazz) {///javasist
526
928907206d21 remove CompressedRDSM & CompressedLDSM class
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 525
diff changeset
103 System.out.println("in asClass val:" + val + ", MP:" + messagePack + ", zMP:" + zMessagePack);
928907206d21 remove CompressedRDSM & CompressedLDSM class
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 525
diff changeset
104
452
f68d103498e0 refactor (InputDataSegment holder class changed)
sugi
parents:
diff changeset
105 try {
523
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
106 if (val != null) {
452
f68d103498e0 refactor (InputDataSegment holder class changed)
sugi
parents:
diff changeset
107 return (T) val;
460
4e7514007ae1 bug fix asClass method.
sugi
parents: 457
diff changeset
108 }
523
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
109
528
6ebddfac7ff6 delete RecieveData.setCompressFlag
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents: 527
diff changeset
110 if (zMessagePack != null && messagePack == null) {
530
4aeebea0c9b5 can't unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 529
diff changeset
111 messagePack = unzip(zMessagePack, dataSize);///ToDo:read header and set length
452
f68d103498e0 refactor (InputDataSegment holder class changed)
sugi
parents:
diff changeset
112 }
463
f1293bbad9ac reuse inflater instance
sugi
parents: 461
diff changeset
113
529
cb7c31848d16 add CompressedDSMs
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 528
diff changeset
114 return packer.read(messagePack, clazz);
523
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
115
527
bfec2c3ff1b8 change unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 526
diff changeset
116 } catch (IOException e) {// | DataFormatException e
452
f68d103498e0 refactor (InputDataSegment holder class changed)
sugi
parents:
diff changeset
117 e.printStackTrace();
460
4e7514007ae1 bug fix asClass method.
sugi
parents: 457
diff changeset
118 return null;
452
f68d103498e0 refactor (InputDataSegment holder class changed)
sugi
parents:
diff changeset
119 }
f68d103498e0 refactor (InputDataSegment holder class changed)
sugi
parents:
diff changeset
120 }
463
f1293bbad9ac reuse inflater instance
sugi
parents: 461
diff changeset
121
530
4aeebea0c9b5 can't unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 529
diff changeset
122 public byte[] getMessagePack(){
4aeebea0c9b5 can't unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 529
diff changeset
123 if (messagePack != null){
4aeebea0c9b5 can't unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 529
diff changeset
124 return messagePack;
4aeebea0c9b5 can't unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 529
diff changeset
125 } else {
4aeebea0c9b5 can't unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 529
diff changeset
126 try {
4aeebea0c9b5 can't unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 529
diff changeset
127 messagePack = packer.write(val);
4aeebea0c9b5 can't unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 529
diff changeset
128 setDataSize(messagePack.length);
4aeebea0c9b5 can't unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 529
diff changeset
129 } catch (IOException e) {
4aeebea0c9b5 can't unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 529
diff changeset
130 e.printStackTrace();
4aeebea0c9b5 can't unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 529
diff changeset
131 }
526
928907206d21 remove CompressedRDSM & CompressedLDSM class
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 525
diff changeset
132
530
4aeebea0c9b5 can't unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 529
diff changeset
133 return messagePack;
4aeebea0c9b5 can't unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 529
diff changeset
134 }
4aeebea0c9b5 can't unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 529
diff changeset
135 }
4aeebea0c9b5 can't unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 529
diff changeset
136
4aeebea0c9b5 can't unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 529
diff changeset
137 public byte[] getZMessagePack(){
4aeebea0c9b5 can't unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 529
diff changeset
138 if (zMessagePack != null){
4aeebea0c9b5 can't unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 529
diff changeset
139 System.out.println("have zMessagePack");
4aeebea0c9b5 can't unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 529
diff changeset
140 return zMessagePack;
4aeebea0c9b5 can't unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 529
diff changeset
141 } else {
4aeebea0c9b5 can't unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 529
diff changeset
142 try {
4aeebea0c9b5 can't unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 529
diff changeset
143 zip();
4aeebea0c9b5 can't unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 529
diff changeset
144
4aeebea0c9b5 can't unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 529
diff changeset
145 } catch (IOException e) {
4aeebea0c9b5 can't unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 529
diff changeset
146 e.printStackTrace();
4aeebea0c9b5 can't unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 529
diff changeset
147 }
4aeebea0c9b5 can't unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 529
diff changeset
148
4aeebea0c9b5 can't unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 529
diff changeset
149 return zMessagePack;
4aeebea0c9b5 can't unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 529
diff changeset
150 }
4aeebea0c9b5 can't unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 529
diff changeset
151 }
4aeebea0c9b5 can't unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 529
diff changeset
152
4aeebea0c9b5 can't unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 529
diff changeset
153 public void zip() throws IOException {
4aeebea0c9b5 can't unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 529
diff changeset
154 System.out.println("in zip");
529
cb7c31848d16 add CompressedDSMs
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 528
diff changeset
155 LinkedList<ByteBuffer> inputs = new LinkedList<ByteBuffer>();
cb7c31848d16 add CompressedDSMs
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 528
diff changeset
156 int inputIndex = 0;
cb7c31848d16 add CompressedDSMs
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 528
diff changeset
157 LinkedList<ByteBuffer> outputs = new LinkedList<ByteBuffer>();
cb7c31848d16 add CompressedDSMs
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 528
diff changeset
158 Deflater deflater = new Deflater();
527
bfec2c3ff1b8 change unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 526
diff changeset
159
530
4aeebea0c9b5 can't unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 529
diff changeset
160 inputs.add(ByteBuffer.wrap(getMessagePack()));
527
bfec2c3ff1b8 change unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 526
diff changeset
161 int len = 0;
529
cb7c31848d16 add CompressedDSMs
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 528
diff changeset
162 int INFLATE_BUFSIZE = 1024 * 100;//ToDo:fix
527
bfec2c3ff1b8 change unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 526
diff changeset
163 ByteBuffer c1 = allocate(INFLATE_BUFSIZE);//for output
bfec2c3ff1b8 change unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 526
diff changeset
164
bfec2c3ff1b8 change unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 526
diff changeset
165 while (inputIndex < inputs.size()) {
bfec2c3ff1b8 change unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 526
diff changeset
166 ByteBuffer b1 = inputs.get(inputIndex++);
bfec2c3ff1b8 change unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 526
diff changeset
167 deflater.setInput(b1.array(), b1.position(), b1.remaining());
529
cb7c31848d16 add CompressedDSMs
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 528
diff changeset
168
527
bfec2c3ff1b8 change unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 526
diff changeset
169 if (inputIndex == inputs.size()){
bfec2c3ff1b8 change unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 526
diff changeset
170 deflater.finish();
bfec2c3ff1b8 change unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 526
diff changeset
171 }
bfec2c3ff1b8 change unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 526
diff changeset
172
bfec2c3ff1b8 change unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 526
diff changeset
173 int len1 = 0;
bfec2c3ff1b8 change unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 526
diff changeset
174 do {
530
4aeebea0c9b5 can't unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 529
diff changeset
175 len1 = deflater.deflate(c1.array(), c1.position(), c1.remaining());
527
bfec2c3ff1b8 change unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 526
diff changeset
176 if (len1 > 0) {
bfec2c3ff1b8 change unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 526
diff changeset
177 len += len1;
bfec2c3ff1b8 change unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 526
diff changeset
178 c1.position(c1.position() + len1);
bfec2c3ff1b8 change unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 526
diff changeset
179 if (c1.remaining() == 0) {
bfec2c3ff1b8 change unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 526
diff changeset
180 c1.flip();
bfec2c3ff1b8 change unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 526
diff changeset
181 outputs.addLast(c1);
bfec2c3ff1b8 change unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 526
diff changeset
182 c1 = allocate(INFLATE_BUFSIZE);
bfec2c3ff1b8 change unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 526
diff changeset
183 }
bfec2c3ff1b8 change unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 526
diff changeset
184 }
530
4aeebea0c9b5 can't unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 529
diff changeset
185 } while (len1 > 0 || !deflater.needsInput());
527
bfec2c3ff1b8 change unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 526
diff changeset
186 }
bfec2c3ff1b8 change unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 526
diff changeset
187 if (c1.position() != 0) {
bfec2c3ff1b8 change unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 526
diff changeset
188 c1.flip();
bfec2c3ff1b8 change unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 526
diff changeset
189 outputs.addLast(c1);
bfec2c3ff1b8 change unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 526
diff changeset
190 }
528
6ebddfac7ff6 delete RecieveData.setCompressFlag
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents: 527
diff changeset
191
527
bfec2c3ff1b8 change unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 526
diff changeset
192 deflater.reset();
530
4aeebea0c9b5 can't unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 529
diff changeset
193
4aeebea0c9b5 can't unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 529
diff changeset
194 zMessagePack = new byte[len];
4aeebea0c9b5 can't unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 529
diff changeset
195 int tmp = 0;
4aeebea0c9b5 can't unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 529
diff changeset
196 for (int i = 0; i < outputs.size(); i++){
4aeebea0c9b5 can't unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 529
diff changeset
197 System.arraycopy(outputs.get(i).array(), 0, zMessagePack, 0 + tmp, outputs.get(i).limit());//limit? remaining?
4aeebea0c9b5 can't unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 529
diff changeset
198 tmp += outputs.get(i).limit();
4aeebea0c9b5 can't unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 529
diff changeset
199 }
4aeebea0c9b5 can't unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 529
diff changeset
200 System.out.print("in make zMessagePack2: ");
4aeebea0c9b5 can't unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 529
diff changeset
201 for (int i = 0; i < zMessagePack.length; i++) {
4aeebea0c9b5 can't unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 529
diff changeset
202 System.out.print(Integer.toHexString(zMessagePack[i] & 0xff));
4aeebea0c9b5 can't unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 529
diff changeset
203 }
4aeebea0c9b5 can't unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 529
diff changeset
204 System.out.print("\n");
527
bfec2c3ff1b8 change unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 526
diff changeset
205 }
bfec2c3ff1b8 change unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 526
diff changeset
206
529
cb7c31848d16 add CompressedDSMs
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 528
diff changeset
207 protected byte[] unzip(byte[] input, int zippedLength) {///read header & unzip
527
bfec2c3ff1b8 change unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 526
diff changeset
208 int length = input.length;
529
cb7c31848d16 add CompressedDSMs
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 528
diff changeset
209 Inflater inflater = new Inflater();
527
bfec2c3ff1b8 change unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 526
diff changeset
210
530
4aeebea0c9b5 can't unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 529
diff changeset
211 System.out.print("unziped input: ");
4aeebea0c9b5 can't unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 529
diff changeset
212 for (int i = 0; i < input.length; i++) {
4aeebea0c9b5 can't unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 529
diff changeset
213 System.out.print(Integer.toHexString(input[i] & 0xff));
4aeebea0c9b5 can't unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 529
diff changeset
214 }
4aeebea0c9b5 can't unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 529
diff changeset
215 System.out.print("\n");
4aeebea0c9b5 can't unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 529
diff changeset
216
527
bfec2c3ff1b8 change unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 526
diff changeset
217 byte [] output = new byte [zippedLength];///byteArray for unziped data
529
cb7c31848d16 add CompressedDSMs
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 528
diff changeset
218 inflater.setInput(input, 0, length);///set unzip data without header
527
bfec2c3ff1b8 change unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 526
diff changeset
219
bfec2c3ff1b8 change unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 526
diff changeset
220 try {
531
b6049fb123d8 resolve unzip, working TestRemoteAlice
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 530
diff changeset
221 inflater.inflate(output, 0, zippedLength);///unzip
527
bfec2c3ff1b8 change unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 526
diff changeset
222 } catch (DataFormatException e) {
bfec2c3ff1b8 change unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 526
diff changeset
223 e.printStackTrace();
bfec2c3ff1b8 change unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 526
diff changeset
224 }
bfec2c3ff1b8 change unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 526
diff changeset
225
bfec2c3ff1b8 change unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 526
diff changeset
226 inflater.reset();
bfec2c3ff1b8 change unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 526
diff changeset
227
bfec2c3ff1b8 change unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 526
diff changeset
228 System.out.print("unziped: ");
bfec2c3ff1b8 change unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 526
diff changeset
229 for (int i = 0; i < output.length; i++) {
bfec2c3ff1b8 change unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 526
diff changeset
230 System.out.print(Integer.toHexString(output[i] & 0xff));
bfec2c3ff1b8 change unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 526
diff changeset
231 }
bfec2c3ff1b8 change unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 526
diff changeset
232 System.out.print("\n");
bfec2c3ff1b8 change unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 526
diff changeset
233
bfec2c3ff1b8 change unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 526
diff changeset
234 return output;
bfec2c3ff1b8 change unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 526
diff changeset
235 }
bfec2c3ff1b8 change unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 526
diff changeset
236
bfec2c3ff1b8 change unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 526
diff changeset
237
bfec2c3ff1b8 change unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 526
diff changeset
238 public ByteBuffer allocate(int size)
bfec2c3ff1b8 change unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 526
diff changeset
239 {
bfec2c3ff1b8 change unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 526
diff changeset
240 ByteBuffer b = null;
bfec2c3ff1b8 change unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 526
diff changeset
241 while(true){
bfec2c3ff1b8 change unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 526
diff changeset
242 try {
bfec2c3ff1b8 change unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 526
diff changeset
243 b = ByteBuffer.allocate(size);
bfec2c3ff1b8 change unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 526
diff changeset
244 } catch (OutOfMemoryError e) {
bfec2c3ff1b8 change unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 526
diff changeset
245 b = null;
bfec2c3ff1b8 change unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 526
diff changeset
246 }
bfec2c3ff1b8 change unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 526
diff changeset
247 if (b!=null) {
bfec2c3ff1b8 change unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 526
diff changeset
248 break;
bfec2c3ff1b8 change unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 526
diff changeset
249 }
bfec2c3ff1b8 change unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 526
diff changeset
250 try {
bfec2c3ff1b8 change unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 526
diff changeset
251 wait();
bfec2c3ff1b8 change unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 526
diff changeset
252 } catch (InterruptedException e) {
bfec2c3ff1b8 change unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 526
diff changeset
253 }
bfec2c3ff1b8 change unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 526
diff changeset
254 }
bfec2c3ff1b8 change unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 526
diff changeset
255 return b;
bfec2c3ff1b8 change unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 526
diff changeset
256 }
bfec2c3ff1b8 change unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 526
diff changeset
257
bfec2c3ff1b8 change unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 526
diff changeset
258 public static int byteArrayToInt(byte[] b)
bfec2c3ff1b8 change unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 526
diff changeset
259 {
bfec2c3ff1b8 change unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 526
diff changeset
260 return b[3] & 0xFF |
bfec2c3ff1b8 change unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 526
diff changeset
261 (b[2] & 0xFF) << 8 |
bfec2c3ff1b8 change unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 526
diff changeset
262 (b[1] & 0xFF) << 16 |
bfec2c3ff1b8 change unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 526
diff changeset
263 (b[0] & 0xFF) << 24;
bfec2c3ff1b8 change unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 526
diff changeset
264 }
bfec2c3ff1b8 change unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 526
diff changeset
265
bfec2c3ff1b8 change unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 526
diff changeset
266 public static byte[] intToByteArray(int a)
bfec2c3ff1b8 change unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 526
diff changeset
267 {
bfec2c3ff1b8 change unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 526
diff changeset
268 return new byte[] {
bfec2c3ff1b8 change unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 526
diff changeset
269 (byte) ((a >> 24) & 0xFF),
bfec2c3ff1b8 change unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 526
diff changeset
270 (byte) ((a >> 16) & 0xFF),
bfec2c3ff1b8 change unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 526
diff changeset
271 (byte) ((a >> 8) & 0xFF),
bfec2c3ff1b8 change unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 526
diff changeset
272 (byte) (a & 0xFF)
bfec2c3ff1b8 change unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 526
diff changeset
273 };
bfec2c3ff1b8 change unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 526
diff changeset
274 }
bfec2c3ff1b8 change unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 526
diff changeset
275
530
4aeebea0c9b5 can't unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 529
diff changeset
276 public int getDataSize(){
4aeebea0c9b5 can't unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 529
diff changeset
277 return this.dataSize;
4aeebea0c9b5 can't unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 529
diff changeset
278 }
4aeebea0c9b5 can't unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 529
diff changeset
279
4aeebea0c9b5 can't unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 529
diff changeset
280 public void setDataSize(int datasize){
4aeebea0c9b5 can't unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 529
diff changeset
281 this.dataSize = datasize;
4aeebea0c9b5 can't unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 529
diff changeset
282 }
4aeebea0c9b5 can't unzip
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 529
diff changeset
283
452
f68d103498e0 refactor (InputDataSegment holder class changed)
sugi
parents:
diff changeset
284 }