Mercurial > hg > Database > Christie
view src/main/java/christie/codegear/CodeGearManager.java @ 196:ad49723367c2
add priority
author | akahori |
---|---|
date | Sat, 09 Mar 2019 14:03:06 +0900 |
parents | e60ee525841d |
children | ef5aad739292 |
line wrap: on
line source
package christie.codegear; import christie.daemon.ChristieDaemon; 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> dgmList = new ConcurrentHashMap<String, DataGearManager>(); private ConcurrentHashMap<Integer, CodeGearManager> cgmList; private ThreadPoolExecutor threadPoolExecutor; private LocalDataGearManager localDGM = new LocalDataGearManager(); private ConcurrentHashMap<String, IncomingTcpConnection> acceptHash = new ConcurrentHashMap<String, IncomingTcpConnection>(); public int cgmID; public ChristieDaemon daemon; public int localPort; public CodeGearManager(int cgmID, ThreadPoolExecutor exe, ConcurrentHashMap<Integer, CodeGearManager> cgmList, int localPort) { dgmList.put("local", localDGM); this.cgmList = cgmList; threadPoolExecutor = exe; this.cgmID = cgmID; this.localPort = localPort; daemon = new ChristieDaemon(localPort, this); daemon.listen(); } public LocalDataGearManager getLocalDGM(){ return localDGM; } public DataGearManager getDGM(String dgmName){ if (dgmList.containsKey(dgmName)){ return dgmList.get(dgmName); } else { throw new IllegalArgumentException("DGM "+ dgmName + " is not found."); } } public RemoteDataGearManager createRemoteDGM(String dgmName, String address, int port){ RemoteDataGearManager remote = new RemoteDataGearManager(dgmName, address, port, this); dgmList.put(dgmName, remote); return remote; } public void submit(CodeGear cg){ threadPoolExecutor.execute(PriorityThreadPoolExecutors.PriorityRunnable.of(cg.getCge(), cg.getCge().getPriority())); } public void setup(CodeGear cg){ setup(cg, Thread.NORM_PRIORITY); } public void setup(CodeGear cg, int priority){ cg.setup(this, priority); } public ConcurrentHashMap<Integer, CodeGearManager> getCgmList() { return cgmList; } public ConcurrentHashMap<String, DataGearManager> getDGMList() { return dgmList; } public Boolean containsDGM(String dgmName){ return dgmList.containsKey(dgmName);} public void setAccept(String key, IncomingTcpConnection in) { acceptHash.put(key, in); } // broadcast data public void putAllDGM(String key, Object data){ for(DataGearManager dgm:dgmList.values()){ dgm.put(key, data); } } }