changeset 314:f1f0638861ab

ping responce receivable
author sugi
date Fri, 06 Dec 2013 11:42:51 +0900
parents 4b99234c88d4
children f9ec5bead150
files src/alice/codesegment/CodeSegment.java src/alice/codesegment/InputDataSegment.java src/alice/test/codesegment/local/SingletonTestCodeSegment.java src/alice/test/codesegment/local/StartCodeSegment.java src/alice/topology/manager/keeparive/CreateSchedule.java src/alice/topology/manager/keeparive/CreateTask.java src/alice/topology/manager/keeparive/GetTask.java src/alice/topology/manager/keeparive/KeepAlive.java src/alice/topology/manager/keeparive/RespondPing.java src/alice/topology/manager/keeparive/SendPing.java src/alice/topology/manager/keeparive/StartKeepAlive.java
diffstat 11 files changed, 164 insertions(+), 15 deletions(-) [+]
line wrap: on
line diff
--- a/src/alice/codesegment/CodeSegment.java	Tue Dec 03 21:34:42 2013 +0900
+++ b/src/alice/codesegment/CodeSegment.java	Fri Dec 06 11:42:51 2013 +0900
@@ -16,7 +16,7 @@
 	}
 	
 	public void recycle(){
-		ids.initCounter();
+		ids.init();
 		ids.setCounter(list.size());
 		for (Receiver receiver : list) {
 			ids.recommand(receiver);
--- a/src/alice/codesegment/InputDataSegment.java	Tue Dec 03 21:34:42 2013 +0900
+++ b/src/alice/codesegment/InputDataSegment.java	Fri Dec 06 11:42:51 2013 +0900
@@ -24,7 +24,7 @@
 		this.cs = cs;
 	}
 	
-	public void initCounter(){
+	public void init(){
 		count = new AtomicInteger(1);
 		keyCount = new AtomicInteger(0);
 	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/alice/test/codesegment/local/SingletonTestCodeSegment.java	Fri Dec 06 11:42:51 2013 +0900
@@ -0,0 +1,34 @@
+package alice.test.codesegment.local;
+
+import org.msgpack.type.Value;
+
+import alice.codesegment.CodeSegment;
+import alice.datasegment.CommandType;
+import alice.datasegment.Receiver;
+
+public class SingletonTestCodeSegment extends CodeSegment {
+	Receiver arg1 = ids.create(CommandType.PEEK);
+	private static SingletonTestCodeSegment instance = new SingletonTestCodeSegment();
+	private SingletonTestCodeSegment(){}
+	
+	public static SingletonTestCodeSegment getInstance(){
+		return instance;
+	}
+	
+	@Override
+	public void run() {
+		System.out.println("type = " + arg1.type);
+		System.out.println("index = " + arg1.index);
+		System.out.println("data = " + arg1.getVal());
+		System.out.println(((Value)arg1.getVal()).getType());
+		
+		if (arg1.index == 10) {
+			System.exit(0);
+			return;
+		}
+		
+		this.recycle();
+		ods.update("local", "key2", "String data");
+	}
+
+}
--- a/src/alice/test/codesegment/local/StartCodeSegment.java	Tue Dec 03 21:34:42 2013 +0900
+++ b/src/alice/test/codesegment/local/StartCodeSegment.java	Fri Dec 06 11:42:51 2013 +0900
@@ -8,13 +8,19 @@
 	public void run() {
 		System.out.println("run StartCodeSegment");
 		
-		TestCodeSegment cs = new TestCodeSegment();
-		cs.arg1.setKey("key1"); // unbound datasegment key1 is created and connect to cs.
+		//TestCodeSegment cs = new TestCodeSegment();
+		//cs.arg1.setKey("key1"); // unbound datasegment key1 is created and connect to cs.
 								// cs is waiting for local.key1
 		System.out.println("create TestCodeSegment");
 		
 		ods.update("local", "key1", "String data"); // bind string data to datasegment local.key1
 													// this startup TestCodeSegment.
+		
+		SingletonTestCodeSegment cs1 = SingletonTestCodeSegment.getInstance();
+		cs1.arg1.setKey("key2");
+		
+		// DataSegment.get("local").update
+		ods.update("local", "key2", "String data");
  	}
 
 }
--- a/src/alice/topology/manager/keeparive/CreateSchedule.java	Tue Dec 03 21:34:42 2013 +0900
+++ b/src/alice/topology/manager/keeparive/CreateSchedule.java	Fri Dec 06 11:42:51 2013 +0900
@@ -20,10 +20,9 @@
 		ListManager manager = info1.asClass(ListManager.class);
 		TaskInfo newTask = info2.asClass(TaskInfo.class);
 		SendPing ps = SendPing.getInstance();
-		TaskInfo nowTask = ps.getNowTask();
 		LinkedList<TaskInfo> list = manager.getTaskList();
-		if (nowTask.getManagerKey().equals(newTask.getManagerKey())){
-			long postponeTime = nowTask.getSleepTime() - (System.currentTimeMillis() - ps.getTime());
+		if (ps.getNowTask()!=null&&ps.getNowTask().getManagerKey().equals(newTask.getManagerKey())){
+			long postponeTime = ps.getNowTask().getSleepTime() - (System.currentTimeMillis() - ps.getTime());
 			TaskInfo nextTask = list.getFirst();
 			nextTask.setSleepTime(postponeTime + nextTask.getSleepTime());
 			manager.addTask(newTask);
@@ -36,7 +35,7 @@
 			}
 			manager.addTask(newTask);
 		}
-		ods.update("_SCHEDLIST", manager);
+		ods.update("_WAITINGLIST", manager);
 		new CheckExistTask();
 	}
 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/alice/topology/manager/keeparive/CreateTask.java	Fri Dec 06 11:42:51 2013 +0900
@@ -0,0 +1,33 @@
+package alice.topology.manager.keeparive;
+
+import java.util.List;
+
+import alice.codesegment.CodeSegment;
+import alice.datasegment.CommandType;
+import alice.datasegment.Receiver;
+
+public class CreateTask extends CodeSegment{
+	private Receiver info = ids.create(CommandType.PEEK);
+	
+	public CreateTask(){
+		info.setKey("_CLIST");
+	}
+	
+	@Override
+	public void run() {
+		ods.put("_WAITINGLIST", new ListManager());
+		@SuppressWarnings("unchecked")
+		List<String> list = info.asClass(List.class);
+		
+		new CheckExistTask();
+		new GetTask();
+		for (String manager : list){
+			int i = 5;
+			TaskInfo task = new TaskInfo(manager, "_RESPONCE", i * 1000);
+			ods.put("_TASKINFO", task);
+			i +=5;
+		}
+		
+	}
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/alice/topology/manager/keeparive/GetTask.java	Fri Dec 06 11:42:51 2013 +0900
@@ -0,0 +1,24 @@
+package alice.topology.manager.keeparive;
+
+import alice.codesegment.CodeSegment;
+import alice.datasegment.CommandType;
+import alice.datasegment.Receiver;
+
+public class GetTask extends CodeSegment{
+	private Receiver info = ids.create(CommandType.PEEK);
+	
+	public GetTask(){
+		info.setKey("_WAITINGLIST");
+	}
+	
+	@Override
+	public void run() {
+		ListManager list = info.asClass(ListManager.class);
+		if (list.getTaskList().size() == 0){
+			new GetTask();
+			return;
+		}
+		 SendPing.getInstance().setKey();
+	}
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/alice/topology/manager/keeparive/KeepAlive.java	Fri Dec 06 11:42:51 2013 +0900
@@ -0,0 +1,12 @@
+package alice.topology.manager.keeparive;
+
+import alice.topology.node.TopologyNode;
+import alice.topology.node.TopologyNodeConfig;
+
+public class KeepAlive {
+	public static void main(String[] args) {
+		TopologyNodeConfig conf = new TopologyNodeConfig(args);
+		new TopologyNode(conf, new StartKeepAlive());
+	}
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/alice/topology/manager/keeparive/RespondPing.java	Fri Dec 06 11:42:51 2013 +0900
@@ -0,0 +1,19 @@
+package alice.topology.manager.keeparive;
+
+import alice.codesegment.CodeSegment;
+import alice.datasegment.CommandType;
+import alice.datasegment.Receiver;
+
+public class RespondPing extends CodeSegment{
+	private Receiver respond = ids.create(CommandType.TAKE);
+	
+	public RespondPing(String key) {
+		respond.setKey(key);
+	}
+
+	@Override
+	public void run() {
+		System.out.println(respond.getVal());
+	}
+
+}
--- a/src/alice/topology/manager/keeparive/SendPing.java	Tue Dec 03 21:34:42 2013 +0900
+++ b/src/alice/topology/manager/keeparive/SendPing.java	Fri Dec 06 11:42:51 2013 +0900
@@ -9,23 +9,31 @@
 	private TaskInfo nowTask;
 	private boolean interruptFlag = false;
 	private long time = 0;
+	private static SendPing instance = new SendPing();
 
-	static class SingletonHolder {
-		private static SendPing Instance = new SendPing();		
-	}
-	public static SendPing getInstance(){
-		return SingletonHolder.Instance;
-	}
+	private SendPing(){}
+	public static SendPing getInstance() {
+	    return instance;
+	 }
+	
 	public void setKey(){
+		ids.init();
 		info.setKey("_WAITINGLIST");
 	}
 	
 	@Override
 	public synchronized void run() {
 		ListManager list = info.asClass(ListManager.class);
+		if (list.getTaskList().size() == 0){
+			ods.update("_WAITINGLIST", list);
+			new GetTask();
+			return;
+		}
 		try {
 			nowTask = list.getTaskList().pollFirst();
 			ods.update("_WAITINGLIST", list);
+			System.out.print("managerkey is "+ nowTask.getManagerKey());
+			System.out.println(" returnkey is "+ nowTask.getReturnKey());
 			time = System.currentTimeMillis();
 			if (nowTask.getSleepTime()!=0)
 				this.wait(nowTask.getSleepTime());
@@ -33,10 +41,11 @@
 				interruptFlag = false;
 			} else {
 				ods.ping(nowTask.getManagerKey(), nowTask.getReturnKey());
+				new RespondPing(nowTask.getReturnKey());
 			}
 		} catch (InterruptedException e) {		
 		}
-		SendPing.getInstance().setKey();
+		new GetTask();
 	}
 	public synchronized void interrupt(){
 		interruptFlag = true;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/alice/topology/manager/keeparive/StartKeepAlive.java	Fri Dec 06 11:42:51 2013 +0900
@@ -0,0 +1,13 @@
+package alice.topology.manager.keeparive;
+
+import alice.codesegment.CodeSegment;
+
+public class StartKeepAlive extends CodeSegment {
+
+	@Override
+	public void run() {
+		new CreateTask();
+
+	}
+
+}