annotate src/alice/topology/manager/keeparive/TaskExecuter.java @ 330:d35ff0f588e8

keep alive may work... but bug exist.
author sugi
date Mon, 31 Mar 2014 22:28:52 +0900
parents 35b4e24e3e02
children 8266d7cfba7e
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
329
35b4e24e3e02 setNowTask method need synchronized. may be...
sugi
parents: 326
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;
329
35b4e24e3e02 setNowTask method need synchronized. may be...
sugi
parents: 326
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
329
35b4e24e3e02 setNowTask method need synchronized. may be...
sugi
parents: 326
diff changeset
16 private TaskExecuter() {}
35b4e24e3e02 setNowTask method need synchronized. may be...
sugi
parents: 326
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
329
35b4e24e3e02 setNowTask method need synchronized. may be...
sugi
parents: 326
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
329
35b4e24e3e02 setNowTask method need synchronized. may be...
sugi
parents: 326
diff changeset
27 public synchronized void run() {
330
d35ff0f588e8 keep alive may work... but bug exist.
sugi
parents: 329
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){
329
35b4e24e3e02 setNowTask method need synchronized. may be...
sugi
parents: 326
diff changeset
30 if (remainingTime !=0){
35b4e24e3e02 setNowTask method need synchronized. may be...
sugi
parents: 326
diff changeset
31 TaskInfo info = new TaskInfo(TaskType.SKIP);
35b4e24e3e02 setNowTask method need synchronized. may be...
sugi
parents: 326
diff changeset
32 info.setSleepTime(remainingTime);
35b4e24e3e02 setNowTask method need synchronized. may be...
sugi
parents: 326
diff changeset
33 remainingTime = 0;
35b4e24e3e02 setNowTask method need synchronized. may be...
sugi
parents: 326
diff changeset
34 list.addTask(info);
35b4e24e3e02 setNowTask method need synchronized. may be...
sugi
parents: 326
diff changeset
35 }
314
f1f0638861ab ping responce receivable
sugi
parents: 312
diff changeset
36 ods.update("_WAITINGLIST", list);
329
35b4e24e3e02 setNowTask method need synchronized. may be...
sugi
parents: 326
diff changeset
37 } else {
35b4e24e3e02 setNowTask method need synchronized. may be...
sugi
parents: 326
diff changeset
38 setNowTask(list.getTaskList().poll());
35b4e24e3e02 setNowTask method need synchronized. may be...
sugi
parents: 326
diff changeset
39 ods.update("_WAITINGLIST", list);
35b4e24e3e02 setNowTask method need synchronized. may be...
sugi
parents: 326
diff changeset
40
35b4e24e3e02 setNowTask method need synchronized. may be...
sugi
parents: 326
diff changeset
41 if (skipFlag) {
35b4e24e3e02 setNowTask method need synchronized. may be...
sugi
parents: 326
diff changeset
42 skipFlag = false;
35b4e24e3e02 setNowTask method need synchronized. may be...
sugi
parents: 326
diff changeset
43 nowTask.setSleepTime(remainingTime + nowTask.getSleepTime());
35b4e24e3e02 setNowTask method need synchronized. may be...
sugi
parents: 326
diff changeset
44 remainingTime = 0;
35b4e24e3e02 setNowTask method need synchronized. may be...
sugi
parents: 326
diff changeset
45 }
35b4e24e3e02 setNowTask method need synchronized. may be...
sugi
parents: 326
diff changeset
46
35b4e24e3e02 setNowTask method need synchronized. may be...
sugi
parents: 326
diff changeset
47 startTime = System.currentTimeMillis();
35b4e24e3e02 setNowTask method need synchronized. may be...
sugi
parents: 326
diff changeset
48 System.out.println(nowTask.getSleepTime()+" "+nowTask.getType());
35b4e24e3e02 setNowTask method need synchronized. may be...
sugi
parents: 326
diff changeset
49 if (nowTask.getSleepTime() != 0){
35b4e24e3e02 setNowTask method need synchronized. may be...
sugi
parents: 326
diff changeset
50 try {
35b4e24e3e02 setNowTask method need synchronized. may be...
sugi
parents: 326
diff changeset
51 wait(nowTask.getSleepTime());
35b4e24e3e02 setNowTask method need synchronized. may be...
sugi
parents: 326
diff changeset
52 } catch (InterruptedException e) {
35b4e24e3e02 setNowTask method need synchronized. may be...
sugi
parents: 326
diff changeset
53 e.printStackTrace();
35b4e24e3e02 setNowTask method need synchronized. may be...
sugi
parents: 326
diff changeset
54 }
35b4e24e3e02 setNowTask method need synchronized. may be...
sugi
parents: 326
diff changeset
55 }
330
d35ff0f588e8 keep alive may work... but bug exist.
sugi
parents: 329
diff changeset
56
329
35b4e24e3e02 setNowTask method need synchronized. may be...
sugi
parents: 326
diff changeset
57
35b4e24e3e02 setNowTask method need synchronized. may be...
sugi
parents: 326
diff changeset
58 if (!skipFlag){
330
d35ff0f588e8 keep alive may work... but bug exist.
sugi
parents: 329
diff changeset
59 execTask();
329
35b4e24e3e02 setNowTask method need synchronized. may be...
sugi
parents: 326
diff changeset
60 }
330
d35ff0f588e8 keep alive may work... but bug exist.
sugi
parents: 329
diff changeset
61 setNowTask(null);
d35ff0f588e8 keep alive may work... but bug exist.
sugi
parents: 329
diff changeset
62 startTime = 0;
323
one
parents: 322
diff changeset
63 }
329
35b4e24e3e02 setNowTask method need synchronized. may be...
sugi
parents: 326
diff changeset
64 setKey();
35b4e24e3e02 setNowTask method need synchronized. may be...
sugi
parents: 326
diff changeset
65 }
35b4e24e3e02 setNowTask method need synchronized. may be...
sugi
parents: 326
diff changeset
66
330
d35ff0f588e8 keep alive may work... but bug exist.
sugi
parents: 329
diff changeset
67 private synchronized void execTask(){
d35ff0f588e8 keep alive may work... but bug exist.
sugi
parents: 329
diff changeset
68 // ping or close
d35ff0f588e8 keep alive may work... but bug exist.
sugi
parents: 329
diff changeset
69 System.out.println("aaaa");
d35ff0f588e8 keep alive may work... but bug exist.
sugi
parents: 329
diff changeset
70 if (nowTask.getType() == TaskType.PING) {
d35ff0f588e8 keep alive may work... but bug exist.
sugi
parents: 329
diff changeset
71 System.out.println("bbb");
d35ff0f588e8 keep alive may work... but bug exist.
sugi
parents: 329
diff changeset
72 ods.ping(nowTask.getManagerKey(), nowTask.getReturnKey());
d35ff0f588e8 keep alive may work... but bug exist.
sugi
parents: 329
diff changeset
73 TaskInfo task = new TaskInfo(TaskType.CLOSE);
d35ff0f588e8 keep alive may work... but bug exist.
sugi
parents: 329
diff changeset
74 task.setInfo(nowTask.getManagerKey(), 10 * 1000);
d35ff0f588e8 keep alive may work... but bug exist.
sugi
parents: 329
diff changeset
75 ods.put("_TASKINFO", task);
d35ff0f588e8 keep alive may work... but bug exist.
sugi
parents: 329
diff changeset
76 new RespondPing(nowTask.getReturnKey());
d35ff0f588e8 keep alive may work... but bug exist.
sugi
parents: 329
diff changeset
77 } else if (nowTask.getType() == TaskType.CLOSE) {
d35ff0f588e8 keep alive may work... but bug exist.
sugi
parents: 329
diff changeset
78 // no response from the Remote DataSegment. So close this connection.
d35ff0f588e8 keep alive may work... but bug exist.
sugi
parents: 329
diff changeset
79 //DataSegment.get(nowTask.getManagerKey()).close();
d35ff0f588e8 keep alive may work... but bug exist.
sugi
parents: 329
diff changeset
80 System.out.println("CLOSE");
d35ff0f588e8 keep alive may work... but bug exist.
sugi
parents: 329
diff changeset
81
d35ff0f588e8 keep alive may work... but bug exist.
sugi
parents: 329
diff changeset
82 nowTask.show();
d35ff0f588e8 keep alive may work... but bug exist.
sugi
parents: 329
diff changeset
83 System.exit(0);
d35ff0f588e8 keep alive may work... but bug exist.
sugi
parents: 329
diff changeset
84 }
d35ff0f588e8 keep alive may work... but bug exist.
sugi
parents: 329
diff changeset
85 }
d35ff0f588e8 keep alive may work... but bug exist.
sugi
parents: 329
diff changeset
86
329
35b4e24e3e02 setNowTask method need synchronized. may be...
sugi
parents: 326
diff changeset
87 public synchronized void skip() {
35b4e24e3e02 setNowTask method need synchronized. may be...
sugi
parents: 326
diff changeset
88 skipFlag = true;
35b4e24e3e02 setNowTask method need synchronized. may be...
sugi
parents: 326
diff changeset
89 if (startTime == 0){
35b4e24e3e02 setNowTask method need synchronized. may be...
sugi
parents: 326
diff changeset
90 remainingTime = nowTask.getSleepTime();
35b4e24e3e02 setNowTask method need synchronized. may be...
sugi
parents: 326
diff changeset
91 } else {
35b4e24e3e02 setNowTask method need synchronized. may be...
sugi
parents: 326
diff changeset
92 remainingTime = nowTask.getSleepTime() - (System.currentTimeMillis() - startTime);
309
797267843126 Refactor
sugi
parents: 308
diff changeset
93 }
330
d35ff0f588e8 keep alive may work... but bug exist.
sugi
parents: 329
diff changeset
94 System.out.println(remainingTime);
321
7de56e995f09 minor change
one
parents: 320
diff changeset
95 nowTask = null;
329
35b4e24e3e02 setNowTask method need synchronized. may be...
sugi
parents: 326
diff changeset
96 notify();
330
d35ff0f588e8 keep alive may work... but bug exist.
sugi
parents: 329
diff changeset
97 System.out.println(nowTask);
309
797267843126 Refactor
sugi
parents: 308
diff changeset
98 }
329
35b4e24e3e02 setNowTask method need synchronized. may be...
sugi
parents: 326
diff changeset
99
35b4e24e3e02 setNowTask method need synchronized. may be...
sugi
parents: 326
diff changeset
100 public synchronized void ignore() {
323
one
parents: 322
diff changeset
101 skipFlag = true;
329
35b4e24e3e02 setNowTask method need synchronized. may be...
sugi
parents: 326
diff changeset
102 remainingTime = 0;
323
one
parents: 322
diff changeset
103 nowTask = null;
303
6e0a909b4b12 add PingScheduler
sugi
parents:
diff changeset
104 notify();
309
797267843126 Refactor
sugi
parents: 308
diff changeset
105 }
315
f9ec5bead150 come back response. but has bug
sugi
parents: 314
diff changeset
106
330
d35ff0f588e8 keep alive may work... but bug exist.
sugi
parents: 329
diff changeset
107 public synchronized TaskInfo getNowTask() {
310
f1cd920ea913 recreate "PingScheduler" with CS and DS
sugi
parents: 309
diff changeset
108 return nowTask;
f1cd920ea913 recreate "PingScheduler" with CS and DS
sugi
parents: 309
diff changeset
109 }
315
f9ec5bead150 come back response. but has bug
sugi
parents: 314
diff changeset
110
329
35b4e24e3e02 setNowTask method need synchronized. may be...
sugi
parents: 326
diff changeset
111 public synchronized void setNowTask(TaskInfo info) {
35b4e24e3e02 setNowTask method need synchronized. may be...
sugi
parents: 326
diff changeset
112 nowTask = info;
310
f1cd920ea913 recreate "PingScheduler" with CS and DS
sugi
parents: 309
diff changeset
113 }
329
35b4e24e3e02 setNowTask method need synchronized. may be...
sugi
parents: 326
diff changeset
114
35b4e24e3e02 setNowTask method need synchronized. may be...
sugi
parents: 326
diff changeset
115 public long getRemainingTime() {
35b4e24e3e02 setNowTask method need synchronized. may be...
sugi
parents: 326
diff changeset
116 if (nowTask != null) {
35b4e24e3e02 setNowTask method need synchronized. may be...
sugi
parents: 326
diff changeset
117 if (startTime !=0) {
35b4e24e3e02 setNowTask method need synchronized. may be...
sugi
parents: 326
diff changeset
118 return nowTask.getSleepTime() - (System.currentTimeMillis() - startTime);
35b4e24e3e02 setNowTask method need synchronized. may be...
sugi
parents: 326
diff changeset
119 } else {
35b4e24e3e02 setNowTask method need synchronized. may be...
sugi
parents: 326
diff changeset
120 return nowTask.getSleepTime();
35b4e24e3e02 setNowTask method need synchronized. may be...
sugi
parents: 326
diff changeset
121 }
35b4e24e3e02 setNowTask method need synchronized. may be...
sugi
parents: 326
diff changeset
122 } else {
35b4e24e3e02 setNowTask method need synchronized. may be...
sugi
parents: 326
diff changeset
123 return remainingTime;
35b4e24e3e02 setNowTask method need synchronized. may be...
sugi
parents: 326
diff changeset
124 }
35b4e24e3e02 setNowTask method need synchronized. may be...
sugi
parents: 326
diff changeset
125 }
35b4e24e3e02 setNowTask method need synchronized. may be...
sugi
parents: 326
diff changeset
126
35b4e24e3e02 setNowTask method need synchronized. may be...
sugi
parents: 326
diff changeset
127 public boolean compareNowTask(TaskInfo task) {
323
one
parents: 322
diff changeset
128 if (nowTask != null){
one
parents: 322
diff changeset
129 if (nowTask.getType().equals(task.getType())
one
parents: 322
diff changeset
130 && nowTask.getManagerKey().equals(task.getManagerKey())){
one
parents: 322
diff changeset
131 return true;
one
parents: 322
diff changeset
132 }
one
parents: 322
diff changeset
133 }
one
parents: 322
diff changeset
134 return false;
one
parents: 322
diff changeset
135 }
303
6e0a909b4b12 add PingScheduler
sugi
parents:
diff changeset
136
323
one
parents: 322
diff changeset
137 }