3 public class HeartBeatThread extends Thread {
6 public static HeartBeatThread Instance;
8 private Object server = null;
11 private JaceSuperNodeInterface superNodeStub = null;
12 // private JaceInterface stub = null;
13 private boolean running = true;
17 private HeartBeatThread() {
20 public static HeartBeatThread Instance() {
21 if (Instance == null) {
22 Instance = new HeartBeatThread();
27 public void setHeartTime(int timeBeat) {
31 public int getHeartTime() {
35 public void setServer(Object serverEntity) {
36 server = serverEntity;
38 // JaceBuffer.Instance().purge();
39 // MsgQueue.Instance().purge();
44 System.out.println("Killing HeartBeatThread ...");
56 // each "time" milisecondes, get the register if it has changed
58 // time = System.currentTimeMillis();
59 if (server instanceof JaceSuperNodeInterface) {
61 superNodeStub = (JaceSuperNodeInterface) server;
62 // begin = System.currentTimeMillis();
63 superNodeStub.beating(LocalHost.Instance().getStub());
67 // stub = (JaceInterface) server;
69 // timeGiven = stub.beating(LocalHost.Instance().getStub());
74 } catch (Exception e) {
76 if (server instanceof JaceSuperNodeInterface) {
77 System.out.println("The SuperNode is Dead : " + e);
78 LocalHost.Instance().getStub().reconnectSuperNode();
80 // System.out.println("The spawner is Dead : " + e);
81 // LocalHost.Instance().getStub().reconnectSuperNode();
83 .println("The next node maybe dead!!!! count="
89 TaskId id = Register.Instance()
90 .getListeOfTasks().getTaskIdOfHostStub(
91 LocalHost.Instance().getStub());
92 myRank = id.getRank();
93 Register newReg = Register.Instance()
94 .getSpawnerStub().getRegister(myRank);
96 Register.Instance().replaceBy(newReg);
97 TaskId neighbor = Register
106 server = (Object) neighbor.getHostStub();
110 .println("The server returned a null register !");
111 } catch (Exception e2) {
113 .println("Unable to contact the Spawner :"
119 } catch (Exception ex) {
120 System.err.println("Cannot reconnect to the SuperNode "