import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
+import java.util.ArrayList;
import java.util.Calendar;
import java.util.GregorianCalendar;
-import java.util.Vector;
public class JaceSpawnerServer extends UnicastRemoteObject implements
super();
}
- @SuppressWarnings("unchecked")
- public void startProcess(Vector spawnersList) throws RemoteException {
+ public void startProcess(ArrayList<Object> spawnersList) throws RemoteException {
JaceSpawner.Instance().startProcess(spawnersList);
-
}
public Register getRegister(int rank) throws RemoteException {
public boolean getFinished() throws RemoteException {
return finished;
}
+
+ private class Signaler implements Runnable
+ {
+ JaceInterface host ;
+ int rankOfDead ;
+ Signaler( JaceInterface _host, int _rankOfDead )
+ {
+ host = _host ;
+ rankOfDead = _rankOfDead ;
+ }
+
+ @Override
+ public void run()
+ {
+ JaceSpawner.Instance().signalDeadNode( host, rankOfDead ) ;
+ }
+
+ }
- public void signalDeadNode(JaceInterface host, int rankOfDead)
+ public void signalDeadNode(JaceInterface host, int rankOfDead )
throws RemoteException {
- System.out.println("SignalDeadNode of rank " + rankOfDead);
- JaceSpawner.Instance().signalDeadNode(host, rankOfDead);
+ System.out.println( "SignalDeadNode of rank " + rankOfDead ) ;
+
+ new Thread( new Signaler( host, rankOfDead ) ).start() ;
+// JaceSpawner.Instance().signalDeadNode( host, rankOfDead ) ;
}
// heartBeat that detects if a Spawner is dead or alive
else
System.out.println("Node " + oldNode.getName() + " of rank " + rank
+ " hasn't been removed");
- Register.Instance().addNode(node);
+
+ if( node != null )
+ {
+ Register.Instance().addNode(node);
- TaskId myTaskId = Register.Instance().getListeOfTasks()
+ TaskId myTaskId = Register.Instance().getListeOfTasks()
.getTaskIdOfHostStub(oldNode.getStub());
- myTaskId.setHostIP(node.getIP());
+ myTaskId.setHostIP(node.getIP());
- myTaskId.setHostName(node.getName());
- myTaskId.setHostStub(node.getStub());
- // Register.Instance().setVersion(Register.Instance().getVersion()+1);
- RunningApplication.Instance().incrementNumberOfDisconnections();
- System.out.println("Replacing node: " + oldNode.getName() + " with: "
+ myTaskId.setHostName(node.getName());
+ myTaskId.setHostStub(node.getStub());
+ // Register.Instance().setVersion(Register.Instance().getVersion()+1);
+ RunningApplication.Instance().incrementNumberOfDisconnections();
+ System.out.println("Replacing node: " + oldNode.getName() + " with: "
+ node.getName());
- // Register.Instance().getListeOfTasks().viewAll();
+ // Register.Instance().getListeOfTasks().viewAll();
+ } else {
+ System.err.println( "ReplaceDaemon: The new node is null!" ) ;
+ }
}
+// @Override
+// public void setIdAlgo( String _s ) throws RemoteException
+// {
+// JaceSpawner.Instance().setIdAlgo( _s ) ;
+// }
}