annotate src/alice/topology/manager/keeparive/TaskExecuter.java @ 326:c382d6fe1ec4

need reamainingTime add next task
author sugi
date Fri, 24 Jan 2014 02:18:09 +0900
parents 54d0b947079a
children 35b4e24e3e02
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;
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(){}
322
4b5bf9cf1505 minor change
one
parents: 321
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
322
4b5bf9cf1505 minor change
one
parents: 321
diff changeset
26 public synchronized void run(){
324
806cc010a5bd remove enqueue bug.
one
parents: 323
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);
323
one
parents: 322
diff changeset
35 if (skipFlag){
324
806cc010a5bd remove enqueue bug.
one
parents: 323
diff changeset
36 skipFlag = false;
323
one
parents: 322
diff changeset
37 }
one
parents: 322
diff changeset
38 startTime = System.currentTimeMillis();
324
806cc010a5bd remove enqueue bug.
one
parents: 323
diff changeset
39 System.out.println(nowTask.getSleepTime()+" "+nowTask.getType());
320
aafc88985822 Refactor
one
parents: 319
diff changeset
40 if (nowTask.getSleepTime()!=0){
315
f9ec5bead150 come back response. but has bug
sugi
parents: 314
diff changeset
41 try {
320
aafc88985822 Refactor
one
parents: 319
diff changeset
42 this.wait(nowTask.getSleepTime());
322
4b5bf9cf1505 minor change
one
parents: 321
diff changeset
43 } catch (InterruptedException e){}
320
aafc88985822 Refactor
one
parents: 319
diff changeset
44 }
323
one
parents: 322
diff changeset
45 if (!skipFlag){
322
4b5bf9cf1505 minor change
one
parents: 321
diff changeset
46 if (nowTask.getType() == TaskType.PING){
321
7de56e995f09 minor change
one
parents: 320
diff changeset
47 ods.ping(nowTask.getManagerKey(), nowTask.getReturnKey());
322
4b5bf9cf1505 minor change
one
parents: 321
diff changeset
48 TaskInfo task = new TaskInfo(TaskType.CLOSE);
4b5bf9cf1505 minor change
one
parents: 321
diff changeset
49 task.setInfo(nowTask.getManagerKey(), 60 * 1000);
4b5bf9cf1505 minor change
one
parents: 321
diff changeset
50 ods.put("_TASKINFO", task);
321
7de56e995f09 minor change
one
parents: 320
diff changeset
51 new RespondPing(nowTask.getReturnKey());
7de56e995f09 minor change
one
parents: 320
diff changeset
52 } else {
323
one
parents: 322
diff changeset
53 // no response from the Remote DataSegment. So close this connection.
321
7de56e995f09 minor change
one
parents: 320
diff changeset
54 DataSegment.get(nowTask.getManagerKey()).close();
323
one
parents: 322
diff changeset
55 }
309
797267843126 Refactor
sugi
parents: 308
diff changeset
56 }
321
7de56e995f09 minor change
one
parents: 320
diff changeset
57 nowTask = null;
316
9e84deb9b1e0 Respond Worked
sugi
parents: 315
diff changeset
58 setKey();
309
797267843126 Refactor
sugi
parents: 308
diff changeset
59 }
323
one
parents: 322
diff changeset
60
326
c382d6fe1ec4 need reamainingTime add next task
sugi
parents: 325
diff changeset
61 public synchronized long skip(){
323
one
parents: 322
diff changeset
62 skipFlag = true;
326
c382d6fe1ec4 need reamainingTime add next task
sugi
parents: 325
diff changeset
63 long remainingTime = nowTask.getSleepTime() - (System.currentTimeMillis() - startTime);
323
one
parents: 322
diff changeset
64 nowTask = null;
303
6e0a909b4b12 add PingScheduler
sugi
parents:
diff changeset
65 notify();
326
c382d6fe1ec4 need reamainingTime add next task
sugi
parents: 325
diff changeset
66 return remainingTime;
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 }