Mercurial > hg > Members > tatsuki > Alice
view src/alice/codesegment/InputDataSegment.java @ 8:78b415d019de
Local DS and CS work! maybe...
author | one |
---|---|
date | Thu, 12 Jan 2012 16:02:28 +0900 |
parents | 352eb19d837d |
children | 22afbb2919f1 |
line wrap: on
line source
package alice.codesegment; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.atomic.AtomicInteger; import alice.datasegment.DataSegment; import alice.datasegment.DataSegmentValue; public class InputDataSegment { private ConcurrentHashMap<String, DataSegmentValue> inputDataSegments = new ConcurrentHashMap<String, DataSegmentValue>(); private CodeSegment cs; private AtomicInteger count = new AtomicInteger(); public InputDataSegment(CodeSegment cs) { this.cs = cs; } public void peek(String argKey, String managerKey, String key) { peek(argKey, managerKey, key, 0); } public void peek(String argKey, String managerKey, String key, int index) { DataSegment.get(managerKey).peek(argKey, key, index, cs); count.getAndIncrement(); } public void take(String argKey,String managerKey, String key) { take(argKey, managerKey, key, 0); } public void take(String argKey, String managerKey, String key, int index) { DataSegment.get(managerKey).take(argKey, key, index, cs); count.getAndIncrement(); } public void reply(String key, DataSegmentValue val) { inputDataSegments.put(key, val); if (count.decrementAndGet() == 0) { try { CodeSegmentManager.get().readyQueue.put(cs); } catch (InterruptedException e) { e.printStackTrace(); } } } public DataSegmentValue get(String argKey) { return inputDataSegments.get(argKey); } }