changeset 330:d35ff0f588e8

keep alive may work... but bug exist.
author sugi
date Mon, 31 Mar 2014 22:28:52 +0900
parents 35b4e24e3e02
children 8266d7cfba7e
files src/alice/topology/manager/keeparive/CheckExistTask.java src/alice/topology/manager/keeparive/ListManager.java src/alice/topology/manager/keeparive/ListManagerTest.java src/alice/topology/manager/keeparive/RemoveTask.java src/alice/topology/manager/keeparive/RespondPing.java src/alice/topology/manager/keeparive/TaskExecuter.java src/alice/topology/manager/keeparive/TaskInfo.java
diffstat 7 files changed, 60 insertions(+), 36 deletions(-) [+]
line wrap: on
line diff
--- a/src/alice/topology/manager/keeparive/CheckExistTask.java	Mon Mar 24 23:52:20 2014 +0900
+++ b/src/alice/topology/manager/keeparive/CheckExistTask.java	Mon Mar 31 22:28:52 2014 +0900
@@ -14,6 +14,7 @@
 	@Override
 	public void run() {
 		new CreateSchedule();
+		
 	}
 
 }
--- a/src/alice/topology/manager/keeparive/ListManager.java	Mon Mar 24 23:52:20 2014 +0900
+++ b/src/alice/topology/manager/keeparive/ListManager.java	Mon Mar 31 22:28:52 2014 +0900
@@ -13,9 +13,6 @@
 		TaskExecuter exec = TaskExecuter.getInstance();
 		TaskInfo nowTask = exec.getNowTask();
 		if (nowTask == null) { // active task is nothing
-			long remainingTime = exec.initRemainingTime();
-			TaskInfo task = list.getFirst();
-			task.setSleepTime(task.getSleepTime() + remainingTime);
 			add(newInfo);
 		} else {
 			long remainingTime = exec.getRemainingTime();
@@ -32,6 +29,7 @@
 				add(newInfo);
 			}
 		}
+		show();
 	}
 
 	private void add(TaskInfo newInfo){
@@ -52,8 +50,12 @@
 		}
 		list.add(cnt, newInfo);
 	}
-
-	public void showList(){
+	
+	public void deleteTask(TaskInfo task){	
+		// delete task
+	}
+	
+	public void show(){
 		if (TaskExecuter.getInstance().getNowTask()!=null){
 			System.out.print("NOW | ");
 			System.out.print(TaskExecuter.getInstance().getNowTask().getSleepTime());
--- a/src/alice/topology/manager/keeparive/ListManagerTest.java	Mon Mar 24 23:52:20 2014 +0900
+++ b/src/alice/topology/manager/keeparive/ListManagerTest.java	Mon Mar 31 22:28:52 2014 +0900
@@ -22,7 +22,7 @@
 			task.setInfo(name, "_TEST", i * 1000);
 			System.out.println(task.getSleepTime());
 			manager.addTask(task);
-			manager.showList();
+			manager.show();
 			i +=1;
 		}
 		TaskExecuter.getInstance().skip();
@@ -32,7 +32,7 @@
 			task.setInfo(name, "_TEST", i * 1000);
 			System.out.println(task.getSleepTime());
 			manager.addTask(task);
-			manager.showList();
+			manager.show();
 			i +=1;
 		}
 		
--- a/src/alice/topology/manager/keeparive/RemoveTask.java	Mon Mar 24 23:52:20 2014 +0900
+++ b/src/alice/topology/manager/keeparive/RemoveTask.java	Mon Mar 31 22:28:52 2014 +0900
@@ -15,20 +15,28 @@
 
 	@Override
 	public void run() {
+		System.out.println("cccc");
 		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.
+			System.out.println("delete task");
 			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);
+					System.out.println("delete task");
+					removeFlag = true;
 					break;
 				}
 			}
+			if (!removeFlag){
+				ods.put("_REMOVETASK", task);
+			}
 		}
 		ods.update("_WAITINGLIST", list);
 	}
