annotate src/main/java/alice/datasegment/ReceiveData.java @ 523:145c425db88d dispose

add CompressedLDSM
author Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
date Thu, 09 Apr 2015 18:36:26 +0900
parents 7ef0ebb40c9b
children 30a74eee59c7
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
464
8434ff6a4b27 use InflaterOutputStream
sugi
parents: 463
diff changeset
3 import java.io.ByteArrayOutputStream;
452
f68d103498e0 refactor (InputDataSegment holder class changed)
sugi
parents:
diff changeset
4 import java.io.IOException;
523
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
5 import java.nio.ByteBuffer;
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
523
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
8 import org.apache.log4j.Logger;
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 import alice.codesegment.SingletonMessage;
f68d103498e0 refactor (InputDataSegment holder class changed)
sugi
parents:
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 {
523
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
16 private Object val;//Object型のDS
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
17 private byte[] messagePack;//byteArray(serialized)のDS
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
18 private byte[] zMessagePack;//byteArray(compressed)のDS
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
19 private Class<?> clazz;
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
20 private Logger logger = Logger.getLogger("MessagePack");
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
523
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
26 /**
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
27 * コンストラクタ。Object型のDSと圧縮のメタ情報を受け取る。
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
28 * put/update用?
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
29 * @param obj DS本体(Object)
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
30 */
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
31 public ReceiveData(Object obj, boolean cFlag, boolean sFlag) {
457
41d80f5e1fb2 add flag
sugi
parents: 452
diff changeset
32 val = obj;
523
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
33 if (cFlag){
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
34 messagePack = (byte[])val;
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
35 ByteBuffer buf = null;
463
f1293bbad9ac reuse inflater instance
sugi
parents: 461
diff changeset
36
523
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
37 try {
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
38 zMessagePack = zip(messagePack);
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
39 buf = ByteBuffer.allocate(zMessagePack.length + 1);
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
40 buf.put((byte) 0xc1);
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
41 buf.put(zMessagePack);
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
42 zMessagePack = buf.array();
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
43 } catch (IOException e) {
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
44 e.printStackTrace();
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
45 }
452
f68d103498e0 refactor (InputDataSegment holder class changed)
sugi
parents:
diff changeset
46 }
f68d103498e0 refactor (InputDataSegment holder class changed)
sugi
parents:
diff changeset
47 }
463
f1293bbad9ac reuse inflater instance
sugi
parents: 461
diff changeset
48
523
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
49 /**
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
50 * コンストラクタ。byteArray型のDSと圧縮のメタ情報を受け取り、byteArrayフラグを立てる。
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
51 *
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
52 * @param messagePack DS本体(byteArray)
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
53 */
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
54 public ReceiveData(byte[] messagePack) {
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
55
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
56 if (messagePack[0] == 0xc1){
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
57 this.zMessagePack = messagePack;
452
f68d103498e0 refactor (InputDataSegment holder class changed)
sugi
parents:
diff changeset
58 } else {
523
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
59 this.messagePack = messagePack;
452
f68d103498e0 refactor (InputDataSegment holder class changed)
sugi
parents:
diff changeset
60 }
523
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
61
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
62 logger.debug(this.messagePack);
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
63 logger.debug(this.zMessagePack);
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
64 }
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
65
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
66
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
67 public boolean isByteArray(){//byteArrayフラグの状態を取得するメソッド
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
68 return messagePack != null;
452
f68d103498e0 refactor (InputDataSegment holder class changed)
sugi
parents:
diff changeset
69 }
463
f1293bbad9ac reuse inflater instance
sugi
parents: 461
diff changeset
70
523
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
71 public boolean compressed(){//compressedフラグの状態を取得するメソッド
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
72 return zMessagePack != null;
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
73 }
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 public boolean serialized(){//serializedフラグの状態を取得するメソッド
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
76 return val != null;
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
77 }
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 public Object getObj(){//Object型のDS本体を取得するメソッド。
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
80 return asClass(Object.class);
452
f68d103498e0 refactor (InputDataSegment holder class changed)
sugi
parents:
diff changeset
81 }
463
f1293bbad9ac reuse inflater instance
sugi
parents: 461
diff changeset
82
523
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
83 public String asString(){//String型としてDSを取得するメソッド。DSがシリアライズされていればStringクラスを返す。
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
84 return asClass(String.class);
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
85 }
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
86
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
87 public int asInteger(){//Int型としてDSを取得するメソッド。DSがシリアライズされていればIntクラスを返す。
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
88 return asClass(Integer.class);
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
89 }
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
90
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
91 public Float asFloat(){//Float型としてDSを取得するメソッド。DSがシリアライズされていればFloatクラスを返す。
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
92 return asClass(Float.class);
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
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
95 public Value getVal(){//Value型としてDSを取得するメソッド
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
96 if (val == null){//もとはval != null
452
f68d103498e0 refactor (InputDataSegment holder class changed)
sugi
parents:
diff changeset
97 return asClass(Value.class);
f68d103498e0 refactor (InputDataSegment holder class changed)
sugi
parents:
diff changeset
98 } else {
f68d103498e0 refactor (InputDataSegment holder class changed)
sugi
parents:
diff changeset
99 try {
523
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
100 return SingletonMessage.getInstance().unconvert(val);//MassagePackでvalue型に変換。できなければnullを返す。
452
f68d103498e0 refactor (InputDataSegment holder class changed)
sugi
parents:
diff changeset
101 } catch (IOException e) {
f68d103498e0 refactor (InputDataSegment holder class changed)
sugi
parents:
diff changeset
102 e.printStackTrace();
f68d103498e0 refactor (InputDataSegment holder class changed)
sugi
parents:
diff changeset
103 }
f68d103498e0 refactor (InputDataSegment holder class changed)
sugi
parents:
diff changeset
104 return null;
f68d103498e0 refactor (InputDataSegment holder class changed)
sugi
parents:
diff changeset
105 }
f68d103498e0 refactor (InputDataSegment holder class changed)
sugi
parents:
diff changeset
106 }
463
f1293bbad9ac reuse inflater instance
sugi
parents: 461
diff changeset
107
523
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
108 /**
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
109 * DSを任意の型で取得するメソッド。
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
110 * DSがbyteArrayでなければ指定された型に変換して返す。
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
111 * DSがbyteArrayなら解凍状態にして指定された型に変換して返す。
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
112 *
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
113 * @param clazz
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
114 * @param <T>
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
115 * @return
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
116 */
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
117 public <T> T asClass(Class<T> clazz) {//javasist
452
f68d103498e0 refactor (InputDataSegment holder class changed)
sugi
parents:
diff changeset
118 try {
523
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
119 if (val != null) {
452
f68d103498e0 refactor (InputDataSegment holder class changed)
sugi
parents:
diff changeset
120 return (T) val;
460
4e7514007ae1 bug fix asClass method.
sugi
parents: 457
diff changeset
121 }
523
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
122 byte[] b = messagePack;
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
123
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
124 if (zMessagePack != null && messagePack == null) {
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
125 logger.debug("zMessagePack = " + zMessagePack);
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
126 messagePack = unzip(zMessagePack);
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
127 b = messagePack;
452
f68d103498e0 refactor (InputDataSegment holder class changed)
sugi
parents:
diff changeset
128 }
463
f1293bbad9ac reuse inflater instance
sugi
parents: 461
diff changeset
129
523
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
130 logger.debug("MessagePack = " + messagePack);
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
131
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
132 if (val == null) {
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
133 this.clazz = clazz;
460
4e7514007ae1 bug fix asClass method.
sugi
parents: 457
diff changeset
134 return SingletonMessage.getInstance().read(b, clazz);
4e7514007ae1 bug fix asClass method.
sugi
parents: 457
diff changeset
135 } else {
523
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
136 return (T) val;
460
4e7514007ae1 bug fix asClass method.
sugi
parents: 457
diff changeset
137 }
523
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
138 } catch (Exception e) {
452
f68d103498e0 refactor (InputDataSegment holder class changed)
sugi
parents:
diff changeset
139 e.printStackTrace();
460
4e7514007ae1 bug fix asClass method.
sugi
parents: 457
diff changeset
140 return null;
452
f68d103498e0 refactor (InputDataSegment holder class changed)
sugi
parents:
diff changeset
141 }
f68d103498e0 refactor (InputDataSegment holder class changed)
sugi
parents:
diff changeset
142 }
463
f1293bbad9ac reuse inflater instance
sugi
parents: 461
diff changeset
143
523
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
144 /**
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
145 * java.util.zip.Inflater(zlib)を使ってbyteArray型のDSを解凍する。
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
146 *
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
147 * @param input 圧縮されたbyteArray型のDS
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
148 * @return 解凍したbyteArray型DS
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
149 * @throws IOException
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
150 * @throws DataFormatException
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
151 */
463
f1293bbad9ac reuse inflater instance
sugi
parents: 461
diff changeset
152 public byte[] unzip(byte[] input) throws IOException, DataFormatException{
464
8434ff6a4b27 use InflaterOutputStream
sugi
parents: 463
diff changeset
153 Inflater inflater = new Inflater();
8434ff6a4b27 use InflaterOutputStream
sugi
parents: 463
diff changeset
154 ByteArrayOutputStream os = new ByteArrayOutputStream();
8434ff6a4b27 use InflaterOutputStream
sugi
parents: 463
diff changeset
155 InflaterOutputStream ios = new InflaterOutputStream(os, inflater);
8434ff6a4b27 use InflaterOutputStream
sugi
parents: 463
diff changeset
156 ios.write(input);
467
6e304a7a60e7 remove white space
sugi
parents: 464
diff changeset
157 ios.finish();
464
8434ff6a4b27 use InflaterOutputStream
sugi
parents: 463
diff changeset
158 return os.toByteArray();
463
f1293bbad9ac reuse inflater instance
sugi
parents: 461
diff changeset
159 }
f1293bbad9ac reuse inflater instance
sugi
parents: 461
diff changeset
160
523
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
161 /**
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
162 * java.util.zip.Deflater(zlib)を使ってbyteArray型のDSを圧縮する。
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
163 *
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
164 * @param input 非圧縮状態のbyteArray型のDS
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
165 * @return 圧縮したbyteArray型DS
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
166 * @throws IOException
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
167 */
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
168 public byte[] zip(byte[] input) throws IOException{
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
169 Deflater deflater = new Deflater();
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
170 ByteArrayOutputStream os = new ByteArrayOutputStream();
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
171 DeflaterOutputStream dos = new DeflaterOutputStream(os, deflater);
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
172 dos.write(input);
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
173 dos.finish();
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
174 return os.toByteArray();
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
175 }
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 488
diff changeset
176
452
f68d103498e0 refactor (InputDataSegment holder class changed)
sugi
parents:
diff changeset
177 }