# HG changeset patch # User sugi # Date 1384839333 -32400 # Node ID 366742c2b07dbb88851a61a866c8c4f7060b1624 # Parent 6e0a909b4b12268a9146431174a96906da2bf046 divide list from Scheduler diff -r 6e0a909b4b12 -r 366742c2b07d src/alice/topology/manager/keeparive/PingSchedList.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/alice/topology/manager/keeparive/PingSchedList.java Tue Nov 19 14:35:33 2013 +0900 @@ -0,0 +1,35 @@ +package alice.topology.manager.keeparive; + +import java.util.LinkedList; + +public class PingSchedList { + private LinkedList list = new LinkedList(); + + public LinkedList getTaskList(){ + return list; + } + + public synchronized void addTask(TaskInfo newInfo){ + if (list.isEmpty()) { + list.add(newInfo); + } else { + int cnt = 0; + for (TaskInfo info : list){ + if (info.getSleepTime() < newInfo.getSleepTime()){ + newInfo.setSleepTime(newInfo.getSleepTime() - info.getSleepTime()); + } else if (info.getSleepTime() == newInfo.getSleepTime()){ + newInfo.setSleepTime(newInfo.getSleepTime() - info.getSleepTime()); + cnt++; + break; + } else if (info.getSleepTime() > newInfo.getSleepTime()){ + info.setSleepTime(info.getSleepTime() - newInfo.getSleepTime()); + break; + } + cnt++; + } + list.add(cnt, newInfo); + } + } + + +} diff -r 6e0a909b4b12 -r 366742c2b07d src/alice/topology/manager/keeparive/PingScheduler.java --- a/src/alice/topology/manager/keeparive/PingScheduler.java Tue Nov 19 14:04:57 2013 +0900 +++ b/src/alice/topology/manager/keeparive/PingScheduler.java Tue Nov 19 14:35:33 2013 +0900 @@ -1,39 +1,27 @@ package alice.topology.manager.keeparive; import java.util.LinkedList; -import java.util.List; - import alice.codesegment.CodeSegment; public class PingScheduler extends CodeSegment{ - private LinkedList list = new LinkedList(); + private PingSchedList plist = new PingSchedList(); private long INTERVAL = 60 * 1000; - public boolean updateFlag = false; private boolean interruptFlag = false; private long time = 0; public TaskInfo nowTask; - private long totalTime = 0; private long postponeTime = 0; - public long getTotalTime(){ - return totalTime; - } - - public List getTaskList(){ - return list; - } - public synchronized void postpone(String name){ long elapsedTime = System.currentTimeMillis() - time; - totalTime += elapsedTime; postponeTime = nowTask.getSleepTime() - elapsedTime; + LinkedList list = plist.getTaskList(); if (name.equals(nowTask.getManagerKey())){ TaskInfo nextTask = list.get(0); nextTask.setSleepTime(postponeTime + nextTask.getSleepTime()); nowTask.setSleepTime(INTERVAL); - addTask(nowTask); + plist.addTask(nowTask); } else { int cnt = 0; @@ -47,7 +35,7 @@ } list.remove(info); info.setSleepTime(INTERVAL); - addTask(info); + plist.addTask(info); break; } cnt++; @@ -55,34 +43,11 @@ } interruptFlag = true; notify(); - } - - - public synchronized void addTask(TaskInfo newInfo){ - if (list.isEmpty()) { - list.add(newInfo); - } else { - int cnt = 0; - for (TaskInfo info : list){ - if (info.getSleepTime() < newInfo.getSleepTime()){ - newInfo.setSleepTime(newInfo.getSleepTime() - info.getSleepTime()); - } else if (info.getSleepTime() == newInfo.getSleepTime()){ - newInfo.setSleepTime(newInfo.getSleepTime() - info.getSleepTime()); - cnt++; - break; - } else if (info.getSleepTime() > newInfo.getSleepTime()){ - info.setSleepTime(info.getSleepTime() - newInfo.getSleepTime()); - break; - } - cnt++; - } - list.add(cnt, newInfo); - } - updateFlag = true; - } + } @Override public synchronized void run() { + LinkedList list = plist.getTaskList(); try { while(true){ nowTask = list.poll(); @@ -93,7 +58,7 @@ interruptFlag = false; } else { ods.put("_SENDPING", nowTask); - totalTime +=nowTask.getSleepTime(); + nowTask.getSleepTime(); } } } catch (InterruptedException e) {