diff src/main/java/christie/codegear/StartCodeGear.java @ 15:4e867538adb7

change DataGearManager to abstract class for delete static dataGears
author Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
date Sun, 14 Jan 2018 23:33:46 +0900
parents bcd4f2c19185
children 59fabebb67d8
line wrap: on
line diff
--- a/src/main/java/christie/codegear/StartCodeGear.java	Thu Jan 11 18:02:59 2018 +0900
+++ b/src/main/java/christie/codegear/StartCodeGear.java	Sun Jan 14 23:33:46 2018 +0900
@@ -9,28 +9,38 @@
 import java.util.concurrent.TimeUnit;
 
 public abstract class StartCodeGear extends CodeGear{
-    ConcurrentHashMap<String, CodeGearManager> cgms = new ConcurrentHashMap<>();
-    LinkedBlockingQueue<Runnable> taskQueue = new LinkedBlockingQueue<Runnable>();
-    ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(Runtime.getRuntime().availableProcessors(), // initial number of threads
+    static ConcurrentHashMap<String, CodeGearManager> cgms = new ConcurrentHashMap<>();
+    static LinkedBlockingQueue<Runnable> taskQueue = new LinkedBlockingQueue<Runnable>();
+    static ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(Runtime.getRuntime().availableProcessors(), // initial number of threads
             Runtime.getRuntime().availableProcessors(),
             Integer.MAX_VALUE, // keepAliveTime
             TimeUnit.SECONDS,
             taskQueue);
-    Config conf;
 
-    public StartCodeGear(Config conf){
-        this.conf = conf;
+    public StartCodeGear(CodeGearManager cgm){
+        cgm.setup(this);
     }
 
-    public CodeGearManager createCGM(String name){
-        CodeGearManager cgm = new CodeGearManager(threadPoolExecutor, cgms, conf);
+    public static CodeGearManager createCGM(String name, int localPort){
+        if (cgms.containsKey(name)){
+            throw new IllegalArgumentException("CGM name '" + name +"' is already used");
+        }
+
+        CodeGearManager cgm = new CodeGearManager(name, threadPoolExecutor, cgms, localPort);
         cgms.put(name, cgm);
         return cgm;
     }
 
-    public CodeGearManager getCGM(String name){
+    public static CodeGearManager createCGM(String name){
+        return createCGM(name, 10000);
+    }
+
+    public static CodeGearManager getCGM(String name){
         return cgms.get(name);
     }
 
+    @Override
+    protected void run(CodeGearManager cgm) {}
+
 
 }