Mercurial > hg > Database > Alice
view src/main/java/alice/datasegment/Command.java @ 528:6ebddfac7ff6 dispose
delete RecieveData.setCompressFlag
author | kazz <kazz@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Thu, 30 Apr 2015 20:52:21 +0900 |
parents | bfec2c3ff1b8 |
children | cb7c31848d16 |
line wrap: on
line source
package alice.datasegment; import java.io.IOException; import java.nio.ByteBuffer; import java.util.concurrent.BlockingQueue; import org.msgpack.MessagePack; import alice.codesegment.CodeSegment; import alice.codesegment.SingletonMessage; import alice.daemon.CommandMessage; import alice.daemon.Connection; /** * DSMで使われる各コマンドのセット(ReceiveDataからのDSの読み込み) */ public class Command { public CommandType type;//PEEK, PUTなどのコマンドタイプ public String key; public Receiver receiver; public ReceiveData rData; public int index;//使ってない。アクセス用のindex。負の遺産。 public int seq;//DSの待ち合わせを行っているCSを表すunique number。リモート用。対応コマンドを表す。 public Connection connection; // for remote public BlockingQueue<Command> replyQueue;//PEEK/TAKE必要な返り値? public CodeSegment cs; public String reverseKey;//どこからput/updateされたか private boolean quickFlag = false;//SEDAを挟まずに処理を行うかどうか。trueだとリモート private boolean compressFlag = false;//trueだったら圧縮する必要がある /** * for PEEK/TAKE */ public Command(CommandType cmdType, Receiver receiver, String key, ReceiveData rData, int index, int seq, BlockingQueue<Command> replyQueue, CodeSegment cs, String reverseKey) { this.type = cmdType; this.receiver = receiver; this.key = key; this.rData = rData; this.index = index; this.seq = seq; this.replyQueue = replyQueue; this.cs = cs; this.reverseKey = reverseKey; } /** * for PUT/UPDATE/REPLY/PING/RESPONSE */ public Command(CommandType cmdType, Receiver receiver, String key, ReceiveData rData, int index, int seq, CodeSegment cs, String reverseKey, Connection connection) { this.type = cmdType; this.receiver = receiver; this.key = key; this.rData = rData; this.index = index; this.seq = seq; this.connection = connection; this.cs = cs; this.reverseKey = reverseKey; } /** * String型でコマンドを取得するメソッド。たぶんログ表示用。 * @return */ public String getCommandString() { String csName = "null"; if (cs != null) { csName = cs.toString(); } return this.type + "\t" + key + "\t" + rData + "\tindex=" + index + "\tcs=" + csName; } /** * @return serialized ByteBuffer */ public ByteBuffer convert() {//byteArrayに変換 ByteBuffer buf = null; switch (type) { /* * UPDATE, PUT, REPLY need send DataSegment to RemoteDataSegment * case UPDATE and PUT * compress and serialize flag are selected by user, so if true, need convert. * case REPLY * these flags represent DataSegment status. * for example, serializeFlag is true. DataSegment had already converted, so no need convert. */ case UPDATE: System.out.println("update compressFlag:" + compressFlag); break; case PUT: System.out.println("put compressFlag:" + compressFlag); break; case REPLY://ReceiveDataからREPLYするDSを取得 System.out.println("in REPLY"); System.out.println("reply compressFlag:" + compressFlag + ", " + type.id+ ", " + index+ ", " + seq + ", " + key+ ", " + false+ ", " + rData.serialized()+ ", " + rData.compressed()); break; default://PEEK, TAKE, RemoveならCommandMessageとそのサイズのみセット ReceiveData rData2 = new ReceiveData("hoge"); System.out.println("default compressFlag:" + compressFlag); break; } return buf; } /** * If this flag is true, command isn't send queue. * command is executed right now. * * @param flag */ public void setQuickFlag(boolean flag){//SEDA処理の有無フラグのsetter quickFlag = flag; } public boolean getQuickFlag(){//SEDA処理の有無フラグのgetter return quickFlag; } /** * Before sending Remote DataSegment, DataSegment type is ByteArray. * If this flag true, ByteArray is compressed with ZRLEE(ZRIB) algorithm * * @param flag */ public void setCompressFlag(boolean flag){//圧縮フラグのsetter compressFlag = flag; } public boolean getCompressFlag(){//圧縮フラグのgetter return compressFlag; } }