Mercurial > hg > Database > Alice
view src/alice/datasegment/LocalDataSegmentManager.java @ 44:73158dc54c59
fix peek api
author | kazz <kazz@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Sat, 04 Feb 2012 01:34:57 +0900 |
parents | f9334781344a |
children | 17f88fd202ae |
line wrap: on
line source
package alice.datasegment; import org.apache.log4j.Logger; import org.msgpack.type.Value; import alice.codesegment.CodeSegment; import alice.datasegment.CommandType; public class LocalDataSegmentManager extends DataSegmentManager { public String reverseKey = "local"; private Logger logger = Logger.getLogger("local"); public LocalDataSegmentManager() { new Thread(replyThread, "LocalDataSegmentManager").start(); } public DataSegmentKey getDataSegmentKey(String key) { if (key == null) { return null; } DataSegmentKey newDataSegmentKey = new DataSegmentKey(key); DataSegmentKey dataSegmentKey = dataSegments.putIfAbsent(key, newDataSegmentKey); if (dataSegmentKey == null) { newDataSegmentKey.runKeyThread(); dataSegmentKey = newDataSegmentKey; } return dataSegmentKey; } @Override public void put(String key, Value val, CodeSegment cs) { DataSegmentKey dataSegmentKey = getDataSegmentKey(key); Command cmd = new Command(CommandType.PUT, null, key, val, 0, 0, replyQueue, cs, reverseKey); dataSegmentKey.addCommand(cmd); logger.debug(cmd.getCommandString()); } @Override public void update(String key, Value val, CodeSegment cs) { DataSegmentKey dataSegmentKey = getDataSegmentKey(key); Command cmd = new Command(CommandType.UPDATE, null, key, val, 0, 0, replyQueue, cs, reverseKey); dataSegmentKey.addCommand(cmd); logger.debug(cmd.getCommandString()); } @Override public void take(Receiver receiver, String key, int index, CodeSegment cs) { DataSegmentKey dataSegmentKey = getDataSegmentKey(key); int seq = this.seq.getAndIncrement(); Command cmd = new Command(CommandType.TAKE, receiver, key, null, index, seq, replyQueue, cs, null); seqHash.put(seq, cmd); dataSegmentKey.addCommand(cmd); logger.debug(cmd.getCommandString()); } @Override public void peek(Receiver receiver, String key, int index, CodeSegment cs) { DataSegmentKey dataSegmentKey = getDataSegmentKey(key); int seq = this.seq.getAndIncrement(); Command cmd = new Command(CommandType.PEEK, receiver, key, null, index, seq, replyQueue, cs, null); seqHash.put(seq, cmd); dataSegmentKey.addCommand(cmd); logger.debug(cmd.getCommandString()); } @Override public void remove(String key) { DataSegmentKey dataSegmentKey = getDataSegmentKey(key); Command cmd = new Command(CommandType.REMOVE, null, key, null, 0, 0, replyQueue, null, null); dataSegmentKey.addCommand(cmd); logger.debug(cmd.getCommandString()); } @Override public void finish() { System.exit(0); } @Override public void close() { } }