annotate src/alice/topology/manager/keeparive/TaskExecuter.java @ 321:7de56e995f09

minor change
author one
date Tue, 17 Dec 2013 18:54:47 +0900
parents aafc88985822
children 4b5bf9cf1505
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
303
6e0a909b4b12 add PingScheduler
sugi
parents:
diff changeset
1 package alice.topology.manager.keeparive;
6e0a909b4b12 add PingScheduler
sugi
parents:
diff changeset
2
6e0a909b4b12 add PingScheduler
sugi
parents:
diff changeset
3 import alice.codesegment.CodeSegment;
309
797267843126 Refactor
sugi
parents: 308
diff changeset
4 import alice.datasegment.CommandType;
321
7de56e995f09 minor change
one
parents: 320
diff changeset
5 import alice.datasegment.DataSegment;
309
797267843126 Refactor
sugi
parents: 308
diff changeset
6 import alice.datasegment.Receiver;
303
6e0a909b4b12 add PingScheduler
sugi
parents:
diff changeset
7
319
89dc953fd9e8 Chanage Class namae
one
parents: 318
diff changeset
8 public class TaskExecuter extends CodeSegment{
310
f1cd920ea913 recreate "PingScheduler" with CS and DS
sugi
parents: 309
diff changeset
9 private Receiver info = ids.create(CommandType.TAKE);
f1cd920ea913 recreate "PingScheduler" with CS and DS
sugi
parents: 309
diff changeset
10 private TaskInfo nowTask;
f1cd920ea913 recreate "PingScheduler" with CS and DS
sugi
parents: 309
diff changeset
11 private boolean interruptFlag = false;
f1cd920ea913 recreate "PingScheduler" with CS and DS
sugi
parents: 309
diff changeset
12 private long time = 0;
319
89dc953fd9e8 Chanage Class namae
one
parents: 318
diff changeset
13 private static TaskExecuter instance = new TaskExecuter();
310
f1cd920ea913 recreate "PingScheduler" with CS and DS
sugi
parents: 309
diff changeset
14
319
89dc953fd9e8 Chanage Class namae
one
parents: 318
diff changeset
15 private TaskExecuter(){}
89dc953fd9e8 Chanage Class namae
one
parents: 318
diff changeset
16 public static TaskExecuter getInstance() {
315
f9ec5bead150 come back response. but has bug
sugi
parents: 314
diff changeset
17 return instance;
f9ec5bead150 come back response. but has bug
sugi
parents: 314
diff changeset
18 }
f9ec5bead150 come back response. but has bug
sugi
parents: 314
diff changeset
19
309
797267843126 Refactor
sugi
parents: 308
diff changeset
20 public void setKey(){
314
f1f0638861ab ping responce receivable
sugi
parents: 312
diff changeset
21 ids.init();
309
797267843126 Refactor
sugi
parents: 308
diff changeset
22 info.setKey("_WAITINGLIST");
797267843126 Refactor
sugi
parents: 308
diff changeset
23 }
315
f9ec5bead150 come back response. but has bug
sugi
parents: 314
diff changeset
24
309
797267843126 Refactor
sugi
parents: 308
diff changeset
25 @Override
797267843126 Refactor
sugi
parents: 308
diff changeset
26 public synchronized void run() {
310
f1cd920ea913 recreate "PingScheduler" with CS and DS
sugi
parents: 309
diff changeset
27 ListManager list = info.asClass(ListManager.class);
314
f1f0638861ab ping responce receivable
sugi
parents: 312
diff changeset
28 if (list.getTaskList().size() == 0){
f1f0638861ab ping responce receivable
sugi
parents: 312
diff changeset
29 ods.update("_WAITINGLIST", list);
316
9e84deb9b1e0 Respond Worked
sugi
parents: 315
diff changeset
30 setKey();
314
f1f0638861ab ping responce receivable
sugi
parents: 312
diff changeset
31 return;
320
aafc88985822 Refactor
one
parents: 319
diff changeset
32 }
aafc88985822 Refactor
one
parents: 319
diff changeset
33 nowTask = list.getTaskList().poll();
aafc88985822 Refactor
one
parents: 319
diff changeset
34 ods.update("_WAITINGLIST", list);
aafc88985822 Refactor
one
parents: 319
diff changeset
35 time = System.currentTimeMillis();
aafc88985822 Refactor
one
parents: 319
diff changeset
36 if (nowTask.getSleepTime()!=0){
315
f9ec5bead150 come back response. but has bug
sugi
parents: 314
diff changeset
37 try {
320
aafc88985822 Refactor
one
parents: 319
diff changeset
38 this.wait(nowTask.getSleepTime());
aafc88985822 Refactor
one
parents: 319
diff changeset
39 } catch (InterruptedException e) {}
aafc88985822 Refactor
one
parents: 319
diff changeset
40 }
aafc88985822 Refactor
one
parents: 319
diff changeset
41 if (interruptFlag){
aafc88985822 Refactor
one
parents: 319
diff changeset
42 interruptFlag = false;
aafc88985822 Refactor
one
parents: 319
diff changeset
43 } else {
321
7de56e995f09 minor change
one
parents: 320
diff changeset
44 if (nowTask.getType() == TaskType.PING) {
7de56e995f09 minor change
one
parents: 320
diff changeset
45 ods.ping(nowTask.getManagerKey(), nowTask.getReturnKey());
7de56e995f09 minor change
one
parents: 320
diff changeset
46 new RespondPing(nowTask.getReturnKey());
7de56e995f09 minor change
one
parents: 320
diff changeset
47 } else {
7de56e995f09 minor change
one
parents: 320
diff changeset
48 DataSegment.get(nowTask.getManagerKey()).close();
7de56e995f09 minor change
one
parents: 320
diff changeset
49 }
7de56e995f09 minor change
one
parents: 320
diff changeset
50
309
797267843126 Refactor
sugi
parents: 308
diff changeset
51 }
321
7de56e995f09 minor change
one
parents: 320
diff changeset
52 nowTask = null;
316
9e84deb9b1e0 Respond Worked
sugi
parents: 315
diff changeset
53 setKey();
309
797267843126 Refactor
sugi
parents: 308
diff changeset
54 }
310
f1cd920ea913 recreate "PingScheduler" with CS and DS
sugi
parents: 309
diff changeset
55 public synchronized void interrupt(){
303
6e0a909b4b12 add PingScheduler
sugi
parents:
diff changeset
56 interruptFlag = true;
6e0a909b4b12 add PingScheduler
sugi
parents:
diff changeset
57 notify();
309
797267843126 Refactor
sugi
parents: 308
diff changeset
58 }
315
f9ec5bead150 come back response. but has bug
sugi
parents: 314
diff changeset
59
310
f1cd920ea913 recreate "PingScheduler" with CS and DS
sugi
parents: 309
diff changeset
60 public TaskInfo getNowTask() {
f1cd920ea913 recreate "PingScheduler" with CS and DS
sugi
parents: 309
diff changeset
61 return nowTask;
f1cd920ea913 recreate "PingScheduler" with CS and DS
sugi
parents: 309
diff changeset
62 }
315
f9ec5bead150 come back response. but has bug
sugi
parents: 314
diff changeset
63
310
f1cd920ea913 recreate "PingScheduler" with CS and DS
sugi
parents: 309
diff changeset
64 public long getTime(){
f1cd920ea913 recreate "PingScheduler" with CS and DS
sugi
parents: 309
diff changeset
65 return time;
f1cd920ea913 recreate "PingScheduler" with CS and DS
sugi
parents: 309
diff changeset
66 }
303
6e0a909b4b12 add PingScheduler
sugi
parents:
diff changeset
67 }
6e0a909b4b12 add PingScheduler
sugi
parents:
diff changeset
68