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;