Mercurial > hg > Database > Alice
diff src/main/java/alice/daemon/IncomingUdpConnection.java @ 458:bcf6f4a6fcd0 dispose
need set Meta DataSegment PUT API
author | sugi |
---|---|
date | Mon, 03 Nov 2014 17:12:53 +0900 |
parents | b004f62b83e5 |
children | 6e304a7a60e7 |
line wrap: on
line diff
--- a/src/main/java/alice/daemon/IncomingUdpConnection.java Mon Nov 03 13:21:36 2014 +0900 +++ b/src/main/java/alice/daemon/IncomingUdpConnection.java Mon Nov 03 17:12:53 2014 +0900 @@ -12,6 +12,7 @@ import alice.datasegment.CommandType; import alice.datasegment.DataSegment; import alice.datasegment.DataSegmentManager; +import alice.datasegment.ReceiveData; import alice.topology.manager.keeparive.RespondData; public class IncomingUdpConnection extends IncomingTcpConnection { @@ -35,6 +36,7 @@ try { Command cmd = null; byte[] val = null; + ReceiveData rData = null; // Max data length is 65507 because of the max length of UDP payload ByteBuffer receive = ByteBuffer.allocate(65507); receiver.receive(receive); @@ -44,13 +46,11 @@ CommandType type = CommandType.getCommandTypeFromId(msg.type); switch (type) { case UPDATE: - case PUT: + case PUT: val = new byte[unpacker.readInt()]; receive.get(val); - cmd = new Command(type, null, null, val, 0, 0, null, null, reverseKey); - // these flags express DataSegment status - cmd.setCompressFlag(msg.compressed); - cmd.setSerializeFlag(msg.serialized); + rData = new ReceiveData(val, msg.compressed, msg.serialized); + cmd = new Command(type, null, null, rData, 0, 0, null, null, reverseKey); getLocalDataSegmentManager().getDataSegmentKey(msg.key).runCommand(cmd); break; case PEEK: @@ -67,17 +67,16 @@ cmd = manager.getAndRemoveCmd(msg.seq); val = new byte[unpacker.readInt()]; receive.get(val); - Command rCmd = new Command(type, null, null, val, msg.index, msg.seq, null, null, ""); - // these flags express DataSegment status - rCmd.setCompressFlag(msg.compressed); - rCmd.setSerializeFlag(msg.serialized); + rData = new ReceiveData(val, msg.compressed, msg.serialized); + Command rCmd = new Command(type, null, null, rData, msg.index, msg.seq, null, null, ""); cmd.cs.ids.reply(cmd.receiver, rCmd); break; case PING: DataSegment.get(reverseKey).response(msg.key); break; case RESPONSE: - DataSegment.getLocal().put(msg.key, new RespondData(reverseKey, System.currentTimeMillis()), null); + rData = new ReceiveData(new RespondData(reverseKey, System.currentTimeMillis()), false, false); + DataSegment.getLocal().put(msg.key, rData, null); break; default: break;