annotate src/alice/topology/manager/keeparive/RemoveTask.java @ 331:8266d7cfba7e

add comment
author sugi
date Thu, 03 Apr 2014 20:26:23 +0900
parents d35ff0f588e8
children cf9072608fe4
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
323
one
parents:
diff changeset
1 package alice.topology.manager.keeparive;
one
parents:
diff changeset
2
one
parents:
diff changeset
3 import alice.codesegment.CodeSegment;
one
parents:
diff changeset
4 import alice.datasegment.CommandType;
one
parents:
diff changeset
5 import alice.datasegment.Receiver;
one
parents:
diff changeset
6
one
parents:
diff changeset
7 public class RemoveTask extends CodeSegment {
one
parents:
diff changeset
8 private Receiver info1 = ids.create(CommandType.TAKE); // list
one
parents:
diff changeset
9 private Receiver info2 = ids.create(CommandType.TAKE); // remove task
one
parents:
diff changeset
10
one
parents:
diff changeset
11 public RemoveTask(){
one
parents:
diff changeset
12 info1.setKey("_WAITINGLIST");
one
parents:
diff changeset
13 info2.setKey("_REMOVETASK");
one
parents:
diff changeset
14 }
one
parents:
diff changeset
15
one
parents:
diff changeset
16 @Override
one
parents:
diff changeset
17 public void run() {
one
parents:
diff changeset
18 ListManager list = info1.asClass(ListManager.class); // explicit cast
one
parents:
diff changeset
19 TaskInfo task = info2.asClass(TaskInfo.class);
one
parents:
diff changeset
20 TaskExecuter exec = TaskExecuter.getInstance();
one
parents:
diff changeset
21 if (exec.compareNowTask(task)){
one
parents:
diff changeset
22 // case: remove task is state countdown.
one
parents:
diff changeset
23 exec.skip();
one
parents:
diff changeset
24 } else {
330
d35ff0f588e8 keep alive may work... but bug exist.
sugi
parents: 324
diff changeset
25 boolean removeFlag = false;
323
one
parents:
diff changeset
26 // case: remove task is still in the waiting queue.
one
parents:
diff changeset
27 for (TaskInfo t: list.getTaskList()){
one
parents:
diff changeset
28 if (t.getType().equals(task.getType())){
331
8266d7cfba7e add comment
sugi
parents: 330
diff changeset
29 list.getTaskList().remove(t); // this operation should be executed by list Manager.
330
d35ff0f588e8 keep alive may work... but bug exist.
sugi
parents: 324
diff changeset
30 removeFlag = true;
323
one
parents:
diff changeset
31 break;
one
parents:
diff changeset
32 }
one
parents:
diff changeset
33 }
330
d35ff0f588e8 keep alive may work... but bug exist.
sugi
parents: 324
diff changeset
34 if (!removeFlag){
d35ff0f588e8 keep alive may work... but bug exist.
sugi
parents: 324
diff changeset
35 ods.put("_REMOVETASK", task);
d35ff0f588e8 keep alive may work... but bug exist.
sugi
parents: 324
diff changeset
36 }
323
one
parents:
diff changeset
37 }
one
parents:
diff changeset
38 ods.update("_WAITINGLIST", list);
one
parents:
diff changeset
39 }
one
parents:
diff changeset
40 }