annotate src/alice/topology/manager/keeparive/RespondPing.java @ 326:c382d6fe1ec4

need reamainingTime add next task
author sugi
date Fri, 24 Jan 2014 02:18:09 +0900
parents 806cc010a5bd
children 35b4e24e3e02
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
314
f1f0638861ab ping responce receivable
sugi
parents:
diff changeset
1 package alice.topology.manager.keeparive;
f1f0638861ab ping responce receivable
sugi
parents:
diff changeset
2
f1f0638861ab ping responce receivable
sugi
parents:
diff changeset
3 import alice.codesegment.CodeSegment;
f1f0638861ab ping responce receivable
sugi
parents:
diff changeset
4 import alice.datasegment.CommandType;
323
one
parents: 320
diff changeset
5 import alice.datasegment.DataSegment;
314
f1f0638861ab ping responce receivable
sugi
parents:
diff changeset
6 import alice.datasegment.Receiver;
f1f0638861ab ping responce receivable
sugi
parents:
diff changeset
7
f1f0638861ab ping responce receivable
sugi
parents:
diff changeset
8 public class RespondPing extends CodeSegment{
f1f0638861ab ping responce receivable
sugi
parents:
diff changeset
9 private Receiver respond = ids.create(CommandType.TAKE);
323
one
parents: 320
diff changeset
10 private long pingedTime = System.currentTimeMillis();
314
f1f0638861ab ping responce receivable
sugi
parents:
diff changeset
11
f1f0638861ab ping responce receivable
sugi
parents:
diff changeset
12 public RespondPing(String key) {
f1f0638861ab ping responce receivable
sugi
parents:
diff changeset
13 respond.setKey(key);
f1f0638861ab ping responce receivable
sugi
parents:
diff changeset
14 }
f1f0638861ab ping responce receivable
sugi
parents:
diff changeset
15
f1f0638861ab ping responce receivable
sugi
parents:
diff changeset
16 @Override
f1f0638861ab ping responce receivable
sugi
parents:
diff changeset
17 public void run() {
316
9e84deb9b1e0 Respond Worked
sugi
parents: 315
diff changeset
18 RespondData d = respond.asClass(RespondData.class);
318
32d033a4b3c7 Refactor
sugi
parents: 316
diff changeset
19 System.out.print("ping from "+d.from);
32d033a4b3c7 Refactor
sugi
parents: 316
diff changeset
20 System.out.println(" Recieved time "+d.time);
323
one
parents: 320
diff changeset
21 if (pingedTime - d.time > 60 * 1000){
one
parents: 320
diff changeset
22 // need check, this connection is alive. may be close
one
parents: 320
diff changeset
23 DataSegment.get(d.from).close();
one
parents: 320
diff changeset
24 } else {
326
c382d6fe1ec4 need reamainingTime add next task
sugi
parents: 324
diff changeset
25 // if nowTask close d.from's socket cancel.
323
one
parents: 320
diff changeset
26 // if not remove close task in the Queue.
one
parents: 320
diff changeset
27 TaskExecuter exec = TaskExecuter.getInstance();
one
parents: 320
diff changeset
28 TaskInfo task = new TaskInfo(TaskType.CLOSE);
one
parents: 320
diff changeset
29 task.setInfo(d.from, null, 0);
one
parents: 320
diff changeset
30 if (exec.compareNowTask(task)){
one
parents: 320
diff changeset
31 // case: remove task is state countdown.
one
parents: 320
diff changeset
32 exec.skip();
one
parents: 320
diff changeset
33 } else {
one
parents: 320
diff changeset
34 // case: remove task is still in the waiting queue.
one
parents: 320
diff changeset
35 ods.put("_REMOVETASK",task);
one
parents: 320
diff changeset
36 new RemoveTask();
one
parents: 320
diff changeset
37 }
one
parents: 320
diff changeset
38 TaskInfo task2 = new TaskInfo(TaskType.PING);
one
parents: 320
diff changeset
39 task2.setInfo(d.from, "_FORM_"+d.from, 5 * 1000);
one
parents: 320
diff changeset
40 ods.put("_TASKINFO", task2);
one
parents: 320
diff changeset
41 }
314
f1f0638861ab ping responce receivable
sugi
parents:
diff changeset
42 }
f1f0638861ab ping responce receivable
sugi
parents:
diff changeset
43 }