annotate src/alice/topology/manager/keeparive/SendPing.java @ 312:6e0a3c680b82

Rename
author sugi
date Tue, 26 Nov 2013 18:20:18 +0900
parents src/alice/topology/manager/keeparive/PingScheduler.java@f1cd920ea913
children f1f0638861ab
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;
797267843126 Refactor
sugi
parents: 308
diff changeset
5 import alice.datasegment.Receiver;
303
6e0a909b4b12 add PingScheduler
sugi
parents:
diff changeset
6
312
sugi
parents: 310
diff changeset
7 public class SendPing extends CodeSegment{
310
f1cd920ea913 recreate "PingScheduler" with CS and DS
sugi
parents: 309
diff changeset
8 private Receiver info = ids.create(CommandType.TAKE);
f1cd920ea913 recreate "PingScheduler" with CS and DS
sugi
parents: 309
diff changeset
9 private TaskInfo nowTask;
f1cd920ea913 recreate "PingScheduler" with CS and DS
sugi
parents: 309
diff changeset
10 private boolean interruptFlag = false;
f1cd920ea913 recreate "PingScheduler" with CS and DS
sugi
parents: 309
diff changeset
11 private long time = 0;
f1cd920ea913 recreate "PingScheduler" with CS and DS
sugi
parents: 309
diff changeset
12
309
797267843126 Refactor
sugi
parents: 308
diff changeset
13 static class SingletonHolder {
312
sugi
parents: 310
diff changeset
14 private static SendPing Instance = new SendPing();
309
797267843126 Refactor
sugi
parents: 308
diff changeset
15 }
312
sugi
parents: 310
diff changeset
16 public static SendPing getInstance(){
309
797267843126 Refactor
sugi
parents: 308
diff changeset
17 return SingletonHolder.Instance;
797267843126 Refactor
sugi
parents: 308
diff changeset
18 }
797267843126 Refactor
sugi
parents: 308
diff changeset
19 public void setKey(){
797267843126 Refactor
sugi
parents: 308
diff changeset
20 info.setKey("_WAITINGLIST");
797267843126 Refactor
sugi
parents: 308
diff changeset
21 }
797267843126 Refactor
sugi
parents: 308
diff changeset
22
797267843126 Refactor
sugi
parents: 308
diff changeset
23 @Override
797267843126 Refactor
sugi
parents: 308
diff changeset
24 public synchronized void run() {
310
f1cd920ea913 recreate "PingScheduler" with CS and DS
sugi
parents: 309
diff changeset
25 ListManager list = info.asClass(ListManager.class);
309
797267843126 Refactor
sugi
parents: 308
diff changeset
26 try {
797267843126 Refactor
sugi
parents: 308
diff changeset
27 nowTask = list.getTaskList().pollFirst();
797267843126 Refactor
sugi
parents: 308
diff changeset
28 ods.update("_WAITINGLIST", list);
797267843126 Refactor
sugi
parents: 308
diff changeset
29 time = System.currentTimeMillis();
797267843126 Refactor
sugi
parents: 308
diff changeset
30 if (nowTask.getSleepTime()!=0)
797267843126 Refactor
sugi
parents: 308
diff changeset
31 this.wait(nowTask.getSleepTime());
797267843126 Refactor
sugi
parents: 308
diff changeset
32 if (interruptFlag){
797267843126 Refactor
sugi
parents: 308
diff changeset
33 interruptFlag = false;
797267843126 Refactor
sugi
parents: 308
diff changeset
34 } else {
797267843126 Refactor
sugi
parents: 308
diff changeset
35 ods.ping(nowTask.getManagerKey(), nowTask.getReturnKey());
797267843126 Refactor
sugi
parents: 308
diff changeset
36 }
797267843126 Refactor
sugi
parents: 308
diff changeset
37 } catch (InterruptedException e) {
797267843126 Refactor
sugi
parents: 308
diff changeset
38 }
312
sugi
parents: 310
diff changeset
39 SendPing.getInstance().setKey();
309
797267843126 Refactor
sugi
parents: 308
diff changeset
40 }
310
f1cd920ea913 recreate "PingScheduler" with CS and DS
sugi
parents: 309
diff changeset
41 public synchronized void interrupt(){
303
6e0a909b4b12 add PingScheduler
sugi
parents:
diff changeset
42 interruptFlag = true;
6e0a909b4b12 add PingScheduler
sugi
parents:
diff changeset
43 notify();
309
797267843126 Refactor
sugi
parents: 308
diff changeset
44 }
310
f1cd920ea913 recreate "PingScheduler" with CS and DS
sugi
parents: 309
diff changeset
45
f1cd920ea913 recreate "PingScheduler" with CS and DS
sugi
parents: 309
diff changeset
46 public TaskInfo getNowTask() {
f1cd920ea913 recreate "PingScheduler" with CS and DS
sugi
parents: 309
diff changeset
47 return nowTask;
f1cd920ea913 recreate "PingScheduler" with CS and DS
sugi
parents: 309
diff changeset
48 }
f1cd920ea913 recreate "PingScheduler" with CS and DS
sugi
parents: 309
diff changeset
49
f1cd920ea913 recreate "PingScheduler" with CS and DS
sugi
parents: 309
diff changeset
50 public long getTime(){
f1cd920ea913 recreate "PingScheduler" with CS and DS
sugi
parents: 309
diff changeset
51 return time;
f1cd920ea913 recreate "PingScheduler" with CS and DS
sugi
parents: 309
diff changeset
52 }
303
6e0a909b4b12 add PingScheduler
sugi
parents:
diff changeset
53 }
6e0a909b4b12 add PingScheduler
sugi
parents:
diff changeset
54