annotate 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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
c082039368f5 make project
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1 package christie.codegear;
c082039368f5 make project
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
2
13
bcd4f2c19185 don't work MessagePack unconvert for remote put
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
3 import christie.daemon.ChristieDaemon;
bcd4f2c19185 don't work MessagePack unconvert for remote put
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
4 import christie.daemon.IncomingTcpConnection;
0
c082039368f5 make project
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
5 import christie.datagear.DataGearManager;
1
3ea61d0bfc34 add dependency proccess but not work
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
6 import christie.datagear.LocalDataGearManager;
3ea61d0bfc34 add dependency proccess but not work
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
7 import christie.datagear.RemoteDataGearManager;
0
c082039368f5 make project
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
8
6
3dcfe63d6394 set type to DataGear by Annotation
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
9 import java.util.concurrent.ConcurrentHashMap;
0
c082039368f5 make project
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
10 import java.util.concurrent.ThreadPoolExecutor;
c082039368f5 make project
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
11
c082039368f5 make project
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
12 /**
c082039368f5 make project
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
13 * Created by e125769 on 12/7/17.
1
3ea61d0bfc34 add dependency proccess but not work
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
14 * CodeGearの実行
0
c082039368f5 make project
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
15 */
1
3ea61d0bfc34 add dependency proccess but not work
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
16 public class CodeGearManager{
29
be58bfe90766 remove synchronized
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 24
diff changeset
17 private ConcurrentHashMap<String, DataGearManager> dgmList = new ConcurrentHashMap<String, DataGearManager>();
be58bfe90766 remove synchronized
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 24
diff changeset
18 private ConcurrentHashMap<Integer, CodeGearManager> cgmList;
7
21372a589bd3 add CodeGearExecutor
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
19 private ThreadPoolExecutor threadPoolExecutor;
13
bcd4f2c19185 don't work MessagePack unconvert for remote put
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
20 private LocalDataGearManager localDGM = new LocalDataGearManager();
bcd4f2c19185 don't work MessagePack unconvert for remote put
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
21 private ConcurrentHashMap<String, IncomingTcpConnection> acceptHash = new ConcurrentHashMap<String, IncomingTcpConnection>();
17
59fabebb67d8 delete cgmName as String, add cgmID as int
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
22 public int cgmID;
35
6660ebba441e add ring test but not working
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
23 public ChristieDaemon daemon;
6660ebba441e add ring test but not working
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
24 public int localPort;
1
3ea61d0bfc34 add dependency proccess but not work
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
25
29
be58bfe90766 remove synchronized
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 24
diff changeset
26 public CodeGearManager(int cgmID, ThreadPoolExecutor exe, ConcurrentHashMap<Integer, CodeGearManager> cgmList, int localPort) {
be58bfe90766 remove synchronized
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 24
diff changeset
27 dgmList.put("local", localDGM);
be58bfe90766 remove synchronized
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 24
diff changeset
28 this.cgmList = cgmList;
7
21372a589bd3 add CodeGearExecutor
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
29 threadPoolExecutor = exe;
17
59fabebb67d8 delete cgmName as String, add cgmID as int
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
30 this.cgmID = cgmID;
35
6660ebba441e add ring test but not working
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
31 this.localPort = localPort;
6660ebba441e add ring test but not working
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
32 daemon = new ChristieDaemon(localPort, this);
6660ebba441e add ring test but not working
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
33 daemon.listen();
196
ad49723367c2 add priority
akahori
parents: 149
diff changeset
34
ad49723367c2 add priority
akahori
parents: 149
diff changeset
35
1
3ea61d0bfc34 add dependency proccess but not work
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
36 }
3ea61d0bfc34 add dependency proccess but not work
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
37
14
f2b30b47ef67 RemotePutTest is working
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
38 public LocalDataGearManager getLocalDGM(){
13
bcd4f2c19185 don't work MessagePack unconvert for remote put
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
39 return localDGM;
5
5be6647b87d2 StartCodeGear implements Runnable to wait InputDataGear
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
40 }
5be6647b87d2 StartCodeGear implements Runnable to wait InputDataGear
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
41
17
59fabebb67d8 delete cgmName as String, add cgmID as int
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
42 public DataGearManager getDGM(String dgmName){
29
be58bfe90766 remove synchronized
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 24
diff changeset
43 if (dgmList.containsKey(dgmName)){
be58bfe90766 remove synchronized
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 24
diff changeset
44 return dgmList.get(dgmName);
17
59fabebb67d8 delete cgmName as String, add cgmID as int
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
45 } else {
59fabebb67d8 delete cgmName as String, add cgmID as int
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
46 throw new IllegalArgumentException("DGM "+ dgmName + " is not found.");
59fabebb67d8 delete cgmName as String, add cgmID as int
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
47 }
1
3ea61d0bfc34 add dependency proccess but not work
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
48 }
3ea61d0bfc34 add dependency proccess but not work
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
49
17
59fabebb67d8 delete cgmName as String, add cgmID as int
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
50 public RemoteDataGearManager createRemoteDGM(String dgmName, String address, int port){
59fabebb67d8 delete cgmName as String, add cgmID as int
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
51 RemoteDataGearManager remote = new RemoteDataGearManager(dgmName, address, port, this);
29
be58bfe90766 remove synchronized
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 24
diff changeset
52 dgmList.put(dgmName, remote);
17
59fabebb67d8 delete cgmName as String, add cgmID as int
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
53
15
4e867538adb7 change DataGearManager to abstract class for delete static dataGears
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
54 return remote;
13
bcd4f2c19185 don't work MessagePack unconvert for remote put
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
55 }
bcd4f2c19185 don't work MessagePack unconvert for remote put
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
56
6
3dcfe63d6394 set type to DataGear by Annotation
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
57 public void submit(CodeGear cg){
196
ad49723367c2 add priority
akahori
parents: 149
diff changeset
58 threadPoolExecutor.execute(PriorityThreadPoolExecutors.PriorityRunnable.of(cg.getCge(), cg.getCge().getPriority()));
7
21372a589bd3 add CodeGearExecutor
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
59 }
21372a589bd3 add CodeGearExecutor
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
60
21372a589bd3 add CodeGearExecutor
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
61 public void setup(CodeGear cg){
196
ad49723367c2 add priority
akahori
parents: 149
diff changeset
62 setup(cg, Thread.NORM_PRIORITY);
ad49723367c2 add priority
akahori
parents: 149
diff changeset
63 }
ad49723367c2 add priority
akahori
parents: 149
diff changeset
64
ad49723367c2 add priority
akahori
parents: 149
diff changeset
65 public void setup(CodeGear cg, int priority){
ad49723367c2 add priority
akahori
parents: 149
diff changeset
66 cg.setup(this, priority);
6
3dcfe63d6394 set type to DataGear by Annotation
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
67 }
3dcfe63d6394 set type to DataGear by Annotation
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
68
29
be58bfe90766 remove synchronized
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 24
diff changeset
69 public ConcurrentHashMap<Integer, CodeGearManager> getCgmList() {
be58bfe90766 remove synchronized
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 24
diff changeset
70 return cgmList;
8
efaa7ad906b3 Implement Queue in DataGearManager
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
71 }
efaa7ad906b3 Implement Queue in DataGearManager
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
72
112
20f7270e997d update add contains
akahori
parents: 63
diff changeset
73 public ConcurrentHashMap<String, DataGearManager> getDGMList() { return dgmList; }
20f7270e997d update add contains
akahori
parents: 63
diff changeset
74
20f7270e997d update add contains
akahori
parents: 63
diff changeset
75 public Boolean containsDGM(String dgmName){ return dgmList.containsKey(dgmName);}
63
c73bb6a17034 fix CodeGearManager add getDgmList method
akahori
parents: 35
diff changeset
76
13
bcd4f2c19185 don't work MessagePack unconvert for remote put
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
77 public void setAccept(String key, IncomingTcpConnection in) {
bcd4f2c19185 don't work MessagePack unconvert for remote put
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
78 acceptHash.put(key, in);
bcd4f2c19185 don't work MessagePack unconvert for remote put
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
79 }
149
e60ee525841d fix add putAllDGM
akahori
parents: 112
diff changeset
80
e60ee525841d fix add putAllDGM
akahori
parents: 112
diff changeset
81 // broadcast data
e60ee525841d fix add putAllDGM
akahori
parents: 112
diff changeset
82 public void putAllDGM(String key, Object data){
e60ee525841d fix add putAllDGM
akahori
parents: 112
diff changeset
83 for(DataGearManager dgm:dgmList.values()){
e60ee525841d fix add putAllDGM
akahori
parents: 112
diff changeset
84 dgm.put(key, data);
e60ee525841d fix add putAllDGM
akahori
parents: 112
diff changeset
85 }
e60ee525841d fix add putAllDGM
akahori
parents: 112
diff changeset
86 }
e60ee525841d fix add putAllDGM
akahori
parents: 112
diff changeset
87
0
c082039368f5 make project
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
88 }