annotate src/alice/topology/manager/keeparive/TaskExecuter.java @ 325:54d0b947079a

addTask method has bug.
author one
date Fri, 24 Jan 2014 01:51:14 +0900
parents 806cc010a5bd
children c382d6fe1ec4
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;
323
one
parents: 322
diff changeset
11 private boolean skipFlag = false;
one
parents: 322
diff changeset
12 private long startTime = 0;
one
parents: 322
diff changeset
13 private long remainingTime = 0;
319
89dc953fd9e8 Chanage Class namae
one
parents: 318
diff changeset
14 private static TaskExecuter instance = new TaskExecuter();
310
f1cd920ea913 recreate "PingScheduler" with CS and DS
sugi
parents: 309
diff changeset
15
319
89dc953fd9e8 Chanage Class namae
one
parents: 318
diff changeset
16 private TaskExecuter(){}
322
4b5bf9cf1505 minor change
one
parents: 321
diff changeset
17 public static TaskExecuter getInstance(){
315
f9ec5bead150 come back response. but has bug
sugi
parents: 314
diff changeset
18 return instance;
f9ec5bead150 come back response. but has bug
sugi
parents: 314
diff changeset
19 }
f9ec5bead150 come back response. but has bug
sugi
parents: 314
diff changeset
20
309
797267843126 Refactor
sugi
parents: 308
diff changeset
21 public void setKey(){
314
f1f0638861ab ping responce receivable
sugi
parents: 312
diff changeset
22 ids.init();
309
797267843126 Refactor
sugi
parents: 308
diff changeset
23 info.setKey("_WAITINGLIST");
797267843126 Refactor
sugi
parents: 308
diff changeset
24 }
315
f9ec5bead150 come back response. but has bug
sugi
parents: 314
diff changeset
25
309
797267843126 Refactor
sugi
parents: 308
diff changeset
26 @Override
322
4b5bf9cf1505 minor change
one
parents: 321
diff changeset
27 public synchronized void run(){
324
806cc010a5bd remove enqueue bug.
one
parents: 323
diff changeset
28 ListManager list = info.asClass(ListManager.class);
314
f1f0638861ab ping responce receivable
sugi
parents: 312
diff changeset
29 if (list.getTaskList().size() == 0){
323
one
parents: 322
diff changeset
30 remainingTime = 0;
314
f1f0638861ab ping responce receivable
sugi
parents: 312
diff changeset
31 ods.update("_WAITINGLIST", list);
316
9e84deb9b1e0 Respond Worked
sugi
parents: 315
diff changeset
32 setKey();
314
f1f0638861ab ping responce receivable
sugi
parents: 312
diff changeset
33 return;
320
aafc88985822 Refactor
one
parents: 319
diff changeset
34 }
aafc88985822 Refactor
one
parents: 319
diff changeset
35 nowTask = list.getTaskList().poll();
aafc88985822 Refactor
one
parents: 319
diff changeset
36 ods.update("_WAITINGLIST", list);
323
one
parents: 322
diff changeset
37 if (skipFlag){
324
806cc010a5bd remove enqueue bug.
one
parents: 323
diff changeset
38 skipFlag = false;
323
one
parents: 322
diff changeset
39 }
one
parents: 322
diff changeset
40 startTime = System.currentTimeMillis();
324
806cc010a5bd remove enqueue bug.
one
parents: 323
diff changeset
41 System.out.println(nowTask.getSleepTime()+" "+nowTask.getType());
320
aafc88985822 Refactor
one
parents: 319
diff changeset
42 if (nowTask.getSleepTime()!=0){
315
f9ec5bead150 come back response. but has bug
sugi
parents: 314
diff changeset
43 try {
320
aafc88985822 Refactor
one
parents: 319
diff changeset
44 this.wait(nowTask.getSleepTime());
322
4b5bf9cf1505 minor change
one
parents: 321
diff changeset
45 } catch (InterruptedException e){}
320
aafc88985822 Refactor
one
parents: 319
diff changeset
46 }
323
one
parents: 322
diff changeset
47 if (!skipFlag){
322
4b5bf9cf1505 minor change
one
parents: 321
diff changeset
48 if (nowTask.getType() == TaskType.PING){
321
7de56e995f09 minor change
one
parents: 320
diff changeset
49 ods.ping(nowTask.getManagerKey(), nowTask.getReturnKey());
322
4b5bf9cf1505 minor change
one
parents: 321
diff changeset
50 TaskInfo task = new TaskInfo(TaskType.CLOSE);
4b5bf9cf1505 minor change
one
parents: 321
diff changeset
51 task.setInfo(nowTask.getManagerKey(), 60 * 1000);
4b5bf9cf1505 minor change
one
parents: 321
diff changeset
52 ods.put("_TASKINFO", task);
321
7de56e995f09 minor change
one
parents: 320
diff changeset
53 new RespondPing(nowTask.getReturnKey());
7de56e995f09 minor change
one
parents: 320
diff changeset
54 } else {
323
one
parents: 322
diff changeset
55 // no response from the Remote DataSegment. So close this connection.
321
7de56e995f09 minor change
one
parents: 320
diff changeset
56 DataSegment.get(nowTask.getManagerKey()).close();
323
one
parents: 322
diff changeset
57 }
309
797267843126 Refactor
sugi
parents: 308
diff changeset
58 }
321
7de56e995f09 minor change
one
parents: 320
diff changeset
59 nowTask = null;
316
9e84deb9b1e0 Respond Worked
sugi
parents: 315
diff changeset
60 setKey();
309
797267843126 Refactor
sugi
parents: 308
diff changeset
61 }
323
one
parents: 322
diff changeset
62
one
parents: 322
diff changeset
63 public synchronized void skip(){
one
parents: 322
diff changeset
64 skipFlag = true;
one
parents: 322
diff changeset
65 nowTask = null;
303
6e0a909b4b12 add PingScheduler
sugi
parents:
diff changeset
66 notify();
309
797267843126 Refactor
sugi
parents: 308
diff changeset
67 }
315
f9ec5bead150 come back response. but has bug
sugi
parents: 314
diff changeset
68
322
4b5bf9cf1505 minor change
one
parents: 321
diff changeset
69 public TaskInfo getNowTask(){
310
f1cd920ea913 recreate "PingScheduler" with CS and DS
sugi
parents: 309
diff changeset
70 return nowTask;
f1cd920ea913 recreate "PingScheduler" with CS and DS
sugi
parents: 309
diff changeset
71 }
315
f9ec5bead150 come back response. but has bug
sugi
parents: 314
diff changeset
72
325
54d0b947079a addTask method has bug.
one
parents: 324
diff changeset
73 public long getStartTime(){
323
one
parents: 322
diff changeset
74 return startTime;
310
f1cd920ea913 recreate "PingScheduler" with CS and DS
sugi
parents: 309
diff changeset
75 }
323
one
parents: 322
diff changeset
76
one
parents: 322
diff changeset
77 public boolean compareNowTask(TaskInfo task){
one
parents: 322
diff changeset
78 if (nowTask != null){
one
parents: 322
diff changeset
79 if (nowTask.getType().equals(task.getType())
one
parents: 322
diff changeset
80 && nowTask.getManagerKey().equals(task.getManagerKey())){
one
parents: 322
diff changeset
81 return true;
one
parents: 322
diff changeset
82 }
one
parents: 322
diff changeset
83 }
one
parents: 322
diff changeset
84 return false;
one
parents: 322
diff changeset
85 }
303
6e0a909b4b12 add PingScheduler
sugi
parents:
diff changeset
86
323
one
parents: 322
diff changeset
87 }