# HG changeset patch # User sugi # Date 1396802279 -32400 # Node ID cf9072608fe4a37a8ed6aa06ab5b66dc0560ca10 # Parent 6b82dae5d53772c5aeb4723e5f6454789126d3d6 no need TYPE SKIP. diff -r 6b82dae5d537 -r cf9072608fe4 src/alice/topology/manager/keeparive/CreateSchedule.java --- a/src/alice/topology/manager/keeparive/CreateSchedule.java Sat Apr 05 18:10:16 2014 +0900 +++ b/src/alice/topology/manager/keeparive/CreateSchedule.java Mon Apr 07 01:37:59 2014 +0900 @@ -17,7 +17,6 @@ public void run() { ListManager manager = info1.asClass(ListManager.class); TaskInfo newTask = info2.asClass(TaskInfo.class); - System.out.println("addTask"); manager.addTask(newTask); ods.update("_WAITINGLIST", manager); new CheckExistTask(); diff -r 6b82dae5d537 -r cf9072608fe4 src/alice/topology/manager/keeparive/ListManager.java --- a/src/alice/topology/manager/keeparive/ListManager.java Sat Apr 05 18:10:16 2014 +0900 +++ b/src/alice/topology/manager/keeparive/ListManager.java Mon Apr 07 01:37:59 2014 +0900 @@ -51,8 +51,23 @@ list.add(cnt, newInfo); } - public void deleteTask(TaskInfo task){ - // delete task + public boolean deleteTask(TaskInfo task){ + boolean matchFlag = false; + int cnt = 0; + for (TaskInfo t: list){ + if (t.getType().equals(task.getType())){ + matchFlag = true; + if (cnt+1 < list.size() ){ // next task exists. + TaskInfo next = list.get(cnt+1); + next.setSleepTime(next.getSleepTime()+task.getSleepTime()); + } + list.remove(cnt); + break; + } else { + cnt++; + } + } + return matchFlag; } public void show(){ diff -r 6b82dae5d537 -r cf9072608fe4 src/alice/topology/manager/keeparive/RemoveTask.java --- a/src/alice/topology/manager/keeparive/RemoveTask.java Sat Apr 05 18:10:16 2014 +0900 +++ b/src/alice/topology/manager/keeparive/RemoveTask.java Mon Apr 07 01:37:59 2014 +0900 @@ -22,15 +22,8 @@ // 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; - } - } + boolean removeFlag = list.deleteTask(task); if (!removeFlag){ ods.put("_REMOVETASK", task); } diff -r 6b82dae5d537 -r cf9072608fe4 src/alice/topology/manager/keeparive/TaskExecuter.java --- a/src/alice/topology/manager/keeparive/TaskExecuter.java Sat Apr 05 18:10:16 2014 +0900 +++ b/src/alice/topology/manager/keeparive/TaskExecuter.java Mon Apr 07 01:37:59 2014 +0900 @@ -28,12 +28,7 @@ public synchronized void run() { ListManager list = info.asClass(ListManager.class); if (list.getTaskList().size() == 0){ - if (remainingTime !=0){ - TaskInfo info = new TaskInfo(TaskType.SKIP); - info.setSleepTime(remainingTime); - remainingTime = 0; - list.addTask(info); - } + remainingTime = 0; ods.update("_WAITINGLIST", list); } else { nowTask = list.getTaskList().poll(); @@ -67,6 +62,7 @@ new RespondPing(nowTask.getReturnKey()); } else if (nowTask.getType() == TaskType.CLOSE) { // no response from the Remote DataSegment. So close this connection. + System.out.println("SHOTDOWN"); DataSegment.get(nowTask.getManagerKey()).close(); } } diff -r 6b82dae5d537 -r cf9072608fe4 src/alice/topology/manager/keeparive/TaskType.java --- a/src/alice/topology/manager/keeparive/TaskType.java Sat Apr 05 18:10:16 2014 +0900 +++ b/src/alice/topology/manager/keeparive/TaskType.java Mon Apr 07 01:37:59 2014 +0900 @@ -3,5 +3,4 @@ public enum TaskType { PING, CLOSE, - SKIP, }