comparison src/main/java/alice/topology/manager/keeparive/RespondPing.java @ 345:8f71c3e6f11d

Change directory structure Maven standard
author sugi
date Wed, 16 Apr 2014 18:26:07 +0900
parents
children 388e7d4b0624
comparison
equal deleted inserted replaced
344:9f97ec18f8c5 345:8f71c3e6f11d
1 package alice.topology.manager.keeparive;
2
3 import alice.codesegment.CodeSegment;
4 import alice.datasegment.CommandType;
5 import alice.datasegment.DataSegment;
6 import alice.datasegment.Receiver;
7
8 public class RespondPing extends CodeSegment{
9 private Receiver respond = ids.create(CommandType.TAKE);
10 private long pingedTime = System.currentTimeMillis();
11
12 public RespondPing(String key) {
13 respond.setKey(key);
14 }
15
16 @Override
17 public void run() {
18 RespondData d = respond.asClass(RespondData.class);
19 System.out.print("ping from "+d.from);
20 System.out.println(" Recieved time "+(d.time - pingedTime));
21 if (d.time - pingedTime > 60 * 1000){
22 // need check, this connection is alive. may be close
23 DataSegment.get(d.from).close();
24 } else {
25 // if nowTask close d.from's socket cancel.
26 // if not remove close task in the Queue.
27 TaskExecuter exec = TaskExecuter.getInstance();
28 TaskInfo task = new TaskInfo(TaskType.CLOSE);
29 task.setInfo(d.from, null, 0);
30 if (exec.compareNowTask(task)){
31 // case: remove task is state countdown.
32 exec.skip(); // countdown
33 } else {
34 // case: remove task is still in the waiting queue.
35 ods.put("_REMOVETASK",task);
36 new RemoveTask();
37 }
38 TaskInfo task2 = new TaskInfo(TaskType.PING);
39 task2.setInfo(d.from, "_FORM_"+d.from, 5 * 1000);
40 ods.put("_TASKINFO", task2);
41 }
42 }
43 }