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 JaceServer extends UnicastRemoteObject implements JaceInterface {
Register.Instance().setSpawnerStub(spawnerStub);
}
+// public JaceSpawnerInterface transformIntoSpawner(String[] params,
+// String appliName, Register reg, int nbTasks,
+// JaceSuperNodeInterface snodeStub, int rank, int heartTime, int tag,
+// int nbdc, int nbsdc, int nbDaemonPerSpawner, int nbDaemonPerThread)
+// throws RemoteException {
+// System.out.println("Beginning the transformation ...");
+// new JaceSpawner(params, appliName, reg, nbTasks,
+// snodeStub, rank, heartTime, tag, nbdc, nbsdc,
+// nbDaemonPerSpawner, nbDaemonPerThread);
+// HeartBeatThread.Instance().kill();
+// return Register.Instance().getSpawnerStub();
+// }
+
+
public JaceSpawnerInterface transformIntoSpawner(String[] params,
String appliName, Register reg, int nbTasks,
JaceSuperNodeInterface snodeStub, int rank, int heartTime, int tag,
- int nbdc, int nbsdc, int nbDaemonPerSpawner, int nbDaemonPerThread)
+ int nbdc, int nbsdc, int nbDaemonPerSpawner, int nbDaemonPerThread,
+ String idAlgo)
throws RemoteException {
System.out.println("Beginning the transformation ...");
new JaceSpawner(params, appliName, reg, nbTasks,
snodeStub, rank, heartTime, tag, nbdc, nbsdc,
- nbDaemonPerSpawner, nbDaemonPerThread);
+ nbDaemonPerSpawner, nbDaemonPerThread, idAlgo);
HeartBeatThread.Instance().kill();
return Register.Instance().getSpawnerStub();
}
return 0;
}
- public void updateRegister(Node oldNode, Node node) throws RemoteException {
+ public int updateRegister( Node oldNode, Node node, int rank ) throws RemoteException {
// if(tag==1)
// HeartBeatThread.Instance().setServer((Object)node.getStub());
Calendar cal = new GregorianCalendar();
System.out.println("at time=" + cal.get(Calendar.MINUTE) + ":"
+ cal.get(Calendar.SECOND));
- System.out.println("Modify REGISTER");
+ System.out.println("Modify REGISTER");
try {
- // System.out.println("blablablablabalablablabalbalab");
- System.out.println("oldName=" + oldNode.getName());
- boolean b = Register.Instance().removeNodeOfName(oldNode.getName());
- if (b)
- System.out.println("removed old Node!!!!!");
- else
- System.out.println("didn't find old Node!!!!");
-
- Register.Instance().addNode(node);
- Register.Instance().viewAll();
+ boolean b = false ;
+ if( oldNode != null )
+ {
+ System.out.println("Old node name=" + oldNode.getName());
+ b = Register.Instance().removeNodeOfName(oldNode.getName());
+ }
+ if( b )
+ {
+ System.out.println("Old node removed !");
+ } else {
+ System.out.println("Did not find the old Node !");
+ }
+
+ if( node != null )
+ {
+ Register.Instance().addNode(node);
+ } else {
+ System.err.println( "The new node is NULL !" ) ;
+ return 1 ;
+ }
+// Register.Instance().viewAll();
TaskId myTaskId = null;
+// myTaskId = Register.Instance().getListeOfTasks()
+// .getTaskIdOfHostStub(oldNode.getStub());
myTaskId = Register.Instance().getListeOfTasks()
- .getTaskIdOfHostStub(oldNode.getStub());
+ .getTaskIdOfRank( rank ) ;
myTaskId.setHostIP(node.getIP());
myTaskId.setHostName(node.getName());
// Register.Instance().setVersion(version);
myTaskId.setHostStub(node.getStub());
+
+ return 0 ;
} catch (Exception e) {
System.err.println("Error in updateregister :" + e);
+ return 1 ;
// e.printStackTrace();
}
}
- public Vector<?> getIterationOfBackup(int remoteRank, int tag)
+ public ArrayList<Integer> getIterationOfBackup(int remoteRank, int tag)
throws RemoteException {
Backup b = BackupsManager.Instance().getBackupTaskOfRank(remoteRank,
tag);
- Vector<?> result = b.getIterationStep();
+ ArrayList<Integer> result = b.getIterationStep();
return result;
}
}
public void savOrFinOrRest(int tag, int step, boolean verd,
- Vector<?> recievedValue) throws RemoteException {
+ ArrayList<Object> recievedValue) throws RemoteException {
JaceSession.Instance().getTaskObject().savOrFinOrRest(tag, step, verd,
recievedValue);
}
}
public synchronized void response(int neighId, int tag, int response,
- Vector<?> recievedValue) throws RemoteException {
+ ArrayList<Object> recievedValue) throws RemoteException {
JaceSession.Instance().getTaskObject().response(neighId, tag, response,
recievedValue);
}
}
public void run() {
- BackupsManager.Instance().initialize(req);
+ BackupsManager.Instance().initialize( req ) ;
}
}
class ReinitDaemon extends Thread {
- public ReinitDaemon() {
- }
+ public ReinitDaemon() {}
public void run() {
- JaceDaemon.Instance().reinitDaemon();
+ JaceDaemon.Instance().reinitDaemon() ;
}
}
+
+ @Override
+ public void suicide2( String mes ) throws RemoteException
+ {
+ System.out.println( "Killed because: " + mes ) ;
+
+ try{
+ UnicastRemoteObject.unexportObject( this, true ) ;
+ }
+ catch( Exception e ) {
+ System.err.println( "Unable to unexport myself: " + e ) ;
+ }
+
+ System.exit( 0 ) ;
+ }
}