# HG changeset patch # User one # Date 1328684853 -32400 # Node ID 7fa9ddb31f6407a3ec39052800d7ace2f3fcbd56 # Parent 17f88fd202ae8c213539610fc09d76357b85595e add comment diff -r 17f88fd202ae -r 7fa9ddb31f64 src/alice/codesegment/CodeSegmentManager.java --- a/src/alice/codesegment/CodeSegmentManager.java Wed Feb 08 14:31:16 2012 +0900 +++ b/src/alice/codesegment/CodeSegmentManager.java Wed Feb 08 16:07:33 2012 +0900 @@ -43,5 +43,13 @@ public static CodeSegmentManager get() { return instance; } + + public static void submit(CodeSegment cs) { + try { + CodeSegmentManager.get().readyQueue.put(cs); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } } diff -r 17f88fd202ae -r 7fa9ddb31f64 src/alice/codesegment/InputDataSegment.java --- a/src/alice/codesegment/InputDataSegment.java Wed Feb 08 14:31:16 2012 +0900 +++ b/src/alice/codesegment/InputDataSegment.java Wed Feb 08 16:07:33 2012 +0900 @@ -7,11 +7,17 @@ import alice.datasegment.DataSegmentValue; import alice.datasegment.Receiver; +/** + * InputDataSegment Manager + * keep tracking unbound/bound count + * @author kazz + * + */ public class InputDataSegment { private CodeSegment cs; - private AtomicInteger count = new AtomicInteger(1); // for no input data segments - private AtomicInteger keyCount = new AtomicInteger(0); + private AtomicInteger count = new AtomicInteger(1); // 1 for no input data segments + private AtomicInteger keyCount = new AtomicInteger(0); // number of DataSegments public InputDataSegment(CodeSegment cs) { this.cs = cs; @@ -53,14 +59,15 @@ public void receive() { if (count.decrementAndGet() == 0) { - try { - CodeSegmentManager.get().readyQueue.put(cs); - } catch (InterruptedException e) { - e.printStackTrace(); - } + CodeSegmentManager.submit(cs); } } + /** + * InputDataSegment factory + * @param type PEEK or TAKE + * @return Receiver of DataSegment reply + */ public Receiver create(CommandType type) { return new Receiver(this, type); } diff -r 17f88fd202ae -r 7fa9ddb31f64 src/alice/datasegment/CommandType.java --- a/src/alice/datasegment/CommandType.java Wed Feb 08 14:31:16 2012 +0900 +++ b/src/alice/datasegment/CommandType.java Wed Feb 08 16:07:33 2012 +0900 @@ -4,7 +4,7 @@ public enum CommandType { PUT, - UPDATE, + UPDATE, // remove a DataSegment value and put PEEK, TAKE, REMOVE, diff -r 17f88fd202ae -r 7fa9ddb31f64 src/alice/datasegment/DataSegmentKey.java --- a/src/alice/datasegment/DataSegmentKey.java Wed Feb 08 14:31:16 2012 +0900 +++ b/src/alice/datasegment/DataSegmentKey.java Wed Feb 08 16:07:33 2012 +0900 @@ -7,6 +7,11 @@ import alice.datasegment.Command; +/** + * Synchronized DataSegment for each DataSegment key + * @author kazz + * + */ public class DataSegmentKey { private String key; diff -r 17f88fd202ae -r 7fa9ddb31f64 src/alice/datasegment/LocalDataSegmentManager.java --- a/src/alice/datasegment/LocalDataSegmentManager.java Wed Feb 08 14:31:16 2012 +0900 +++ b/src/alice/datasegment/LocalDataSegmentManager.java Wed Feb 08 16:07:33 2012 +0900 @@ -38,7 +38,11 @@ dataSegmentKey.addCommand(cmd); logger.debug(cmd.getCommandString()); } - + + + /** + * Enqueue update command to the queue of each DataSegment key + */ @Override public void update(String key, Value val, CodeSegment cs) { DataSegmentKey dataSegmentKey = getDataSegmentKey(key); diff -r 17f88fd202ae -r 7fa9ddb31f64 src/alice/datasegment/Receiver.java --- a/src/alice/datasegment/Receiver.java Wed Feb 08 14:31:16 2012 +0900 +++ b/src/alice/datasegment/Receiver.java Wed Feb 08 16:07:33 2012 +0900 @@ -8,6 +8,11 @@ import alice.codesegment.InputDataSegment; +/** + * MessagePack implementation and DataSegment Receiver + * @author kazz + * + */ public class Receiver { public InputDataSegment ids; public int index; @@ -15,8 +20,8 @@ public String from; public CommandType type; - public String managerKey;// - public String key;// + public String managerKey; // for debugging + public String key; // for debugging public Receiver(InputDataSegment ids, CommandType type) { this.ids = ids; @@ -25,8 +30,8 @@ } public void setKey(String managerKey, String key) { - this.managerKey = managerKey;// - this.key = key;// + this.managerKey = managerKey; + this.key = key; setKey(managerKey, key, 0); } diff -r 17f88fd202ae -r 7fa9ddb31f64 src/alice/test/codesegment/local/StartCodeSegment.java --- a/src/alice/test/codesegment/local/StartCodeSegment.java Wed Feb 08 14:31:16 2012 +0900 +++ b/src/alice/test/codesegment/local/StartCodeSegment.java Wed Feb 08 16:07:33 2012 +0900 @@ -9,10 +9,12 @@ System.out.println("run StartCodeSegment"); TestCodeSegment cs = new TestCodeSegment(); - cs.arg1.setKey("local", "key1"); + cs.arg1.setKey("local", "key1"); // unbound datasegment key1 is created and connect to cs. + // cs is waiting for local.key1 System.out.println("create TestCodeSegment"); - ods.update("local", "key1", "String data"); - } + ods.update("local", "key1", "String data"); // bind string data to datasegment local.key1 + // this startup TestCodeSegment. + } } diff -r 17f88fd202ae -r 7fa9ddb31f64 src/alice/test/codesegment/local/TestCodeSegment.java --- a/src/alice/test/codesegment/local/TestCodeSegment.java Wed Feb 08 14:31:16 2012 +0900 +++ b/src/alice/test/codesegment/local/TestCodeSegment.java Wed Feb 08 16:07:33 2012 +0900 @@ -6,6 +6,7 @@ public class TestCodeSegment extends CodeSegment { + // create input datasegment arg1 Receiver arg1 = ids.create(CommandType.PEEK); @Override @@ -22,6 +23,7 @@ TestCodeSegment cs = new TestCodeSegment(); cs.arg1.setKey("local", "key1", arg1.index); + // DataSegment.get("local").update ods.update("local", "key1", "String data"); }