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.