changeset 309:797267843126

Refactor
author sugi
date Tue, 26 Nov 2013 15:33:29 +0900
parents a8255a831ade
children f1cd920ea913
files .settings/org.eclipse.core.resources.prefs src/alice/codesegment/OutputDataSegment.java src/alice/test/codesegment/api/PingSchedulerTest.java src/alice/topology/manager/keeparive/PingSchedList.java src/alice/topology/manager/keeparive/PingScheduler.java src/alice/topology/manager/keeparive/SendPing.java src/alice/topology/manager/keeparive/WaitingList.java
diffstat 7 files changed, 78 insertions(+), 101 deletions(-) [+]
line wrap: on
line diff
--- a/.settings/org.eclipse.core.resources.prefs	Tue Nov 19 17:39:44 2013 +0900
+++ b/.settings/org.eclipse.core.resources.prefs	Tue Nov 26 15:33:29 2013 +0900
@@ -4,3 +4,4 @@
 encoding//src/alice/test/codesegment/local/wordcount/WordCount.java=UTF-8
 encoding//src/alice/topology/manager/IncomingHosts.java=UTF-8
 encoding//src/alice/topology/manager/createABSIPList.java=UTF-8
+encoding//src/alice/topology/manager/keeparive/PingScheduler.java=UTF-8
--- a/src/alice/codesegment/OutputDataSegment.java	Tue Nov 19 17:39:44 2013 +0900
+++ b/src/alice/codesegment/OutputDataSegment.java	Tue Nov 26 15:33:29 2013 +0900
@@ -92,7 +92,7 @@
 	 * @param managerKey
 	 * @param key
 	 */
-	public void ping(String managerKey ,String returnKey) {
+	public void ping(String managerKey, String returnKey) {
 		DataSegment.get(managerKey).ping(returnKey);
 	}
 
--- a/src/alice/test/codesegment/api/PingSchedulerTest.java	Tue Nov 19 17:39:44 2013 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,31 +0,0 @@
-package alice.test.codesegment.api;
-
-import alice.topology.manager.keeparive.PingScheduler;
-import alice.topology.manager.keeparive.TaskInfo;
-
-public class PingSchedulerTest {
-	public static void main(String[] args){
-		PingScheduler sched = new PingScheduler();
-		int[] num = { 1 * 1000,
-				      2 * 1000,
-				      6 * 1000,
-				      4 * 1000,
-				      3 * 1000
-				     }; 
-		
-		for (int i = 0; i < num.length; i++){
-			String name = "task"+i;
-			sched.plist.addTask(
-					new TaskInfo(name, num[i])
-					);
-		}
-		
-		for (TaskInfo info : sched.plist.getTaskList()){
-			System.out.println(info.getSleepTime());
-		}
-		
-		sched.execute();
-		//System.exit(0);
-	}
-
-}
--- a/src/alice/topology/manager/keeparive/PingSchedList.java	Tue Nov 19 17:39:44 2013 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,39 +0,0 @@
-package alice.topology.manager.keeparive;
-
-import java.util.LinkedList;
-
-public class PingSchedList {
-	/* TODO
-	 * 	This LinkedList may be called some threads.
-	 *  So need lock.
-	 */
-	private LinkedList<TaskInfo> list = new LinkedList<TaskInfo>();
-	
-	public LinkedList<TaskInfo> getTaskList(){
-		return list;
-	}
-		
-	public 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);
-		}
-	}
-	
-	
-}
--- a/src/alice/topology/manager/keeparive/PingScheduler.java	Tue Nov 19 17:39:44 2013 +0900
+++ b/src/alice/topology/manager/keeparive/PingScheduler.java	Tue Nov 26 15:33:29 2013 +0900
@@ -1,18 +1,47 @@
 package alice.topology.manager.keeparive;
 
-import java.util.LinkedList;
 import alice.codesegment.CodeSegment;
+import alice.datasegment.CommandType;
+import alice.datasegment.Receiver;
 
 public class PingScheduler extends CodeSegment{
-	public PingSchedList plist = new PingSchedList(); 
+	static class SingletonHolder {
+		private static PingScheduler Instance = new PingScheduler();		
+	}
+	public static PingScheduler getInstance(){
+		return SingletonHolder.Instance;
+	}
+	private Receiver info = ids.create(CommandType.TAKE);
+
+	public void setKey(){
+		info.setKey("_WAITINGLIST");
+	}
+	
 	private TaskInfo nowTask;
-
 	private boolean interruptFlag = false;
 
-	private long INTERVAL = 60 * 1000;
 	private long time = 0;
 	private long postponeTime = 0;
-
+	@Override
+	public synchronized void run() {
+		WaitingList list = info.asClass(WaitingList.class);
+		try {
+			nowTask = list.getTaskList().pollFirst();
+			ods.update("_WAITINGLIST", list);
+			time = System.currentTimeMillis();
+			if (nowTask.getSleepTime()!=0)
+				this.wait(nowTask.getSleepTime());
+			if (interruptFlag){				
+				interruptFlag = false;
+			} else {
+				ods.ping(nowTask.getManagerKey(), nowTask.getReturnKey());
+			}
+		} catch (InterruptedException e) {		
+		}
+		PingScheduler.getInstance().setKey();
+	}
+	/*
+	 * 	private long INTERVAL = 60 * 1000;
 	public synchronized void postpone(String name){
 		long elapsedTime = System.currentTimeMillis() - time;
 		postponeTime = nowTask.getSleepTime() - elapsedTime;
@@ -43,27 +72,8 @@
 		}
 		interruptFlag = true;
 		notify();
-	}	
+	}
+	 */
 
-	@Override
-	public synchronized void run() {
-		LinkedList<TaskInfo> list = plist.getTaskList();
-		try {
-			while(true){
-				nowTask = list.poll();
-				System.out.print("TaskName "+nowTask.getManagerKey());
-				System.out.println(" sleepTime "+nowTask.getSleepTime());
-				time = System.currentTimeMillis();
-				if (nowTask.getSleepTime()!=0)
-					this.wait(nowTask.getSleepTime());
-				if (interruptFlag){				
-					interruptFlag = false;				
-				} else {
-					ods.put("_SENDPING", nowTask.getManagerKey());
-				}
-			}
-		} catch (InterruptedException e) {
-		}
-	}
 }
 
--- a/src/alice/topology/manager/keeparive/SendPing.java	Tue Nov 19 17:39:44 2013 +0900
+++ b/src/alice/topology/manager/keeparive/SendPing.java	Tue Nov 26 15:33:29 2013 +0900
@@ -12,9 +12,8 @@
 	}
 
 	@Override
-	public void run(){
-		String managerKey = taskInfo.asString();
-		ods.ping(managerKey , "UUID");
-		//new RespondPing();
+	public synchronized void run(){
+	
+		
 	}
 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/alice/topology/manager/keeparive/WaitingList.java	Tue Nov 26 15:33:29 2013 +0900
@@ -0,0 +1,37 @@
+package alice.topology.manager.keeparive;
+
+import java.util.LinkedList;
+
+public class WaitingList {
+	private LinkedList<TaskInfo> list = new LinkedList<TaskInfo>();
+	
+	public LinkedList<TaskInfo> getTaskList(){
+		return list;
+	}
+		
+	public 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);
+			
+		}
+	}
+	
+	
+}