# HG changeset patch # User sugi # Date 1384154755 -32400 # Node ID e580cd6b225aa09d159b4cad6e6941ddbe64b6bb # Parent 5598fa745a510cf0b6853d645b59e78a2d3a197a bug fixed (about totalTime) diff -r 5598fa745a51 -r e580cd6b225a src/alice/topology/manager/keeparive/PingScheduler.java --- a/src/alice/topology/manager/keeparive/PingScheduler.java Tue Nov 05 20:19:30 2013 +0900 +++ b/src/alice/topology/manager/keeparive/PingScheduler.java Mon Nov 11 16:25:55 2013 +0900 @@ -13,6 +13,7 @@ public boolean updateFlag = false; private boolean postponeFlag = false; + private boolean nowTaskFlag = false; public long time = 0; public int taskNum = 0; @@ -32,7 +33,7 @@ if (name.equals(nowTask.getName())){ TaskInfo nextTask = list.get(0); nextTask.setTime(postponeTime + nextTask.getTime()); - + nowTaskFlag = true; } else { for (int cnt = 0 ;cnt < list.size(); cnt++){ TaskInfo task = list.get(cnt); @@ -44,11 +45,11 @@ list.remove(cnt); task.setTime(INTERVAL); addTask(task); - postponeFlag = true; break; } } } + postponeFlag = true; notify(); } @@ -64,24 +65,24 @@ if (list.isEmpty()) { list.add(newInfo); } else { - int cnt = 0; - for (TaskInfo info : list){ + for (int cnt = 0; cnt < list.size(); cnt++){ + TaskInfo info = list.get(cnt); if (info.getTime() < newInfo.getTime()){ newInfo.setTime(newInfo.getTime() - info.getTime()); if (cnt+1 == list.size()){ + list.add(newInfo); break; } } else if (info.getTime() == newInfo.getTime()){ newInfo.setTime(newInfo.getTime() - info.getTime()); - cnt++; + list.add(cnt+1, newInfo); break; } else if (info.getTime() > newInfo.getTime()){ info.setTime(info.getTime() - newInfo.getTime()); + list.add(cnt, newInfo); break; } - cnt++; } - list.add(cnt, newInfo); } updateFlag = true; } @@ -100,8 +101,14 @@ if (postponeFlag){ long remainingTime = nowTask.getTime() - (System.currentTimeMillis() - time); totalTime += (System.currentTimeMillis() - time); - nowTask.setTime(remainingTime); - list.add(0, nowTask); + if (nowTaskFlag){ + nowTask.setTime(INTERVAL); + addTask(nowTask); + } else { + nowTask.setTime(remainingTime); + list.add(0, nowTask); + updateFlag = true; + } postponeFlag = false; } else { totalTime +=nowTask.getTime(); diff -r 5598fa745a51 -r e580cd6b225a src/alice/topology/manager/keeparive/SchedulerViewer.java --- a/src/alice/topology/manager/keeparive/SchedulerViewer.java Tue Nov 05 20:19:30 2013 +0900 +++ b/src/alice/topology/manager/keeparive/SchedulerViewer.java Mon Nov 11 16:25:55 2013 +0900 @@ -80,6 +80,7 @@ if(!dataSeries.getData().isEmpty()) dataSeries.getData().clear(); count = (int) (ps.getTotalTime()/1000); + System.out.println("totalTime "+count+" s"); dataSeries.getData().add(new XYChart.Data(count, ps.nowTask.getTaskNum())); count +=ps.nowTask.getTime()/1000; dataSeries.getData().add(new XYChart.Data(count, ps.nowTask.getTaskNum()));