--- a/src/alice/topology/manager/keeparive/RespondPing.java	Mon Mar 24 23:52:20 2014 +0900
+++ b/src/alice/topology/manager/keeparive/RespondPing.java	Mon Mar 31 22:28:52 2014 +0900
@@ -17,8 +17,8 @@
 	public void run() {
 		RespondData d = respond.asClass(RespondData.class);
 		System.out.print("ping from "+d.from);
-		System.out.println(" Recieved time "+d.time);
-		if (pingedTime - d.time > 60 * 1000){
+		System.out.println(" Recieved time "+(d.time - pingedTime));
+		if (d.time - pingedTime > 60 * 1000){
 			// need check, this connection is alive. may be close 
 			DataSegment.get(d.from).close();
 		} else {
@@ -29,15 +29,16 @@
 			task.setInfo(d.from, null, 0);
 			if (exec.compareNowTask(task)){
 				// case: remove task is state countdown.
-				exec.skip(); // countdown 
+				exec.skip(); // countdown
+				System.out.println("delete task");
 			} else {
 				// case: remove task is still in the waiting queue.
 				ods.put("_REMOVETASK",task);
 				new RemoveTask();
 			}
-			TaskInfo task2 = new TaskInfo(TaskType.PING);
-			task2.setInfo(d.from, "_FORM_"+d.from, 5 * 1000);
-			ods.put("_TASKINFO", task2);
+			//TaskInfo task2 = new TaskInfo(TaskType.PING);
+			//task2.setInfo(d.from, "_FORM_"+d.from, 5 * 1000);
+			//ods.put("_TASKINFO", task2);
 		}
 	}
 }
--- a/src/alice/topology/manager/keeparive/TaskExecuter.java	Mon Mar 24 23:52:20 2014 +0900
+++ b/src/alice/topology/manager/keeparive/TaskExecuter.java	Mon Mar 31 22:28:52 2014 +0900
@@ -25,7 +25,7 @@
 
 	@Override
 	public synchronized void run()  {
-		ListManager list = info.asClass(ListManager.class);	
+		ListManager list = info.asClass(ListManager.class);
 		if (list.getTaskList().size() == 0){
 			if (remainingTime !=0){
 				TaskInfo info = new TaskInfo(TaskType.SKIP);
@@ -53,28 +53,37 @@
 					e.printStackTrace();
 				}
 			}
-			setNowTask(null);
-			startTime = 0;
+			
 			
 			if (!skipFlag){
-				// ping or close
-				/*
-				if (nowTask.getType() == TaskType.PING) {
-					ods.ping(nowTask.getManagerKey(), nowTask.getReturnKey());
-					TaskInfo task = new TaskInfo(TaskType.CLOSE);
-					task.setInfo(nowTask.getManagerKey(), 60 * 1000);
-					ods.put("_TASKINFO", task);
-					new RespondPing(nowTask.getReturnKey());
-				} else {
-					// no response from the Remote DataSegment. So close this connection.
-					DataSegment.get(nowTask.getManagerKey()).close();
-				}
-				 */	
+				execTask();
 			}
+			setNowTask(null);
+			startTime = 0;
 		}
 		setKey();
 	}
 
+	private synchronized void execTask(){
+		// ping or close
+		System.out.println("aaaa");
+		if (nowTask.getType() == TaskType.PING) {
+			System.out.println("bbb");
+			ods.ping(nowTask.getManagerKey(), nowTask.getReturnKey());
+			TaskInfo task = new TaskInfo(TaskType.CLOSE);
+			task.setInfo(nowTask.getManagerKey(), 10 * 1000);
+			ods.put("_TASKINFO", task);
+			new RespondPing(nowTask.getReturnKey());
+		} else if (nowTask.getType() == TaskType.CLOSE) {
+			// no response from the Remote DataSegment. So close this connection.
+			//DataSegment.get(nowTask.getManagerKey()).close();
+			System.out.println("CLOSE");
+			
+			nowTask.show();
+			System.exit(0);
+		}
+	}
+	
 	public synchronized void skip() {
 		skipFlag = true;
 		if (startTime == 0){
@@ -82,8 +91,10 @@
 		} else {
 			remainingTime = nowTask.getSleepTime() - (System.currentTimeMillis() - startTime);
 		}
+		System.out.println(remainingTime);
 		nowTask = null;
 		notify();
+		System.out.println(nowTask);
 	}
 
 	public synchronized void ignore() {
@@ -93,7 +104,7 @@
 		notify();
 	}
 
-	public TaskInfo getNowTask() {
+	public synchronized TaskInfo getNowTask() {
 		return nowTask;
 	}
 
@@ -113,12 +124,6 @@
 		}
 	}
 
-	public long initRemainingTime() {
-		long time = remainingTime;
-		remainingTime = 0;
-		return time;
-	}
-
 	public boolean compareNowTask(TaskInfo task) {
 		if (nowTask != null){
 			if (nowTask.getType().equals(task.getType())
--- a/src/alice/topology/manager/keeparive/TaskInfo.java	Mon Mar 24 23:52:20 2014 +0900
+++ b/src/alice/topology/manager/keeparive/TaskInfo.java	Mon Mar 31 22:28:52 2014 +0900
@@ -46,4 +46,11 @@
 		task.setInfo(managerKey, returnKey, sleepTime);
 		return task;
 	}
+	
+	public void show(){
+		System.out.print(type);
+		System.out.print(" "+  this.sleepTime);
+		System.out.print(" "+ this.managerKey);
+		System.out.println(" "+  this.returnKey);
+	}
 }