Mercurial > hg > Database > Christie
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 |
rev | line source |
---|---|
0 | 1 package christie.codegear; |
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 | 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 | 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 | 10 import java.util.concurrent.ThreadPoolExecutor; |
11 | |
12 /** | |
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 | 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 | 34 |
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 | 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 | 62 setup(cg, Thread.NORM_PRIORITY); |
63 } | |
64 | |
65 public void setup(CodeGear cg, int priority){ | |
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 | 73 public ConcurrentHashMap<String, DataGearManager> getDGMList() { return dgmList; } |
74 | |
75 public Boolean containsDGM(String dgmName){ return dgmList.containsKey(dgmName);} | |
63 | 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 | 80 |
81 // broadcast data | |
82 public void putAllDGM(String key, Object data){ | |
83 for(DataGearManager dgm:dgmList.values()){ | |
84 dgm.put(key, data); | |
85 } | |
86 } | |
87 | |
0 | 88 } |