Mercurial > hg > Database > Alice
comparison src/main/java/alice/datasegment/Command.java @ 527:bfec2c3ff1b8 dispose
change unzip
author | Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp> |
---|---|
date | Thu, 30 Apr 2015 18:14:02 +0900 |
parents | 928907206d21 |
children | 6ebddfac7ff6 |
comparison
equal
deleted
inserted
replaced
526:928907206d21 | 527:bfec2c3ff1b8 |
---|---|
72 | 72 |
73 /** | 73 /** |
74 * @return serialized ByteBuffer | 74 * @return serialized ByteBuffer |
75 */ | 75 */ |
76 public ByteBuffer convert() {//byteArrayに変換 | 76 public ByteBuffer convert() {//byteArrayに変換 |
77 | |
77 ByteBuffer buf = null; | 78 ByteBuffer buf = null; |
78 MessagePack msg = SingletonMessage.getInstance(); | 79 switch (type) { |
79 try { | 80 /* |
80 byte[] header = null;//DSのメタデータ用byteArray | 81 * UPDATE, PUT, REPLY need send DataSegment to RemoteDataSegment |
81 byte[] data = null;//DS本体用byteArray | 82 * case UPDATE and PUT |
82 byte[] dataSize = null;//DSのサイズ | 83 * compress and serialize flag are selected by user, so if true, need convert. |
84 * case REPLY | |
85 * these flags represent DataSegment status. | |
86 * for example, serializeFlag is true. DataSegment had already converted, so no need convert. | |
87 */ | |
83 | 88 |
84 switch (type) { | 89 case UPDATE: |
85 /* | 90 System.out.println("update compressFlag:" + compressFlag); |
86 * UPDATE, PUT, REPLY need send DataSegment to RemoteDataSegment | 91 rData.setCompressFlag(compressFlag); |
87 * case UPDATE and PUT | 92 break; |
88 * compress and serialize flag are selected by user, so if true, need convert. | 93 case PUT: |
89 * case REPLY | 94 System.out.println("put compressFlag:" + compressFlag); |
90 * these flags represent DataSegment status. | 95 rData.setCompressFlag(compressFlag); |
91 * for example, serializeFlag is true. DataSegment had already converted, so no need convert. | 96 break; |
92 */ | 97 case REPLY://ReceiveDataからREPLYするDSを取得 |
93 case UPDATE: | 98 System.out.println("in REPLY"); |
94 case PUT: | 99 System.out.println("reply compressFlag:" + compressFlag); |
95 case REPLY://ReceiveDataからREPLYするDSを取得 | 100 buf = rData.setMPHeader(new CommandMessage(type.id, index, seq, key, false, rData.serialized(), rData.compressed()), type); |
96 System.out.println("in REPLY"); | 101 rData.setCompressFlag(compressFlag); |
97 | 102 |
98 if (!rData.serialized()) {//純粋なオブジェクトの場合シリアライズ | 103 break; |
99 data = msg.write(rData.getObj()); | 104 default://PEEK, TAKE, RemoveならCommandMessageとそのサイズのみセット |
100 } else { // rData is RAW ByteArray or already serialized | 105 ReceiveData rData2 = new ReceiveData("hoge"); |
101 data = rData.asByteArray(); | 106 System.out.println("default compressFlag:" + compressFlag); |
102 } | 107 buf = rData2.setMPHeader(new CommandMessage(type.id, index, seq, key, quickFlag, false, compressFlag), type); |
108 rData2.setCompressFlag(compressFlag); | |
103 | 109 |
104 CommandMessage cm = new CommandMessage(type.id, index, seq, key, false, rData.serialized(), rData.compressed()); | 110 break; |
105 if (rData.setTime) {//AliceVNCの計測用(消してもいい) | 111 } |
106 cm.setTime = true; | |
107 cm.time = rData.time; | |
108 cm.depth = rData.depth + 1; | |
109 } | |
110 | 112 |
111 //MessagePackでDSを作成(ヘッダー・データ本体のサイズ・データ本体) | |
112 header = msg.write(cm); | |
113 dataSize = msg.write(data.length); | |
114 buf = ByteBuffer.allocate(header.length+dataSize.length+data.length); | |
115 buf.put(header); | |
116 buf.put(dataSize); | |
117 buf.put(data); | |
118 | |
119 break; | |
120 default://PEEK, TAKE, RemoveならCommandMessageとそのサイズのみセット | |
121 header = msg.write(new CommandMessage(type.id, index, seq, key, quickFlag, false, compressFlag)); | |
122 buf = ByteBuffer.allocate(header.length); | |
123 buf.put(header); | |
124 break; | |
125 } | |
126 | |
127 buf.flip(); | |
128 } catch (IOException e) { | |
129 e.printStackTrace(); | |
130 }//ここに圧縮機能を入れる | |
131 return buf; | 113 return buf; |
132 } | 114 } |
133 | 115 |
134 /** | 116 /** |
135 * If this flag is true, command isn't send queue. | 117 * If this flag is true, command isn't send queue. |