view src/main/java/christie/codegear/CodeGearManager.java @ 14:f2b30b47ef67

RemotePutTest is working
author Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
date Thu, 11 Jan 2018 18:02:59 +0900
parents bcd4f2c19185
children 4e867538adb7
line wrap: on
line source

package christie.codegear;

import christie.daemon.ChristieDaemon;
import christie.daemon.Config;
import christie.daemon.IncomingTcpConnection;
import christie.datagear.DataGearManager;
import christie.datagear.LocalDataGearManager;
import christie.datagear.RemoteDataGearManager;

import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ThreadPoolExecutor;

/**
 * Created by e125769 on 12/7/17.
 * CodeGearの実行
 */
public class CodeGearManager{
    private ConcurrentHashMap<String, DataGearManager>  dataGearManagers = new ConcurrentHashMap<String, DataGearManager>();
    private ConcurrentHashMap<String, CodeGearManager> cgms;
    private ThreadPoolExecutor threadPoolExecutor;
    private LocalDataGearManager localDGM = new LocalDataGearManager();
    private ConcurrentHashMap<String, IncomingTcpConnection> acceptHash = new ConcurrentHashMap<String, IncomingTcpConnection>();
    public Config conf;

    public CodeGearManager(ThreadPoolExecutor exe, ConcurrentHashMap<String, CodeGearManager> cgms, Config conf) {
        dataGearManagers.put("local", localDGM);
        this.cgms = cgms;
        threadPoolExecutor = exe;
        this.conf = conf;
        new ChristieDaemon(conf, this).listen();//run only first time
    }

    public LocalDataGearManager getLocalDGM(){
        return localDGM;
    }

    public DataGearManager getDGM(String dsmName){
        return dataGearManagers.get(dsmName);
    }

    public void createRemoteDGM(String dsmName, String address, int port){
        dataGearManagers.put(dsmName, new RemoteDataGearManager(dsmName, address, port, this));
    }

    public void createRemoteDGM(String dsmName){
        dataGearManagers.put(dsmName, new RemoteDataGearManager(dsmName, conf.address, conf.connectPort, this));
    }

    public void submit(CodeGear cg){
        threadPoolExecutor.execute(cg.cge);
    }

    public void setup(CodeGear cg){
        cg.setup(this);
    }

    public ConcurrentHashMap<String, CodeGearManager> getCgms() {
        return cgms;
    }

    public void setAccept(String key, IncomingTcpConnection in) {
        acceptHash.put(key, in);
    }
}