Mercurial > hg > Database > Christie
changeset 2:bacdcb5e6dcf
change StartCodeGear static
author | Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 12 Dec 2017 16:48:30 +0900 |
parents | 3ea61d0bfc34 |
children | e3bb0eea73f2 |
files | src/main/java/christie/codegear/CodeGear.java src/main/java/christie/codegear/InputDataGear.java src/main/java/christie/codegear/OutputDataGear.java src/main/java/christie/codegear/StartCodeGear.java src/main/java/christie/test/StartTest.java src/main/java/christie/test/TestCodeGear.java |
diffstat | 6 files changed, 38 insertions(+), 39 deletions(-) [+] |
line wrap: on
line diff
--- a/src/main/java/christie/codegear/CodeGear.java Mon Dec 11 21:19:25 2017 +0900 +++ b/src/main/java/christie/codegear/CodeGear.java Tue Dec 12 16:48:30 2017 +0900 @@ -16,12 +16,15 @@ public interface CodeGear extends Runnable{ InputDataGear idg = new InputDataGear(); OutputDataGear odg = new OutputDataGear(); - //CodeGearManager cgm = null; ArrayList<Command> commandList = new ArrayList<Command>(); - default void setKey(CodeGearManager cgm){//AnnotationからInputDataGearをセット + default void start(CodeGearManager cgm){//AnnotationからInputDataGearをセット + odg.initODG(cgm, this); for (Field field : this.getClass().getDeclaredFields()) { if (field.isAnnotationPresent(Take.class)){//何故かここに入らない + if (!field.getType().isInterface()){ + System.out.println("DataGearではありません"); + } Take ano = field.getAnnotation(Take.class); System.out.println(ano.value()); commandList.add(new Command(this, null, "local", ano.value(), CommandType.TAKE)); @@ -30,13 +33,13 @@ idg.finishInput(cgm, this, commandList); } - default void setValue(){//Annotationから揃ったInputDataGearの値をキャスト + default void setInputValue(){//Annotationから揃ったInputDataGearの値をキャスト for (Field field : this.getClass().getDeclaredFields()) { field.setAccessible(true); if (field.isAnnotationPresent(Take.class)){ Take ano = field.getAnnotation(Take.class); try { - field.set(this, idg.inputs.get(ano.value()));//ダウンキャストできるか? + field.set(this, idg.inputValue.get(ano.value()));//ダウンキャストできるか? } catch (IllegalAccessException e) { e.printStackTrace(); } @@ -45,11 +48,11 @@ } default void put(String key, Object data){ - //cgm.getDGM("local").put(key, new DataGear(data)); + odg.put(key, data); } default void put(String dist, String key, Object data){ - //cgm.getDGM(dist).put(key, new DataGear(data)); + odg.put(dist, key, data); } }
--- a/src/main/java/christie/codegear/InputDataGear.java Mon Dec 11 21:19:25 2017 +0900 +++ b/src/main/java/christie/codegear/InputDataGear.java Tue Dec 12 16:48:30 2017 +0900 @@ -10,10 +10,10 @@ * inputDataGearの待ち合わせの管理 */ public class InputDataGear { - HashMap<String, DataGear> inputs = new HashMap<String, DataGear>();//受け皿 - CodeGearManager cgm; - CodeGear cg; - int count = 0; + public HashMap<String, DataGear> inputValue = new HashMap<String, DataGear>();//受け皿 + public CodeGearManager cgm; + public CodeGear cg; + private int count = 0; void finishInput(CodeGearManager cgm, CodeGear cg, ArrayList<Command> commandList){ this.cgm = cgm; @@ -28,19 +28,19 @@ if (cgm.getDGM(cm.dest).dataGears.containsKey(cm.key)) { this.cgm.getDGM(cm.dest).runCommand(cm); } else { - this.cgm.getDGM(cm.dest).addWaitList(cm);//全体のinputにこのCGのinputを追加 + this.cgm.getDGM(cm.dest).addWaitList(cm); } } } public void setInputs(String key, DataGear value){ - inputs.put(key, value); + inputValue.put(key, value); count(); } public void count(){//Commandが実行されるたびにデクリメント if (--count == 0){ - cg.setValue(); + cg.setInputValue(); submitCG(); } }
--- a/src/main/java/christie/codegear/OutputDataGear.java Mon Dec 11 21:19:25 2017 +0900 +++ b/src/main/java/christie/codegear/OutputDataGear.java Tue Dec 12 16:48:30 2017 +0900 @@ -14,7 +14,11 @@ this.cg = cg; } - public void put(String key,DataGear dg){ - cgm.getDGM("local").put(key, dg); + public void put(String key, Object dg){ + cgm.getDGM("local").put(key, dg);//interfaceはnewできない + } + + public void put(String dist, String key, Object dg){ + cgm.getDGM(dist).put(key, dg); } }
--- a/src/main/java/christie/codegear/StartCodeGear.java Mon Dec 11 21:19:25 2017 +0900 +++ b/src/main/java/christie/codegear/StartCodeGear.java Tue Dec 12 16:48:30 2017 +0900 @@ -1,19 +1,25 @@ package christie.codegear; +import java.util.HashMap; import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; public interface StartCodeGear { - default CodeGearManager createCodeGearManager(ThreadPoolExecutor exe){ - return new CodeGearManager(exe); + HashMap<String, CodeGearManager> cgms = new HashMap<String, CodeGearManager>(); + ThreadPoolExecutor threadPool = new ThreadPoolExecutor(Runtime.getRuntime().availableProcessors(), // initial number of threads + Runtime.getRuntime().availableProcessors(), + Integer.MAX_VALUE, // keepAliveTime + TimeUnit.SECONDS, + new LinkedBlockingQueue<Runnable>()); + + static CodeGearManager createCGM(String name){ + CodeGearManager cgm = new CodeGearManager(threadPool); + cgms.put(name, cgm); + return cgm; } - default ThreadPoolExecutor createThreadPool(){ - return new ThreadPoolExecutor(Runtime.getRuntime().availableProcessors(), // initial number of threads - Runtime.getRuntime().availableProcessors(), - Integer.MAX_VALUE, // keepAliveTime - TimeUnit.SECONDS, - new LinkedBlockingQueue<Runnable>()); + static CodeGearManager getCGM(String name){ + return cgms.get(name); } }
--- a/src/main/java/christie/test/StartTest.java Mon Dec 11 21:19:25 2017 +0900 +++ b/src/main/java/christie/test/StartTest.java Tue Dec 12 16:48:30 2017 +0900 @@ -1,18 +1,12 @@ package christie.test; -import christie.codegear.CodeGearManager; import christie.codegear.StartCodeGear; import christie.datagear.StringData; -import java.util.concurrent.ThreadPoolExecutor; - public class StartTest implements StartCodeGear{ public static void main(String args[]){ - StartTest start = new StartTest(); TestCodeGear test = new TestCodeGear(); - CodeGearManager cgm = start.createCodeGearManager(start.createThreadPool()); - test.setKey(cgm); - test.odg.initODG(cgm, test); - test.odg.put("hoge", new StringData("hogehogehoge")); + test.start(StartCodeGear.createCGM("first")); + test.put("hoge", new StringData("hogehogehoge")); } }
--- a/src/main/java/christie/test/TestCodeGear.java Mon Dec 11 21:19:25 2017 +0900 +++ b/src/main/java/christie/test/TestCodeGear.java Tue Dec 12 16:48:30 2017 +0900 @@ -14,14 +14,6 @@ @Take("hoge") StringData hoge; - /*public static void main(String args[]){ - TestCodeGear test = new TestCodeGear(); - CodeGearManager cgm = new CodeGearManager(); - test.setKey(cgm); - test.odg.initODG(cgm, test); - odg.put("hoge", new StringData("hogehogehoge")); - }*/ - public void run() { System.out.println("in run!"); System.out.println(hoge.getData());