# HG changeset patch # User sugi # Date 1386297771 -32400 # Node ID f1f0638861abc1c2e2c9a00a0b4c76f148d6eb5d # Parent 4b99234c88d431d35c057474da31b57b97e54731 ping responce receivable diff -r 4b99234c88d4 -r f1f0638861ab src/alice/codesegment/CodeSegment.java --- 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); diff -r 4b99234c88d4 -r f1f0638861ab src/alice/codesegment/InputDataSegment.java --- 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); } diff -r 4b99234c88d4 -r f1f0638861ab src/alice/test/codesegment/local/SingletonTestCodeSegment.java --- /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"); + } + +} diff -r 4b99234c88d4 -r f1f0638861ab src/alice/test/codesegment/local/StartCodeSegment.java --- 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"); } } diff -r 4b99234c88d4 -r f1f0638861ab src/alice/topology/manager/keeparive/CreateSchedule.java --- 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 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(); } } diff -r 4b99234c88d4 -r f1f0638861ab src/alice/topology/manager/keeparive/CreateTask.java --- /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 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; + } + + } + +} diff -r 4b99234c88d4 -r f1f0638861ab src/alice/topology/manager/keeparive/GetTask.java --- /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(); + } + +} diff -r 4b99234c88d4 -r f1f0638861ab src/alice/topology/manager/keeparive/KeepAlive.java --- /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()); + } + +} diff -r 4b99234c88d4 -r f1f0638861ab src/alice/topology/manager/keeparive/RespondPing.java --- /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()); + } + +} diff -r 4b99234c88d4 -r f1f0638861ab src/alice/topology/manager/keeparive/SendPing.java --- 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; diff -r 4b99234c88d4 -r f1f0638861ab src/alice/topology/manager/keeparive/StartKeepAlive.java --- /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(); + + } + +}