view 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
line wrap: on
line source

package alice.topology.manager.keeparive;

import alice.codesegment.CodeSegment;
import alice.datasegment.CommandType;
import alice.datasegment.Receiver;

public class RemoveTask extends CodeSegment {
	private Receiver info1 = ids.create(CommandType.TAKE); // list
	private Receiver info2 = ids.create(CommandType.TAKE); // remove task

	public RemoveTask(){
		info1.setKey("_WAITINGLIST");
		info2.setKey("_REMOVETASK");
	}

	@Override
	public void run() {
		ListManager list = info1.asClass(ListManager.class); // explicit cast
		TaskInfo task = info2.asClass(TaskInfo.class);
		TaskExecuter exec = TaskExecuter.getInstance();
		if (exec.compareNowTask(task)){
			// case: remove task is state countdown.
			exec.skip();
		} else {
			boolean removeFlag = false;
			// case: remove task is still in the waiting queue.
			for (TaskInfo t: list.getTaskList()){
				if (t.getType().equals(task.getType())){
					list.getTaskList().remove(t); // this operation should be executed by list Manager.
					removeFlag = true;
					break;
				}
			}
			if (!removeFlag){
				ods.put("_REMOVETASK", task);
			}
		}
		ods.update("_WAITINGLIST", list);
	}
}