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

Rename
author sugi
date Tue, 26 Nov 2013 18:20:18 +0900
parents 4b38039e4454
children f1f0638861ab
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
310
f1cd920ea913 recreate "PingScheduler" with CS and DS
sugi
parents:
diff changeset
1 package alice.topology.manager.keeparive;
f1cd920ea913 recreate "PingScheduler" with CS and DS
sugi
parents:
diff changeset
2
f1cd920ea913 recreate "PingScheduler" with CS and DS
sugi
parents:
diff changeset
3 import java.util.LinkedList;
f1cd920ea913 recreate "PingScheduler" with CS and DS
sugi
parents:
diff changeset
4
f1cd920ea913 recreate "PingScheduler" with CS and DS
sugi
parents:
diff changeset
5 import alice.codesegment.CodeSegment;
f1cd920ea913 recreate "PingScheduler" with CS and DS
sugi
parents:
diff changeset
6 import alice.datasegment.CommandType;
f1cd920ea913 recreate "PingScheduler" with CS and DS
sugi
parents:
diff changeset
7 import alice.datasegment.Receiver;
f1cd920ea913 recreate "PingScheduler" with CS and DS
sugi
parents:
diff changeset
8
f1cd920ea913 recreate "PingScheduler" with CS and DS
sugi
parents:
diff changeset
9 public class CreateSchedule extends CodeSegment{
f1cd920ea913 recreate "PingScheduler" with CS and DS
sugi
parents:
diff changeset
10 private Receiver info1 = ids.create(CommandType.TAKE); // WaitingList
f1cd920ea913 recreate "PingScheduler" with CS and DS
sugi
parents:
diff changeset
11 private Receiver info2 = ids.create(CommandType.TAKE); // TaskInfo
f1cd920ea913 recreate "PingScheduler" with CS and DS
sugi
parents:
diff changeset
12
f1cd920ea913 recreate "PingScheduler" with CS and DS
sugi
parents:
diff changeset
13 public CreateSchedule(){
f1cd920ea913 recreate "PingScheduler" with CS and DS
sugi
parents:
diff changeset
14 info1.setKey("_WAITINGLIST");
f1cd920ea913 recreate "PingScheduler" with CS and DS
sugi
parents:
diff changeset
15 info2.setKey("_TASKINFO");
f1cd920ea913 recreate "PingScheduler" with CS and DS
sugi
parents:
diff changeset
16 }
f1cd920ea913 recreate "PingScheduler" with CS and DS
sugi
parents:
diff changeset
17
f1cd920ea913 recreate "PingScheduler" with CS and DS
sugi
parents:
diff changeset
18 @Override
f1cd920ea913 recreate "PingScheduler" with CS and DS
sugi
parents:
diff changeset
19 public void run() {
f1cd920ea913 recreate "PingScheduler" with CS and DS
sugi
parents:
diff changeset
20 ListManager manager = info1.asClass(ListManager.class);
f1cd920ea913 recreate "PingScheduler" with CS and DS
sugi
parents:
diff changeset
21 TaskInfo newTask = info2.asClass(TaskInfo.class);
312
sugi
parents: 311
diff changeset
22 SendPing ps = SendPing.getInstance();
310
f1cd920ea913 recreate "PingScheduler" with CS and DS
sugi
parents:
diff changeset
23 TaskInfo nowTask = ps.getNowTask();
f1cd920ea913 recreate "PingScheduler" with CS and DS
sugi
parents:
diff changeset
24 LinkedList<TaskInfo> list = manager.getTaskList();
f1cd920ea913 recreate "PingScheduler" with CS and DS
sugi
parents:
diff changeset
25 if (nowTask.getManagerKey().equals(newTask.getManagerKey())){
f1cd920ea913 recreate "PingScheduler" with CS and DS
sugi
parents:
diff changeset
26 long postponeTime = nowTask.getSleepTime() - (System.currentTimeMillis() - ps.getTime());
f1cd920ea913 recreate "PingScheduler" with CS and DS
sugi
parents:
diff changeset
27 TaskInfo nextTask = list.getFirst();
f1cd920ea913 recreate "PingScheduler" with CS and DS
sugi
parents:
diff changeset
28 nextTask.setSleepTime(postponeTime + nextTask.getSleepTime());
f1cd920ea913 recreate "PingScheduler" with CS and DS
sugi
parents:
diff changeset
29 manager.addTask(newTask);
f1cd920ea913 recreate "PingScheduler" with CS and DS
sugi
parents:
diff changeset
30 ps.interrupt();
f1cd920ea913 recreate "PingScheduler" with CS and DS
sugi
parents:
diff changeset
31 } else {
f1cd920ea913 recreate "PingScheduler" with CS and DS
sugi
parents:
diff changeset
32 for (TaskInfo info : list){
f1cd920ea913 recreate "PingScheduler" with CS and DS
sugi
parents:
diff changeset
33 if (newTask.getManagerKey().equals(info.getManagerKey())){
f1cd920ea913 recreate "PingScheduler" with CS and DS
sugi
parents:
diff changeset
34 list.remove(info);
f1cd920ea913 recreate "PingScheduler" with CS and DS
sugi
parents:
diff changeset
35 }
f1cd920ea913 recreate "PingScheduler" with CS and DS
sugi
parents:
diff changeset
36 }
f1cd920ea913 recreate "PingScheduler" with CS and DS
sugi
parents:
diff changeset
37 manager.addTask(newTask);
f1cd920ea913 recreate "PingScheduler" with CS and DS
sugi
parents:
diff changeset
38 }
f1cd920ea913 recreate "PingScheduler" with CS and DS
sugi
parents:
diff changeset
39 ods.update("_SCHEDLIST", manager);
311
4b38039e4454 remove SendPing and add CheckExistTask
sugi
parents: 310
diff changeset
40 new CheckExistTask();
310
f1cd920ea913 recreate "PingScheduler" with CS and DS
sugi
parents:
diff changeset
41 }
f1cd920ea913 recreate "PingScheduler" with CS and DS
sugi
parents:
diff changeset
42 }